53
第第第第第第第第第 第第第第第第第第第

第 五 章

Embed Size (px)

DESCRIPTION

第 五 章. 面向对象的设计方法. 5.1 面向对象的基本概念. 面向对象的思想最初出现于挪威奥斯陆大学和挪威计算机中心共同研制的 Simula 67 语言中,随着的 Smalltalk---76 和80语言推出,面向对象的的程序设计方法得到了比较完善的实现。 此后,面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统,交互式界面,分布式系统,网络管理结构和人工智能等领域。 面向对象的技术已成为软件开发的一种新方法,新技术。. 5.1.1 什么是面向对象的开发方法 - PowerPoint PPT Presentation

Citation preview

Page 1: 第  五 章

第 五第 五 章章

面向对象的设计方法面向对象的设计方法

Page 2: 第  五 章

面向对象的思想最初出现于挪威奥斯陆大学和挪威计算机中心共同研制的 Simula 67 语言中,随着的Smalltalk---76 和 80 语言推出,面向对象的的程序设计方法得到了比较完善的实现。 此后,面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统,交互式界面,分布式系统,网络管理结构和人工智能等领域。 面向对象的技术已成为软件开发的一种新方法,新技术。

5.1 5.1 面向对象的基本概念面向对象的基本概念

Page 3: 第  五 章

5.1.1 5.1.1 什么是面向对象的开发方法什么是面向对象的开发方法 OOSD OOSD (Object-Oriented Software Development )法是一种 把面向对象的思想应用于软件开发过程,指导开发活动的系统方法。

问题空间问题空间——软件系统所涉及到的应用领域和业务范软件系统所涉及到的应用领域和业务范 围(现实世界)。围(现实世界)。解空间 解空间 — — 用于解决某些问题的软件系统。用于解决某些问题的软件系统。

一、软件开发过程一、软件开发过程

问题空间问题空间(( 现实世现实世

界界 ))

解空间解空间(( 软件系软件系

统统 ))

映射映射

Page 4: 第  五 章

二、传统软件开发方法存在的问题二、传统软件开发方法存在的问题1.1. 传统软件开发方法传统软件开发方法无法实现从问题空间到解空无法实现从问题空间到解空间的直接映射。间的直接映射。

问题空间问题空间(( 现实世现实世

界界 ))

解空间解空间(( 软件系软件系

统统 ))

复杂映射复杂映射

2.2. 传统软件开发方法无法实现高效的软件复用。传统软件开发方法无法实现高效的软件复用。 原因是:原因是:传统软件开发方法数据与代码(操作)传统软件开发方法数据与代码(操作)分离。分离。3.3. 传统软件开发方法难以实现从分析到设计的直接传统软件开发方法难以实现从分析到设计的直接过渡。过渡。

复杂转换复杂转换分析文档分析文档(( DFDDFD ))分析文档分析文档(( DFDDFD ))

设计文档设计文档(SC)(SC)

设计文档设计文档(SC)(SC)

Page 5: 第  五 章

三、面向对象技术的特点三、面向对象技术的特点 1. 对软件开发过程所有阶段进行综合考虑。 使问题空间与解空间具有一致性 , 降低复杂性。 2. 软件生存期各阶段所使用的方法、技术具有高 度的连续性,用符合人类认识世界的思维方式 来分析、解决问题。

自然、连续自然、连续问题空间问题空间(( 现实世界现实世界 ))

解空间解空间(( 软件系统软件系统 ))

实体 1

实体 2

实体 n

对象 1

对象 n

对象 2

Page 6: 第  五 章

3. 将 OOA 、 OOD 、 OOP 有机地集成在一起。有利于系统的稳定性 .   OOA ( Object-Oriented Analysis )) OOD ( Object-Oriented Design ) OOP ( Object-Oriented Program ) 以对象为中心各种构造系统 , 而不是以功能为中心 , 能很好地适应需求变化 .

4. 具有良好的可重用性

由于对象所具有的封装性和信息隐蔽,具有很强的独立性。

Page 7: 第  五 章

理解面向对象的基本概念对于学习和掌握面向对象的开发方法是十分重要的。

