第 四 章面向对象的技术
4.1 面向对象的基本概念面向对象的思想最初出现于挪威奥斯陆大学和挪威计算机中心共同研制的 Simula 67语言中,其后,随着位于美国加利福尼亚的 Xerox研究中心推出的 Smalltalk---
76和 80语言,面向对象的的程序设计方法得到了比较完善的实现 。 此后,面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围;如数据库系统,
交互式界面,分布式系统,网络管理结构和人工智能等领域 。 一些新的工程概念及其实现,如并发工程,综合集成工程等也应用到面向对象的概念,所以面向对象的技术已成为软件开发的一种新方法,新技术 。
4.1 面向对象的基本概念
4.1.1 什么是面向对象的开发方法
4.1.1 什么是面向对象的开发方法
OOSD ( Object-Oriented Software Development) 法 是一种 把面向对象的思想应用于软件开发过程,指导开发活动的系统方法。
面向对象的方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。
什么是面向对象根据 Coad 和 Yourdon 的定义,按照以下 4个概念设计和实现的系统,称为是面向对象的。
面向对象 =对象 (object)
+类 (classification)
+继承 (inheritance)
+通信 (communication with messages)
面向对象技术的特点
1、对软件开发过程所有阶段进行综合考虑。
2、软件生存期各阶段所使用的方法、技术具有高度的连续性,
用符合人类认识世界的思维方式来分析、解决问题。
3,将 OOA,OOD,OOP有机地集成在一起 。
OOA( Object-Oriented Analysis)
OOD( Object-Oriented Design)
OOP( Object-Oriented Program)
4.1.1 什么是面向对象的开发方法理解面向对象的基本概念对于学习和掌握面向对象的开发方法是十分重要的。
4.1.2 面向对象的概念
4.1.2 面向对象的基本概念类 ( Class)
对象 (Object)
消息 (Information)
多态性 (Polymorphism)
继承 ( Inheritance)
永久对象 (Persistent object)
1,对象 (Object)
对象 ( Object)是客观事物或概念的抽象表述,即 对客观存在的事物的描述统称为对象,对象可以是事,物,或抽象概念,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体 。
对象都存在一定的 状态 ( state),内部 标识
( identity),可以给对象定义 一组运算 ( operation),对象通过其运算所展示的特定行为称为 对象行为 ( behavior),对象本身的性质称为 属性 (attribute),对象将它自身的属性及运算,包装起来,,称为,封装,( encapsulation).
对象的最基本的特征是封装性和继承性 。
4.1.2 面向对象的基本概念
2,类 ( Class)
类 又称 对象类 ( Object Class),是 一组具有相同属性和相同操作的对象的集合 。 在一个类中,每个对象都是类的 实例
(instance),它们都可以使用类中提供的函数 。
类具有属性,用数据结构来描述类的属性,类具有操作,
它是对象的行为的抽象,操 作 实 现 的 过 程 称 为 方 法
( method),方法有方法名,方法体和参数 。
4.1.2 面向对象的概念由于对象是类的实例,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象上。
几何对象颜色位置移动( delta,矢量)
选择( P:指针型),布尔型旋转 (角度 )
图 4.1 对象类的描述人姓 名,字符串年 龄,整 型改换工作改换地址文件文件名文件大小最近更新日期打印
(人 )
张红兵
28
绘图员人民路 8号
(人 )
李军
24
程序员无图 4.2 对象的描述对象和类的描述对象和类一般采用,对象图,和,类图,来描述 。
类名属性运算对象类
4.1.2 面向对象的概念对象和类的描述
3,继承 ( Inheritance)
继承是使用现存的定义作为基础,建立新定义的技术 。 是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系 。 在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容做为自己的内容,并加入若干新内容 。
继承性分:
单重继承:一个子类只有一个父类 。 即子类只继承一个父类的数据结构和方法 。
多重继承:一个子类可有多个父类 。 继承多个父类的数据结构和方法 。
4.1.2 面向对象的概念基类子类 A 子类 B
图 4.4 继承性描述现存类定义父类 (基类 )
新类定义子类 (派生类 )
继 承图 4.3 继承性
4,消息 ( Message)
消息就是向对象发出的服务请求 ( 互相联系,协同工作等 ) 。 对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制 。
一个消息应该包含以下信息:消息名,接收消息对象的标识,服务标识,消息和方法,输入信息,回答信息 。
注意,在并发系统中,多个控制线程 ( Thread of
Control)并发执行,情况就复杂得多,消息可以是发出服务请求,提交数据,发布事件信息,或是传递同步控制信息 。
在对象的操作中当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的消息 。
4.1.2 面向对象的概念
4,消息 ( Message)
4.1.2 面向对象的概念属性:姓名年龄单位职称工资状态:李伟
25
计算机系讲师
900
操作:调工资评职称受 聘方法:调工资
(计算公式)
评职称
(步骤、条件)
操作:调工资评职称受 聘李伟,调工资( )
数据结构数据值人事处向对象发消息执行的操作方法体类:教师 对象:李伟抽象实例抽象实例抽象方法名(参数)
图 4.5 对象、类和消息传递
5、多态性和动态绑定多态性 (Polymorphism)是指相同的操作或函数,过程作用于不同的对象上并获得不同的结果。
即相同的操作的消息发送给不同的对象时,每个对象将根据自己所属类中所定义的操作去执行,故产生不同的结果 。
例如:,绘图”操作,作用在“椭圆” 和“矩形”
上,画出不同的图形。
动态绑定 (dynamic binding)是在运行时根据对象接收的消息动态地确定要连接的服务代码。
4.1.2 面向对象的概念
6、永久对象 (Persistent object)
所谓 永久对象 是指生存期可以超越程序的执行时间而长期存在的对象。
目前,大多数 OOPL不支持永久对象,如果一个对象要长期保存,必须依靠于文件系统或数据库管理系统实现,程序员需要作对象与文件系统或数据库之间数据格式的转换,以及保存和恢复所需的操作等烦琐的工作。
为了实现永久对象,使上述烦琐工作由系统自动完成,
需要较强的技术支持;需要一个基于永久对象管理系统 OMS
( object management system),能够描述和处理永久对象的编程语言。
4.1.2 面向对象的概念图 4.6 面向对象开发过程的应用生存期模型
OOA
应用生存期在面向对象开发的各个阶段,开发的“部件”都是类,
因此面向对象的各个阶段都是对类的信息进行细化。类是分析、设计和实现的基本单元。
虽然图中各阶段的顺序是线性的,但实际过程的交错和相互作用要复杂得多。
OOD
其主要开发过程如下:
论域分析 (domain analysis)
应用分析 (application
analysis)
高层设计、下层设计类的设计 -对象设计
4.2 面向对象的开发过程
4.2面向对象的开发过程
4.3 面向对象的分析
2.3 面向对象的分析面向对象分析 OOA(Object-Oriented Analysis)的目标是完成对所求解问题的分析,确定系统,作什么,,并建立系统的 模型 。 OOA的基本任务运用面向对象的方法,对问题域和系统责任进行分析和理解,找出描述它们的类和对象,定义其属性和操作,及其结构、静态联系和动态联系。
OOA面临的问题:
1、问题域和系统责任问题问题域 (problem domain) — 被开发系统的应用领域。
系统责任 (system responsibilities) — 所开发的系统应具备的职能。
2、交流问题 (各类人员之间的要求)
3、需求的不断变化 (用户、竞争因素、经费、技术因素)
4.3.1 OOA分析过程
1、获取用户基本需求用户与开发者之间进行充分交流,常用 User case来收集和描述用户的需求 。 即先标识使用该系统的不同的行为者
(actor)。
4.3.1 OOA的分析过程 1
获取用户基本需求标识类和对象定义类的结构和层次表示类 (对象 )间的关系为对象行为建模行为者所提出的每个使用场景(或功能)称为一个用例,
所有的用例则构成完整的系统需求。
图 4.7 OOA分析过程
4.3.1 OOA分析过程
2、标识类和对象标识类与对象是一致的 。 在确定系统的用例后,可标识类及类的属性和操作 。
4.3.1 OOA的分析过程 2
确定最终对象可根据以下原则确定:需要保留的信息,需要的服务,
具有多个属性,具有公共属性及操作 。
从问题域或用例描述入手,发现对象 。
对象可能的形式有:外部实体,事物,发生的事件,
角色,组织单位,场所,构造物等 。
标识属性从本质上讲,属性定义了对象 。 可从问题的陈述中或通过对类的理解而标识出属性 。
定义操作操作定义了对象的行为并以某种方式修改对象的属性 。
操作分为:对数据的操作,计算操作,控制操作 。
4.3.1 OOA分析过程
3、定义类的结构和层次类的结构有,
一般 — 特殊 (generalization - specialization)结构整体 — 部分 (whole-part)结构
4.3.1 OOA的分析过程 3
构成类图的元素所表达的模型信息,
分为 三 个层次,
对象层 — 给出系统中所有反映问题域和 系统责任的对象。
特征层 — 给出类(对象)的内部特征,
即类的属性和操作。
关系层 — 给出各类(对象)之间的关系,包括继承,组装、一般 — 特殊,整体 — 部分、属性的静态依赖关系,操作的动态依赖关系。
对象层特征层关系层图 4.8 OOA基本模型
4.3.1 OOA分析过程用,对象 -关系模型,描述了系统的静态结构。
5,建立对象 -行为模型描述了系统的动态行为。
4、建立类 (对象 )间的关系
4.3.2 OOA模型及详细说明
4.3.2 OOA模型及详细说明完整的 OOA模型分为基本模型和补充模型以及详细说明。
一,基本模型基本模型是一个类图 (class diagram),是以直观的方式表达系统最重要的信息。 OOA基本模型的三个层次分别描述了:系统中应设哪几类对象,每类对象的内部构成,对象与外部的关系。
二,补充模型补充模型有主题图和交互图 。
1,主题 (subject)又称为子系统 (subsystem)是将一些联系密切的类组织在一起的类的集合。按照粒度控制原则,将系统组成几个主题,便于理解。
主题图 画出了系统的主题。
2,交互图 (interaction diagram) 是 Use case与系统成分之间的对照图。
4.3.2 OOA模型及详细说明
4.3.2 OOA模型及详细说明三,详细说明按照分析方法所要求的格式,对分析模型进行说明和解释。主要以文字为主。
对象层特征层关系层交互图主题图详 细 说 明基本模型 (类图)
图 4.9 OOA模型与详细说明
4.4 面向对象的设计面向对象的设计 OOD( Object-Oriented Design)
是面向对象方法在软件设计阶段应用与扩展的结果 。
是将 OOA所创建的分析模型转换为设计模型,解决如何作的问题。 OOD与 OOA没有明显的分界,采用相同的符号。
4.4 面向对象的设计
4.4.1 OOD步骤
1、系统设计将分析 模型划分为若干子系统,子系统应该具有良好的接口,子系统内的类相互协作。标识问题本身的并发性,
为子系统分配处理器。
2、对象设计为每个类的属性和操作进行详细设计,包括属性和操它们的数据结构和实现算法。
3、消息设计设计连接类与它的协作者之间的消息规约 (specification
of the messages)。
4、复审
4.4.1 OOD步骤
4.4.2 OOD模型
4.4.2 OOD模型
OOD模型分为 4个部分一,面向对象设计准则:
1) 模块化 2) 抽象 3) 信息隐藏
4) 弱耦合 5) 强内聚 6) 可重用二,面向对象设计的主要内容有,
1) 设计问题域组元
2) 设计人机交互组元
3) 设计任务管理组元
4) 设计数据管理组元
PDC
问题域组元
HIC
人机界面 组元
TMC
任务管理组元
DMC
数据管理组元主题层对象层结构层属性层服务层图 4.10 设计模型
1,Coda方法 — 由 OOA,OOD构成主要建立问题域的分析模型。该模型由 5个层次组成:即主题层、对象层、结构层、属性层和服务层。
要建立 4个组元的设计模型:问题域组元、人机交互组元、
任务管理组元和数据管理组元。
该方法的特点是,简单、易学,对于对象、结构、服务的认定较系统、完整、可操作性强。
其开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构,动态模型分为状态图和时序图。
随着面向对象开发方法的发展,逐渐形成了三个主要的流派:即 Coda方法,Booch方法和 OMT方法。
4.5 coda方法
4.5 coda方法
4.5.1 Coda方法的 OOA
4.5.1 Coda方法的 OOA
在 Coda方法中,构造和评审 OOA概念模型的顺序由五个层次组成 。 这五个层次不是构成软件系统的层次,而是分析过程中的层次,即分析的不同侧面 。 这五个层次是:类与对象,属性,服务,
结构和主题 。 图 2.7给出了每个层次中所涉及到主要概念和相应的图形表示 。
类与对象层属性层服务层结构层主题层类的边界实例的边界属性实例连接服务消息连接泛化与特化结构 整体与部分结构主题图 4.12 分析过程的五个层次
4.5.1 Coda方法的 OOA
下面给出一些应用实例:
报刊定阅属性服务确认订阅订阅请求录入订款额生成报告订户属性服务录入订户录入地址报告地址图 4.13 服务层的例子采访组 编辑室 印刷厂报社图 4.14 泛化与特化结构的例子
4.5.1 Coda方法的 OOA
4.5.2 Coda方法的 OOD
在 Coad方法,面向对象的设计模型是在面向对象的分析模型的 5个层次基础上,建立系统的 4个组成成分(组元),4
个组元对应于面向对象设计的 4个主要活动步骤:
2.5.2 Coda方法的 OOD
PDC
问题域组元
HIC
人机界面 组元
TMC
任务管理组元
DMC
数据管理组元主题层对象层结构层属性层服务层图 4.15 CodaOOD模型
1) 设计问题域组元 (problem domain component)
2) 设计人机界面组元 (human interaction component)
3) 设计任务管理组元 (task management component)
4) 设计数据管理组元 (data management component)
Booch方法 的开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构,动态模型分为状态图和时序图。
该方法对每一步都作了详细的描述,描述手段丰富、
灵活。不仅建立了开发方法,还提出了设计人员的技术要求,不同开发阶段的资源人力配制。
4.6 Booch方法
4.6 Booch方法
4.6.1 Booch方法的基本模型
4.6.1 Booch方法的基本模型一、静态模型
1、类图类名类名父类子类
(a) 关联 (b) 继承整体类成员类请求服务类提供服务类
(c) 包含 (d) 使用图 4.16 类图表示控制环境冷气管理计划暖气 灯光温度执行机构
1 1
1
N
图 4.17 温室管理系统的类图对象图由对象和消息组成
2、对象图
4.6.1 Booch方法的基本模型对象 1 对象 2
编号:消息名
:计划分析 计划度量
1:收获时间 (C)
C:谷物,计划管理
3:成熟时间 ()
6:成本 ( )
5:作物,:产量
4:产量 ( ) 2:状态 ( )
图 4.18 温室管理系统的对象图图 4.17 对象图的表示
3,状态图
4.6.1 Booch方法的基本模型状态 1 状态 2事件名 /操作空闲 白天定义气候夜晚日落日出终止气候温度上升 /调温 ( )
温度下降 /调温 ( )
图 4.19 环境控制器类的状态图图 2.13 状态图的表示
4、时序图用户 对象 1 对象 2
用户服务请求内部服务请求服务返回服务返回图 4.20 温室管理系统的时序图
5,模块图
4.6.1 Booch方法的基本模型
6、进程图气候暖气计划 作物定义冷气气候定义图 4.21 温室管理系统的模块图温室工作站温室 A
温室 B
温室 C
图 4.22温室管理系统的进程图面向对象的方法学又称为 对象模型技术,OMT
( Object Model Technology) 是一种软件工程方法学,
支持整个软件生存周期,它覆盖了问题构成,分析,
设计和实现等阶段 。
OMT方法使用了建模的思想,讨论如何建立一个实际的应用模型 。 从 3个不同而又相关的角度建立了三类模型:对象模型,动态模型和函数模型,OMT为每一个模型提供了图形表示 。
4.7 面向对象的建模技术( OMT)
4.7 面向对象的建模技术( OMT)
4.7.1 对象模型技术的基本概念
OMT 方法讨论的核心就是建立三类模型:
对象模型 描述了由对象和相应实体构成的系统静态结构,
描述了系统中对象的标识,属性,操作及 对象的相互关系,
该模型使用了对象图来描述,它是分析阶段 3个模型的核心,
提供了其它两类模型都适用的框架 。
动态模型 根据事件和状态描述了系统的控制结构,系统中与时间和操作顺序有关的内容 。 如:标记变化的事件,事件的顺序,定义事件背景的状态等 。
函数模型 着重描述系统中与值的转换有关的问题,如函数,映射,约束和函数作用等 。
三类模型描述的角度不同,却又相互联系 。
4.7.1 对象模型技术的基本概念
4.7.2 建立对象模型建立对象模型通常有五个层次:
1) 确定类 — &— 对象类和对象是在问题域中客观存在的,系统分析员的主要任务,就是通个分析找出这些类和对象 。
2) 确定关联两个或多个对象之间的相互依赖,相互作用的关系就是关联,分析确定关联,要考虑问题域的边缘情况 。
3) 划分主题将大型,复杂系统进一步划分成为不同的主题,以降低系统的复杂
4) 确定属性属性是对象的性质,一般确定属性的过程包括分析和选择两个步骤 。
5) 识别继承关系确定了类中应该定义的属性之后,就可以利用继承机制共享公共性质,并对系统中众多的类加以组织 。 一般使用自底向上和自顶向下两种方式建立继承关系 。
4.7.2 建立对象模型
4.7.3 对象图和类图类的描述:
人姓 名,字符串年 龄,整 型改换工作改换地址文件文件名文件大小最近更新日期打印几何对象颜色位置移动( delta,矢量)
选择( P:指针型),布尔型旋转 (角度 )
对象的描述,(人 )
李军
24
程序员无
(人 )
张红兵
28
绘图员人民路 8号
4.7.3 对象和类的描述属性,属性名、补充细节。
操作,应用于类中对象或被类中对象使用的一种功能或者转换,包含操作允许的参数。
(类名)
对象名属性操作图 4.24 对象的一般描述对象图与类图对象与类是构成对象模型的基本元素,图 4.23给出了类图的一般描述形式,由类名,属性和操作三部分组成,属性和操作还可作进一步的描述 。 图 4.24则是对象图的一般描述 。
类 名属性名 (1),数据类型 1=缺省值 1
属性名 (2),数据类型 2=缺省值 2………
操作名 1(变量名 1),结果类型 1
操作名 2(变量名 2),结果类型 2………
图 4.25 类的进一步描述图 4.23 类的一般描述类名属性操作
4.7.3 对象和类的描述
4.7.4 链和关联
4.7.4 链和关联关联链图 4,26 链与关联建立对象模型,必须要描述构成系统的对象之间的联系,链
( Link)和 关联 (association)都是建立对象和类之间关系的手段。
链 — 表示两个(或多个)对象之间的关系。
关联 — 描述具有公共结构和语义的一组链。
关联是描述两个或多个类之间的关系,链是关联的实例(程序设计中,关联常用一个对象到另一对象的指针实现。)。
4.7.4 链和关联两个类之间的关联称为 二元关联,三个类之间的关联称为三元关联 。
图 2.27 二元关联类 1 类 2关联名二元关联的表示人员 公司雇用二元关联的例
(人员)
张涛
(公司)
通大雇用链的例子如果对关联的含义作出某种限制,称为 受限关联 。
类 A 类 B限定词 目录 文件文件名图 4.29受限关联受限关联的表示 受限关联的例一、关联项目 语言◆