5.1.2 5.1.2 面向对象的基本概念面向对象的基本概念

类( Class )

对象 (Object)

消息 (Information)

多态性多态性 (Polymorphism)

继承( Inheritance)

永久对象永久对象 ((Persistent Persistent object)object)

Page 8: 第  五 章

11.. 对象对象 ((ObjectObject)) 对象对象 ((ObjectObject)) 是客观事物或概念的抽象表述,是客观事物或概念的抽象表述,即即对客观存在的事物的描述统称为对象。 对象可以是事、物、或抽象概念 ,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。  属性 属性 ((attributeattribute) ) — — 对象本身的性质。对象本身的性质。  操作(  操作( operationoperation) ) — — 给对象定义给对象定义一组运算。一组运算。  对象将它自身的属性及运算“包装起来”,称  对象将它自身的属性及运算“包装起来”,称为为“封装”(“封装”( encapsulationencapsulation)).. 对象的最基本的特征是封装性和继承性。对象的最基本的特征是封装性和继承性。

Page 9: 第  五 章

22.. 类(类( ClassClass ))

类又称对象类(( Object ClassObject Class ),),是是一组具有相同属性和相同操作的对象的集合。

在一个类中,每个对象都是类的实例 (instance) ,它们都可以使用类中提供的函数。

类具有属性,用数据结构来描述类的属性,类具有操作,它是对象的行为的抽象,操作实现

的过程称为方法( method) ,方法有方法名,方法体和参数。

由于对象是类的实例,在进行分析和设计由于对象是类的实例,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象时,通常把注意力集中在类上,而不是具体的对象上。上。

Page 10: 第  五 章

几何对象

颜色位置

移动( delta :矢量)选择( P: 指针型) : 布尔型

旋转 ( 角度 )

图 5.1 对象类的描述

人姓 名 : 字符串年 龄 : 整 型

改换工作改换地址

文件文件名

文件大小最近更新日期

打印

( 人 )

张红兵28

绘图员人民路 8 号

( 人 )

李军24

程序员无

图 5.2 对象的描述

对象和类的描述对象和类的描述类和类和对象一般采用“名字”、对象一般采用“名字”、““属性”和属性”和““运算”来描述。运算”来描述。

类名

属性

运算

对象

Page 11: 第  五 章

33.. 继承继承 (( InheritanceInheritance )) 继承是使用现存的定义作为基础,建立新定义的技术。是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。 继承性分: 单重继承:一个子类只有一个父类。即子类只继承一个父类的数据结构和方法。 多重继承:一个子类可有多个父类。继承多个父类的数据结构和方法。

基类

子类 A 子类 B

图 5.4 继承性描述

现存类定义父类 ( 基类 )

新类定义子类 ( 派生类 )

继 承

图 5.3 继承性

Page 12: 第  五 章

44.. 消息消息(( Message)Message)

  消息就是向对象发出的服务请求消息就是向对象发出的服务请求((互相联系、协同工作等)。)。对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制。

一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识 、消息和方法、输入信息、回答信息。

  在对象的操作中当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的消息。

Page 13: 第  五 章

55.. 多态性和动态绑定多态性和动态绑定 多态性多态性 ((Polymorphism)Polymorphism) 是指相同的操作或是指相同的操作或函数、过程作用于不同的对象上并获得不同的结果。函数、过程作用于不同的对象上并获得不同的结果。 即相同的操作的消息发送给不同的对象时,即相同的操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的操作去执行,产每个对象将根据自己所属类中定义的操作去执行,产生不同的结果。生不同的结果。 例如: “绘图”操作,作用在“椭圆” 和

“矩形” 上,画出不同的图形。      动态绑定动态绑定 ((dynamic binding)dynamic binding) 是在运行时根据对是在运行时根据对象接收的消息动态地确定要连接的服务代码。象接收的消息动态地确定要连接的服务代码。  使用虚函数可实现动态联编,不同联编可以选择不同的实现,这便是多态性。   继承是动态联编的基础,虚函数是动态联编的关键。

Page 14: 第  五 章