(项目 )
CAD系统
(语言 )
C 语言◆
(人 )
林珩图 4.28 三元关联类 1 类 2◆
类 3
三元关联的表示 三元关联的例 链的例子二,重 数工作站 窗口○
控制台图 4.34 重数为 0或者 1
人 公司●
人 公司● ●
图 2,31 多对多的关联图 4,30 一对多的关联也可在连线上标注数字表示重数。
,1” — 表示只有 1个
,1+” — 表示 1个或多个
,3 ~ 5” — 表示 3个到 5个之间
,2,4,15” — 表示 2个,4个或 15
个引入 重数 进一步描述类之间的关联,也称 关联的多重性 。
表示一个类中有多少个实例与一个相关类的某一例子有关,重数限定了相关对象的个数 。
直线名称点名称相交
2+
图 4.33 重数为 2或多个表示“多个”,表示零或多个。
表示“可选”,表示,0或者
1” 。
2.7.4 链和关联三、链属性链属性 是关联中链的性质,链的每一个属性都有一个值。如图 4.34所示,链属性的 OMT符号是一个盒子。
可进一步说明可访问(关联)性。
D:\edc\date1.Dat(读 -写 ) 李红
D:\user\login.com( 读 ) 张立角色 说明类在关联中的作用和 角色,常与附加链属性一起进一步描述对象之间的联接(图 2.30)。
4.7.4 链和关联链属性图 4,34多对多关联的链属性文件 用户● ●
访问许可可访问公司名字个人名字工作职务工资关联雇主雇员类 A 类 B
关联角色角色图 4.35角色与 链属性可用 聚集 来代表整体与部分的关系 (图 2.31),还可构成不同层次的多级 聚集关系 (图 2.32)。
段落 句子◆ ●整体 部分◆
图 4.36 聚集关系图 4.37 聚集关系微机系统

监视器 主机箱 鼠标 键盘


底架 CPU RAM 风扇
4.7.4 链和关联
4.7.5 继承性 ( Inheritance)
基类子类 A 子类 B
概括描述了类和具体实例之间的关系。
4.7.5 继承性继承是使用现存的定义作为基础,建立新定义的技术。
继承性通常又称为 概括,表示基类与子类的关系。子类的公共属性和操作归属于基类,并为每个子类共享,子类继承了基类的特征。
继承性分:单重继承、多重继承。
运输工具陆上运输工具 水上运输工具汽车 水陆两用车 船图 4.38 继承关系继承性的实例图 形颜 色中心位置笔的浓度笔 型移 动 选 择旋 转 显 示二 维定位填充类型比例尺填充多边形边数点数显示园直径显示旋转
0 维线端点显示一 维定位比例尺点显示样条控制点显示弧半径起始角弧度角显示
4.7.5 继承性图 4.39 继承性实例
4.7.6 建立动态模型动态模型着重于系统的逻辑结构;描述某时刻对象及其联系的改变。包括状态图和事件追综图。
一、事件和状态状态 — 对象所具有的属性值,具有时间性和持续性。
事件 — 对于对象的触发行为,指从一个对象到另一个对象的信息的单向传递 。
脚本 — 在系统的某一执行期间内的一系列事件 。
在系统中具有属性值,链路的对象,可能相互激发,引起状态的一系列变化 。
有的事件传递的是简单信号,有的事件则传递的是数据值。由事件传送的数据值称为“属性”。
4.7.6 建立动态模型二、状态图状态图是一个状态和事件的网络,侧重于描述每一类对象的动态行为,状态的迁移。
● 状态 A活动 状态 B ◎
状态 A /操作事件 B[条件 ]起始状态 终结状态状态图动态模型由多个状态图组成,每个有重要行为的类都有一个状态图。各状态图可并发地执行及独立改变状态。
菜单消失 菜单显示按下右键 /菜单显示释放右键 /擦去 菜单图例状态状态迁移状态
4.7.6 建立动态模型三、事件追踪图事件追踪图侧重描述系统执行过程中的一个特定的
“场景( Scenarios),。 场景 有时也叫,脚本,,是完成系统某个功能的一个事件序列。即是描述多个对象的集体行为。 脚本 — 系统某一次特定运行时期内发生的事件 序列。例如:打电话的场景:
1、拿起电话受话器 12、打电话者听见振铃声
2、电话忙音开始 13、对方接电话
3、拨电话号码数 5 12、接话方停止振铃
4、电话忙音结束 14、打电话方停止振铃声
5、拨电话号码数 5 15、通电话
6、拨电话号码数 5 16、对方挂电话
7、拨电话号码数 1 17、电话切断
8、拨电话号码数 2 18、打电话者挂电话
……………,.
11、对方电话开始振铃
4.7.6 建立动态模型打电话的事件追踪图打电话者 电话线 接电话者拿起接收器拨号音开始拨号( 5)
忙音结束拨号( 5)
拨号( 5)
拨号( 1)
拨号( 2)
拨号( 3)
拨号( 4)
拨号( 8)
铃声铃声停止电话连通电话断开打电话者挂机铃声受话方回答铃声停止电话连通受话方挂机电话断开打电话者打电话的事件追综图4.7.6 建立动态模型电话线状态图空闲拨号连接铃响连接断连忙音快速忙音拨号音 超出时间记录的信息放下话筒 放下话筒提起话筒超时超时无效号码有效号码对方应答通路一位号码中断线忙号码忙对方电话挂断信息送完
4.7.6 建立动态模型图 4.40 打电话 状态图功能模型着重于系统内部数据的传递与处理 。 定义,做什么?,的问题,表明值之间的依赖关系及其相关的功能 。
描述手段为分层数据流图,DFD图有助于表示功能的依赖关系,其中的处理对应于状态图的活动和动作,数据流对应于对象图中的对象或属性 。 建立功能模型的步骤为:
1) 确定输入值,输出值先列出输入输出值,输入输出值是系统与外部世界之间的事件参数 。 检测问题陈述,从中找到遗漏的所有输入输出值 。
2) 建立数据流数据流图说明输出值是怎样从输入值得来的 。 数据流图通常按层次组成,最顶层由单个处理组成,也可由数据输入计算值及生成结果的一个综合处理构成 。
4.7.7 建立功能模型
4.7.7 建立功能模型
3) 描述处理当数据流图已细化到一定程度后,对各处理进行描述,
描述的方式用自然语言,伪码及判断树等 。 描述可以是说明的或过程的 。
4) 确定对象的约束约束是那些不存在输入输出关系的对象之间的函数依赖,
同一时间内约束可以出现于两个对象中,约束也可以在一个对象不同时间中,或不同时间的不同对象中,函数的前置条件是输入值必须满足的约束,而后置条件则是输出承受的约束 。
5) 添加操作操作与对象模型中属性和关联查询,与动态模型的事件及与功能模型的处理有关,关键操作应归结到对象模型中,
所添加的操作如下:
对象模型中的操作。
来自事件的操作。
来自状态上的活动的操作。
来自处理的操作。
4.7.7 建立功能模型
4.8 面向对象的软件工程( OOSE)
OOSE将面向对象的思想应用于软件工程中,建立五个模型:
1,需求模型( RM)
2,分析模型( AM)
3、设计模型( DM)
4、实现模型( IM)
5、测试模型( TM)
4.8 面向对象的软件工程( OOSE)
OOSE的开发活动主要分为三类:分析、构造和测试。
分析构造测试用例 (Use case)是 OOSE中的重要概念,在开发各种模型时,
用例贯穿了 OOSE活动的核心,描述了系统的需求及功能。
4.8 面向对象的软件工程( OOSE)
贸易经理风险分析设置边界进行交易交易估价更新帐目
《使用》
《使用》
《扩展》
营销人员超越边界评价记帐系统销售人员图 4.41 用例 图分析模型 use case模型通过分析来构造。
设计模型 use case模型通过设计来具体化。
实现模型 该模型依据具体化的设计来实现 use case模型。
测试模型 用来测试具体化的 use case模型。