多态性的实现举例多态性的实现举例 实现多态性的基本步骤实现多态性的基本步骤 (( 以以 VCVC 为例为例 )) ::    (1) 在基类中,定义成员函数为虚函数(virtual);   (2)定义基类的公有( public )派生类;   (3)在基类的公有派生类中“重载”该虚函数;   (4)定义指向基类的指针变量,它指向基类的公有派生类的对象。

注意:注意:重载虚函数不是一般的重载函数,它要求函数名、返回类型、参数个数、参数类型和顺序完全相同。

Page 15: 第  五 章

66.. 永久对象永久对象 ((Persistent objectPersistent object))

所谓永久对象永久对象是指生存期可以超越程序的执行时间而长期存在的对象。 目前,大多数 OOPL 不支持永久对象,如果一个对象要长期保存,必须依靠于文件系统或数据库管理系统实现,程序员需要作对象与文件系统或数据库之间数据格式的转换,以及保存和恢复所需的操作等烦琐的工作。 为了实现永久对象,使上述烦琐工作由系统自动

完成,需要较强的技术支持;需要一个基于永久对象管理系统 OMS ( object management system), 能够描述和处理永久对象的编程语言。

Page 16: 第  五 章

5.3 5.3 面向对象的分析面向对象的分析

面向对象分析 OOA(Object-Oriented Analysis)的目标是完成对所求解问题的分析,确定系统“作什么”,并建立系统的模型。

基本概念 :

问题域 (problem domain) — 被开发系统的应用领域。

系统责任 (system responsibilities) — 所开发的系统应具备的职能。

Page 17: 第  五 章

5.3.1 5.3.1 面向对象分析的特点面向对象分析的特点 一、需求中存在的问题一、需求中存在的问题 1. 确定问题域和系统责任困难 2. 充分交流的问题解决得不好 3. 很难适应需求的不断变化 4. 难以满足复用要求

二、二、 OOAOOA 的特点的特点1.1. 有利于对问题及系统责任的理解;有利于对问题及系统责任的理解;2.2. 有利于人员之间的交流;有利于人员之间的交流;3.3. 对需求变化有较强的适应性;对需求变化有较强的适应性;4.4.支持软件复用。支持软件复用。

Page 18: 第  五 章

运用面向对象的方法,对问题域和系统责任进行分析和理解,建立分析模型。

1.分析问题域,确定类和对象;

2. 定义类或对象属性和操作,确定其结构;

3. 建立系统中类或对象之间的静态联系和动态联系。

5.3.2 5.3.2 OOAOOA 的基本任务的基本任务

Page 19: 第  五 章

5.3.3 OOA5.3.3 OOA 的分析过程的分析过程

获取用户基本需求获取用户基本需求

标识类和对象标识类和对象

定义类的结构和层次定义类的结构和层次

表示类表示类 ((对象对象 )) 间的关系间的关系

为对象行为建模为对象行为建模

图 5.7 OOA 分析过程

Page 20: 第  五 章

5.3.4 OOA5.3.4 OOA 模型模型

对象层

特征层

关系层

详 细 说 明

基本模型 (类图)

图 5.8 OOA 模型与详细说明基 本 模 型 是 一 个 类 图 (class diagram) ,是以直观的方式表达系统最重要的信息。 OOA 基本模型的三个层次分别描述了:系统中应设哪几类对象,每类对象的内部构成,对象与外部的关系。

Page 21: 第  五 章

5.3.4 OOA5.3.4 OOA 模型模型

对象层

特征层

关系层

详 细 说 明

基本模型 (类图)

主题 (subject) 又称为子系统(subsystem) 是将一些联系密切的类组织在一起的类的集合。按照粒度控制原则,将系统组成几个主题,便于理解。

Page 22: 第  五 章

5.3.4 OOA5.3.4 OOA 模型模型

对象层

特征层

关系层

详 细 说 明

基本模型 (类图)

交 互图 (interaction diagram) 是 Use case 与系统成分之间的对照图。

主题图和交互图又称为补充模型。主题图和交互图又称为补充模型。

Page 23: 第  五 章

5.3.4 OOA5.3.4 OOA 模型模型

对象层

特征层

关系层

详 细 说 明

基本模型 (类图)

详细说明按照分析方法所要求的格式,对分析模型进行说明和解释。主要以文字为主。

Page 24: 第  五 章

面向对象的设计面向对象的设计 OOD ( Object-Oriented Design )是面向对象方法在软是面向对象方法在软件设计阶段应用与扩展的结果件设计阶段应用与扩展的结果。。

是将是将 OOAOOA 所创建的分析模型转换为设计所创建的分析模型转换为设计模型,解决如何作的问题。模型,解决如何作的问题。 OODOOD 与与 OOAOOA没没有明显的分界,采用相同的符号。有明显的分界,采用相同的符号。

5.4 5.4 面向对象的设计面向对象的设计

Page 25: 第  五 章

5.4.1 OOD5.4.1 OOD 基本任务基本任务11. . 系统设计系统设计 将分析模型划分为若干子系统,子系统应该具有良好的接口,子系统内的类相互协作。标识问题本身的并发性,为子系统分配处理器。

保险单填写界面

系统内部

保险单 客户

数据库界面( abstract)

Oracle 界面

Sybasec 界面

Page 26: 第  五 章

子系统的分解是关键,可以有分层和分块: 分层:分层:将软件系统组织为层次结构,每层是一个子系统。分层结构又分为封闭式和开放式。 分块:分块:垂直分块是将系统分解为若干个相对独立的、弱耦合的子系统。每个子系统相当于一个块,每块实现一类服务。  常常使用分层和分块的混合结构,如图所示:

应用程序包

人机对话控制窗口图形

仿真程序包屏幕图形点阵图形操作系统

计算机硬件

Page 27: 第  五 章

5.4.1 OOD5.4.1 OOD 基本任务基本任务22.. 对象设计对象设计 在面向对象的系统中,模块、数据结构及接口等都集中体现在对象和对象层次结构中。 对象设计是为每个类的属性和操作进行详细设计,包括属性和操作,它们的数据结构和实现算法。

33.. 消息设计消息设计 设计连接类与它的协作者之间的消息规约(specification of the messages) 。

44.. 优化及复审优化及复审 主要考虑提高效率和建立良好的继承结构。

Page 28: 第  五 章

5.4.2 OOD5.4.2 OOD 模型模型

面向对象设计准则:面向对象设计准则:

11)模块化)模块化 22)抽象 )抽象

33)信息隐藏 )信息隐藏 44)弱耦合)弱耦合

55)强内聚 )强内聚 66)可重用)可重用

介绍几种典型的面向对象的开发方法介绍几种典型的面向对象的开发方法 ::

Coda 方法 , Booch 方法和 OMT 方法

Page 29: 第  五 章

   随着面向对象开发方法的发展,逐渐形成了几种主要的流派:

Coda 方法 Booch 方法 OMT 方法 OOSEOOSE 方法方法

5.5 5.5 几种典型的面向对象的方法几种典型的面向对象的方法

Page 30: 第  五 章

一、 Coda/Yourdon 方法 — 由 OOA , OOD 构成 建立问题域的分析模型。该模型由 5个层次组成:即主题层、对象层、结构层、属性层和服务层。 要建立 4个组元的设计模型:问题域组元、人机交互组元、任务管理组元和数据管理组元。 该方法的特点是:简单、易学,对于对象、结构、服务的认定较系统、完整、可操作性强。

5.5 5.5 几种典型的面向对象的方法几种典型的面向对象的方法

Page 31: 第  五 章

1. 1. CodaCoda 方法的方法的 OOAOOA

在 Coda 方法中 , 构 造 和评审OOA 概念模型的顺序由五个层次组成:类与对象、属性、服务、结构和主题

这五个层次表示分析的不同侧面。

类与对象层

属性层

服务层

结构层

主题层

类的边界

实例的边界

属性

实例连接

服务

消息连接

泛化与特化结构 整体与部分结构

主题

图 5.10 分析过程的五个层次

Page 32: 第  五 章

2. 2. CodaCoda 方法的方法的 OODOOD

CoadCoad 方法的方法的 OODOOD 模型是在模型是在 OOAOOA 模型模型 55 个层次基础个层次基础上,建立系统的上,建立系统的 44 类组元,类组元,

PDC

问题域 组元

PDC

问题域 组元

HIC

人机界面 组元

HIC

人机界面 组元

TMC

任务管理 组元

TMC

任务管理 组元

DMC

数据管理 组元

DMC

数据管理 组元

主题层主题层对象层对象层结构层结构层

属性层属性层服务层服务层

图 5.12 Coda OOD 模型图 5.12 Coda OOD 模型

11)设计问题域组元)设计问题域组元 ((problem domain component)problem domain component)

22)设计人机界面组元)设计人机界面组元 ((human interaction component)human interaction component)

33)设计任务管理组元)设计任务管理组元 ((task managementtask management component)component) 44)设计数据管理组元)设计数据管理组元 ((data managementdata management component)component)

Page 33: 第  五 章

Booch 方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构,动态模型分为状态图和时序图。 该方法对每一步都作了详细的描述,描述手段丰富、灵活。不仅建立了开发方法,还提出了设计人员的技术要求,不同开发阶段的资源人力配制。

二、 Booch 方法

Page 34: 第  五 章

1.1. BoochBooch 方法的基本模型方法的基本模型

⑴ 类图

类名

类名

父类

子类

(a) 关联 (b) 继承

整体类

成员类

请求服务类

提供服务类

(c) 包含 (d) 使用

图 5.13 类图表示

控制环境

冷气

管理计划

暖气 灯光

温度执行机构

1 1

1N

图 5.14 温室管理系统的类图

Page 35: 第  五 章

对象图由对象和消息组成⑵⑵ 对象图对象图

对象 1 对象 2

编号:消息名

: 计划分析 计划度量

1 :收获时间 (C)

C: 谷物 : 计划管理

3 :成熟时间 ()

6: 成本 ( )

5: 作物 :: 产量

4: 产量 ( )2: 状态 ( )

图 5.16 温室管理系统的对象图

图 5.15 对象图的表示

Page 36: 第  五 章

⑶ ⑶ 状态图状态图 状态状态 11 状态状态 22事件名事件名 // 操作操作

空闲空闲 白天白天定义气候定义气候

夜晚夜晚

日落日落日出日出终止气候终止气候

温度上升温度上升 // 调温调温( )( )

温度下降温度下降 // 调温调温( )( )

图 5.18 环境控制器类的状态图

图 5.17 状态图的表示

⑷⑷ 时序图时序图用户用户 对象对象 11 对象对象 22

用户服务请用户服务请求求 内部服务请内部服务请

求求 服务返回服务返回 服务返回服务返回

图 5.19 温室管理系统的时序图

Page 37: 第  五 章

⑸⑸ 模块图模块图

⑹⑹进程图进程图

气候气候 气候气候

暖气暖气 暖气暖气

计划计划 计划计划

作物作物 定义定义

作物作物 定义定义

冷气冷气 冷气冷气

气候气候 定义定义

气候气候 定义定义

图 5.20 温室管理系统的模块图

温室工作站温室工作站

温室温室 AA

温室温室 BB

温室温室 CC

图 5.21 温室管理系统的进程图

Page 38: 第  五 章

面向对象的方法学又称为 对象模型技对象模型技术术, OMTOMT ( Object Model Technology )是一种软件工程方法学,支持整个软件生存周期,它覆盖了问题构成、分析、设计和实现等阶段。   OMT 方法使用了建模的思想,讨论如何建立一个实际的应用模型。从 3 个不同而又相关的角度建立了三类模型:对象模型、动态模型和函数模型, OMT 为每一个模型提供了图形表示。

三、面向对象的建模技术( OMT)

Page 39: 第  五 章

1. 1. 对象模型技术的基本概念对象模型技术的基本概念

  OMTOMT 方法讨论的核心就是建立三类模型:   对象模型对象模型描述了由对象和相应实体构成的系统静态结构,描述了系统中对象的标识,属性、操作及对象的相互关系。对象的相互关系。     动态模型动态模型根据事件和状态描述了系统的控制结构,系统中与时间和操作顺序有关的内容。     函数模型函数模型着重描述系统中与值的转换有关的问题,如函数、映射、约束和函数作用等。  三类模型描述的角度不同,却又相互联系。

Page 40: 第  五 章

2. 2. 建立对象模型建立对象模型对象模型对象模型描述了系统的静态结构。构成对象模型的基本元素有:对象构成对象模型的基本元素有:对象 (( 类类 )) 、它们之间的、它们之间的关系。关系。

类名

属性

操作

类 名

属性名 (1), 数据类型 1=缺省值 1属性名 (2), 数据类型 2=缺省值 2 ………

操作名 1(变量名 1) :结果类型 1操作名 2(变量名 2) :结果类型 2 ………

(类名)

对象名

属性

操作

对象名

类名

Page 41: 第  五 章

类之间类之间、、对象对象之间的关系之间的关系

⑴关联与链

①①二元关联、三元关联

人员 公司雇用

二元关联的例

(人员)张涛

(公司)通大

雇用

链的例子

项目 语言◆

(项目 )CAD 系统

(语言 ) C 语言◆

( 人 )林珩

三元关联的例 链的例子②受限关联

③用重数、链属性和角色进一步描述。

直线名称

点名称

相交

2+

人 公司● ●

公司名字

个人名字

工作职务工资

关联

雇主

雇员

Page 42: 第  五 章

⑵⑵继承性继承性(( InheritanceInheritance ))

继承性通常又称为概括,表示基类与子类的关系。

运输工具

陆上运输工具 水上运输工具

汽车 水陆两用车 船

⑶⑶聚集聚集

表整体与部分的关系。

段落 句子◆ ●

微机系统◆

监视器 主机箱 鼠标 键盘●

底架 CPU RAM 风扇

Page 43: 第  五 章

银行网络系统 ATM(Auto Trade Machine)

银行网络系统包括人工出纳和分行共享的自动出纳机。

自动出纳机

自动出纳机

自动出纳机

出纳站

分理处计算机

分理处计算机

出纳站

帐户

帐户

图 1 银行网络系统的示意图

用户

分行计算机

Page 44: 第  五 章

对象模型对象模型

银行码

录入站 远程事务

现金卡银行名、卡片码

安全号

出纳员事务

出纳员名字

出纳站

分行

站代码

帐户

余额、类型贷款限定

顾客

名字地址

事务种类、日期、时间、数量

卡片权限密码、限制

更新数量、类型

自动出纳机

分发现金

雇员号

站代码

分理处名字帐户号

卡片码

录入 组成

拥有

拥有

雇用

访问

标识

发行

被录入

开始

涉及

维持

Page 45: 第  五 章

3.3. 建立动态模型建立动态模型 动态模型着重于系统的逻辑结构;描述某时

刻对象及其联系的改变。包括状态图和事件追综图。一、事件和状态一、事件和状态状态状态— — 对象所具有的属性值 , 具有时间性和持续性。事件事件— 对于对象的触发行为 , 指从一个对象到另一个对象的信息的单向传递。脚本脚本—在系统的某一执行期间内的一系列事件。 在系统中具有属性值、链路的对象 , 可能相互激发 ,引起状态的一系列变化。

有的事件传递的是简单信号,有的事件则传递的是数据值。由事件传送的数据值称为“属性”。

Page 46: 第  五 章

⑴⑴状态图状态图状态图是一个状态和事件的网络,侧重于描述每

一类对象的动态行为,状态的迁移。

● 状态 A活动 状态 B ◎

状态 A / 操作

事件 B[条件 ]起始状态 终结状态

状态图

动态模型由多个状态图组成,每个有重要行为的类都有一个状态图。各状态图可并发地执行及独立改变状态。

图例

状态

状态迁移状态

Page 47: 第  五 章

打电话状态图打电话状态图空闲

拨号

连接

铃响

连接

断连

忙音

快速忙音

拨号音 超出时间

记录的信息

放下话筒 放下话筒提起话筒

超时

超时

无效号码有效号码

对方应答

通路

一位号码

中断线忙

号码忙

对方电话挂断

信息送完

图 5.39  打电话状态图

Page 48: 第  五 章

⑶⑶ 事件追踪图事件追踪图事件追踪图侧重描述系统执行过程中的一个特定的“场

景( Scenarios ”) 。场景有时也叫“脚本”,是完成系统某个功能的一个事件序列。即是描述多个对象的集体行为。脚本脚本——系统某一次特定运行时期内发生的事件系统某一次特定运行时期内发生的事件序列。

例如:打电话的场景:

1、拿起电话受话器 12、打电话者听见振铃声2、电话忙音开始 13、对方接电话3、拨电话号码数 5 12、接话方停止振铃4、电话忙音结束 14、打电话方停止振铃声5、拨电话号码数 5 15、通电话6、拨电话号码数 5 16、对方挂电话7、拨电话号码数 1 17、电话切断8 、拨电话号码数 2 18 、打电话者挂电话……………..11、对方电话开始振铃

Page 49: 第  五 章

打电话的事件追踪图

打电话的事件追踪图

打电话者 电话线 接电话者拿起接收器拨号音开始拨号( 5 )忙音结束拨号( 5 )拨号( 5 )拨号( 1 )拨号( 2 )拨号( 3 )拨号( 4 )拨号( 8 )铃声

铃声停止电话连通

电话断开打电话者挂机

铃声受话方回答铃声停止电话连通受话方挂机电话断开

打电话者打电话的事件追综图

Page 50: 第  五 章

功能模型着重于系统内部数据的传递与处理。功能模型着重于系统内部数据的传递与处理。定义“做什么?”的问题,表明值之间的依赖关定义“做什么?”的问题,表明值之间的依赖关系及其相关的功能。系及其相关的功能。

描述手段为分层数据流图,描述手段为分层数据流图, DFDDFD 图有助于表示图有助于表示功能的依赖关系,其中的处理对应于状态图的活功能的依赖关系,其中的处理对应于状态图的活动和动作,数据流对应于对象图中的对象或属性。动和动作,数据流对应于对象图中的对象或属性。建立功能模型的步骤为:建立功能模型的步骤为:

    

⑷ ⑷ 建立功能模型建立功能模型

Page 51: 第  五 章

四、 面向对象的软件工程(四、 面向对象的软件工程( OOSEOOSE ))

     OOSEOOSE 将面向对象的思想应用于软件工程中,将面向对象的思想应用于软件工程中,建立五类模型:建立五类模型: 需求模型( RM ) 分析模型( AM ) 设计模型( DM ) 实现模型( IM ) 测试模型( TM )

OOSEOOSE 的开发活动主要分为三类:分析、构造和测试。的开发活动主要分为三类:分析、构造和测试。

分析分析

构造构造

测试测试

OOSEOOSE 的核心的核心——最大贡献,是建立了最大贡献,是建立了 Use Case Use Case 模型。模型。

Page 52: 第  五 章

用例用例 ((Use case)Use case) 是是 OOSEOOSE 中的重要概念中的重要概念 ,, 在开发各种模型时 , 用例贯穿了 OOSE 活动的核心 , 描述了系统的需求及功能。分析模型分析模型 use case模型通过分析来构造。设计模型设计模型 use case模型通过设计来具体化。实现模型实现模型 该模型依据具体化的设计来实现 use case模型。

测试模型测试模型 用来测试具体化的 use case模型。

更新帐目

评价

 用例图

记帐系统

销售人员超越边界

贸易经理

营销人员

设置边界

风险分析

交易估价

进行交易

<<include>><<include>>

<<include>><<include>>

<<Extend>><<Extend>>

Page 53: 第  五 章

Coda-Yourdon 方法 , Booch 方法、 OMT 方法及 OOSE 法代表了面向对象方法的主要流派。它们都是采用建模技术建立了各种视图来描述软件系统。

模型是对系统的抽象表示,建模是在不同层次上对系统的描述。

面向对象建模面向对象建模

鉴于软件鉴于软件 ,,尤其是大型软件所具有的复杂性,以尤其是大型软件所具有的复杂性,以及人们对复杂问题理解的局限性,建立一种共同的建及人们对复杂问题理解的局限性,建立一种共同的建模语言模语言 ,,推动推动 OOOO 方法的发展是十分必要的。方法的发展是十分必要的。

—— —— UMLUML 统一建模型语言应运而生!!统一建模型语言应运而生!!