收藏 分享(赏)

第9章-面向对象方法学引论.ppt

上传人:dreamzhangning 文档编号:3323137 上传时间:2018-10-13 格式:PPT 页数:93 大小:1.15MB
下载 相关 举报
第9章-面向对象方法学引论.ppt_第1页
第1页 / 共93页
第9章-面向对象方法学引论.ppt_第2页
第2页 / 共93页
第9章-面向对象方法学引论.ppt_第3页
第3页 / 共93页
第9章-面向对象方法学引论.ppt_第4页
第4页 / 共93页
第9章-面向对象方法学引论.ppt_第5页
第5页 / 共93页
点击查看更多>>
资源描述

1、第9章 面向对象方法学引论,9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型 9.6 功能模型 9.7 3种模型之间的关系 9.8 小结,9.1 面向对象方法学概述,在20世纪60年代后期出现的面向对象编程语言。 自20世纪80年代中期起,逐步形成了面向对象方法学。 20世纪90年代,面向对象方法学已经成为人们在开发软件时首选的范型。,面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式。 客观世界的问题都是由客观世界中的实体及实体相互间的关系构成的。 客观世界中的实体抽象为问题域的对象(object)。 对象是不固定的。

2、一个雇员可以作为一个对象,一家公司也可以作为一个对象,9.1.1 面向对象方法学的要点,9.1.1 面向对象方法学的要点,面向对象方法具有下述4个要点: (1) 认为客观世界是由各种对象组成的,任何事物都是对象,复杂事物是由多个简单事物复合而成。 (2) 把所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。数据用于表示其静态属性,是其状态信息。方法是允许施加于该类对象上的操作,是该类所有对象共享的,并不需要为每个对象都复制操作的代码。,9.1.1 面向对象方法学的要点,(3) 按照子类(派生类)与父类(基类)的关系,把若干个对象类组成一个层次结构的系统(类等级)。下层的派生类具

3、有和上层的基类相同的特性,即继承(inheritance)。但是,如果在派生类中对某些特性又做了重新描述,则在派生类中的这些特性将以新描述为准,低层的特性将屏蔽高层的同名特性(如C+中的纯虚函数)。,9.1.1 面向对象方法学的要点,(4) 对象彼此之间仅能通过传递消息互相联系。对象必须发消息请求它执行它的某个操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作。对象就像一个不透明的黑盒子,在外界是看不见的,更不能直接使用,这就是“封装性”。,9.1.1 面向对象方法学的要点,面向对象的方法学用下列方程来概括: OO=objects+classes+inheritance+commu

4、nication with messages 面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。,9.1.1 面向对象方法学的要点,仅使用对象和消息,则这种方法称为基于对象的(object-based)方法,而不是面向对象方法; 进一步要求把所有对象都划分为类,则这种方法可称为基于类的(class-based)方法,但仍然不是面向对象的方法。只有同时使用对象、类、继承和消息的方法,才是真正面向对象的方法。,9.1.2 面向对象方法学的优点,1. 与人类习惯的思维方法一致 传统的面向过程的设计方法以算法为核心,把数据和过程作为相互独立的部分。 2. 稳定性好

5、传统的软件系统的结构紧密依赖于系统所要完成的功能,当功能需求发生变化时将引起软件结构的整体修改。 事实上,用户需求变化大部分是针对功能的,因此,这样的软件系统是不稳定的。,9.1.2 面向对象方法学的优点,3. 可重用性好 用已有的零部件装配新的产品,是典型的重用技术。 有两种方法可以重复使用一个对象类:一种方法是创建该类的实例,从而直接使用它;另一种方法是从它派生出一个满足当前需要的新类。 继承性机制使得子类不仅可以重用其父类的信息,而且可以在父类代码的基础上方便地修改和扩充。,9.1.2 面向对象方法学的优点,4. 较易开发大型软件产品 用面向对象方法学开发软件时,构成软件系统的每个对象就

6、像一个微型程序,有自己的数据、操作、功能和用途。 一个大型软件产品可分解成一系列本质上相互独立的小产品来处理,这就不仅降低了开发的技术难度,而且也使得对开发工作的管理变得容易多了。,9.1.2 面向对象方法学的优点,5. 可维护性好 (1) 面向对象的软件稳定性比较好 当对软件的功能或性能的要求发生变化时,通常不会引起软件的整体变化,往往只需对局部作一些修改。 (2) 面向对象的软件比较容易修改 类是理想的模块机制,它独立性好,修改一个类通常很少会牵扯到其他类。,举个例子,继承和多态,9.1.2 面向对象方法学的优点,(3) 面向对象的软件比较容易理解 维护软件的时候,首先需要深入理解软件。

7、面向对象的软件技术符合人们习惯的思维方式。,类的引用,9.1.2 面向对象方法学的优点,(4) 易于测试和调试 如果测试过程中发现了错误,还必须通过调试改正过来。 对面向对象的软件进行维护,主要通过从已有类派生出一些新类来实现。 对类的测试通常比较容易实现,如果发现错误也往往集中在类的内部,比较容易调试。,9.1.3 喷泉模型,迭代是软件开发过程中普遍存在的一种内在属性。经验表明,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代。 右图是面向对象软件设计中常用的“喷泉模型”,9.2 面向对象的概念 9.2.1 对象,应用领域中有意义的、与所要解决的问题有关系的任何事物都可以作为对象

8、,它既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的东西。 对象是对问题域中某个实体的抽象,设立某个对象就反映了软件系统具有保存有关它的信息并且与它进行交互的能力。,9.2.1 对象,1. 对象的形象表示 为有助于读者理解对象的概念,图9.2形象地描绘了具有3个操作的对象。,9.2.1 对象,2. 对象的定义 人们从不同角度给出对象的不同定义。这些定义虽然形式不同,但基本含义是相同的。 (1) 定义1: 对象是具有相同状态的一组操作的集合。 (2) 定义2: 对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力。也就是说,对象是

9、对属性值和操作的封装。 (3) 定义3: 对象=ID,MS,DS,MI。ID是对象的标识或名字,MS是对象中的操作集合,DS是对象的数据结构,MI是对象受理的消息名集合。,9.2.1 对象,3. 对象的特点 (1) 以数据为中心。操作围绕对其数据所需要做的处理来设置,操作的结果往往与当时所处的状态(数据的值)有关。 (2) 对象是主动的。它是进行处理的主体。为了完成某个操作,不能从外部直接加工它的私有数据,而是必须通过它的公有接口向对象发消息,请求它执行它的某个操作,处理它的私有数据。,9.2.1 对象,(3) 实现了数据封装。为了使用对象内部的私有数据,只需知道数据的取值范围和对该数据施加的

10、操作。因此,一个对象类型也可以看作是一种抽象数据类型。,(4) 本质上具有并行性。对象是描述其内部状态的数据及可以对这些数据施加的全部操作的集合。不同对象各自独立地处理自身的数据,彼此通过发消息传递信息完成通信。,9.2.1 对象,(5) 模块独立性好。对象是面向对象的软件的基本模块,为了充分发挥模块化简化开发工作的优点,希望模块的独立性强。具体来说,也就是要求模块的内聚性强,耦合性弱。,面向对象方法可以满足,9.2.2 其他重要概念,1. 类(class) 现实世界中的客观事物有些是彼此相似的,例如,张三、李四、王五虽说每个人职业、性格、爱好、特长等各有不同,但是,他们的基本特征是相似的,都

11、是黄皮肤、黑头发、黑眼睛,于是人们把他们统称为“中国人”。类是对具有相同属性和行为的一个或多个对象的描述。,9.2.2 其他概念,2. 实例(instance) 实例就是由某个特定的类所描述的一个具体的对象。类是对具有相同属性和行为的一组相似的对象的抽象。 类在现实世界中并不能真正存在。 类可以理解为“样板”,按照这个样板可以建立一个个具体的实例。,9.2.2 其他概念,3. 消息(message) 消息就是要求某个对象执行在定义它的那个类中的某个操作的规格说明。通常,一个消息由下述3部分组成: 接收消息的对象; 消息选择符(也称为消息名); 零个或多个变元。,9.2.2 其他概念,4. 方法

12、(method)方法就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。,9.2.2 其他概念,5. 属性(attribute) 属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。 6. 封装(encapsulation) 所谓封装就是把某个事物“包”起来,使外界不知道该事物的具体内容。,9.2.2 其他概念,对象具有封装性的条件如下: (1) 有一个清晰的边界。所有私有数据和实现操作的代码都被封装在这个边界内。 (2) 有确定的接口。这些接口就是对象可以接受的消息。 (3) 受保护的内部实现。实现对象功能的细节不能在定义该对象的类的范围

13、外访问。 (4)封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。,9.2.2 其他概念,7. 继承(inheritance) 继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享父类中定义的数据和方法的机制。,人的例子,9.2.2 其他概念,9.2.2 其他概念,当一个类只允许有一个父类时,类的继承是单继承; 当允许一个类有多个父类时,类的继承是多重继承。 低层的性质将屏蔽高层的同名性质。,9.2.2 其他概念,8. 多态性(polymorphism) 多态性的意思是“有许多形态”。 多态性是指子类对象可以像父类对象那样使用,同样的消息

14、既可以发送给父类对象也可以发送给子类对象。 在类等级的不同层次中可以共享一个行为的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为。 当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法。,9.2.2 其他概念,9. 重载(overloading) 函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字; 运算符重载是指同一个运算符可以施加于不同类型的操作数上面。,9.3 面向对象建模,所谓模型,就是为了理解事物而对事物作出的一种抽象,它是对事物的一种无歧义的书面描述。 模型由一组图示符号和组织这些符号的规则组成。 模型也是一种思考工

15、具,利用这种工具可以把知识规范地表示出来。 面向对象建模主要讨论对象模型、动态模型和功能模型。,9.4 对象模型,对象模型表示静态的、结构化的 “数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。 为了建立对象模型,需要定义一组图形符号,并且规定一组组织这些符号以表示特定语义的规则。 需要用适当的建模语言来表达模型,建模语言由记号和使用记号的规则组成。,9.4.1 类图的基本符号,类图描述类及类与类之间的静态关系。类图是一种静态模型,它是创建其他UML图的基础。 1. 定义类 UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域(下面两

16、个区域可选),3个区域分别放类的名字、属性和服务,如下图所示。,Unified model Language,9.4.1 类图的基本符号,类名是一类对象的名字。为类命名时应该遵守的几条准则: (1) 使用标准术语。应该使用在应用领域中人们习惯的标准术语作为类名,不要随意创造名字。例如,“交通信号灯”比“信号单元”这个名字好,“传送带”比“零件传送设备”好。 (2) 使用具有确切含义的名词。尽量使用能表示类的含义的日常用语作名字,不要使用空洞的或含义模糊的词作名字。例如,“库房”比“房屋”或“存物场所”更确切。,9.4.1 类图的基本符号,(3) 必要时用名词短语作名字。为使名字的含义更准确,必

17、要时用形容词加名词或其他形式的名词短语作名字。例如,“最小的领土单元”、“储藏室”、“公司员工”等都是比较恰当的名字。 (4) 名字要准确而简要。,9.4.1 类图的基本符号,2. 定义属性 UML描述属性的语法格式如下: 可见性 属性名: 类型名=初值性质串 属性的可见性有3种: 公有的(public) (+) 私有的(private) (-) 保护的(protected) (#) 如果未声明可见性,则该属性的可见性尚未定义。注意,没有默认的可见性。类型名表示该属性的数据类型,它可以是基本数据类型,也可以是用户自定义的类型。,9.4.1 类图的基本符号,在创建类的实例时应给其属性赋值。类型名

18、和初值之间用等号(=)隔开。 用花括号括起来的性质串明确地列出该属性所有可能的取值。 枚举类型的属性往往用性质串列出可以选用的枚举值,不同枚举值之间用逗号分隔。,9.4.1 类图的基本符号,“发货单”类的属性“管理员”,在UML类图中像下面那样描述: -管理员: String=“未定” 类的属性中还可以有一种能被该类所有对象共享的属性,称为类的作用域属性,也称为类变量。C+语言中的静态数据成员就是这样的属性。类变量在类图中表示为带下划线的属性 发货单类的类变量“货单数”,用来统计发货单的总数,在该类所有对象中这个属性的值都是一样的: -货单数: Integer,9.4.1 类图的基本符号,3.

19、 定义服务 服务也就是操作,UML描述操作的语法格式:可见性 操作名(参数表): 返回值类型性质串 操作可见性的定义方法与属性相同。参数表是用逗号分隔的形式参数的序列。描述一个参数的语法如下: 参数名: 类型名=默认值,9.4.1 类图的基本符号,当操作的调用者未提供实参时,该参数就使用默认值。 在类中也可定义类作用域操作,在类图中表示为带下划线的操作。这种操作只能存取本类的类作用域属性。,9.4.2 表示关系的符号,类图包括类和类与类之间的关系,类与类之间通常有关联、泛化(继承)、依赖和细化等4种关系。 1. 关联 关联表示两个类的对象之间存在某种语义上的联系。例如,教师使用计算机。,9.4

20、.2 表示关系的符号,(1) 普通关联 只要在类与类之间存在连接关系就可以用普通关联表示。普通关联的图示符号是直线。 关联是双向的,可在一个方向上为关联起一个名字,在另一个方向上起另一个名字。,9.4.2 表示关系的符号,在表示关联的直线两端可以写上重,它表示该类有多少个对象与对方的一个对象连接。重数的表示方法通常有: 01 表示0到1个对象 0*或* 表示0到多个对象 1+或1* 表示1到多个对象 115 表示1到15个对象 3 表示3个对象 如果图中未明确标出关联的重数,则默认重数是1。,9.4.2 表示关系的符号,(2) 关联的角色 在任何关联中都会涉及到参与此关联的对象所扮演的角色(即

21、起的作用)显式标明角色名有助于别人理解类图。 例如, 下图是一个递归关联(即一个类与它本身有关联关系)的例子。一个人与另一个人结婚,必然一个人扮演丈夫的角色,另一个人扮演妻子的角色。,9.4.2 表示关系的符号,9.4.2 表示关系的符号,(3) 限定关联 它指用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。 例如,某操作系统中一个目录下有许多文件,一个文件仅属于一个目录,在一个目录内文件名确定了惟一一个文件。,9.4.2 表示关系的符号,(4) 关联类 为了说明关联的性质可能需要一些附加信息。可以引入一个关联类来记录这些信息。 关联中的每个连接与

22、关联类的一个对象相联系。关联类通过一条虚线与关联连接。,9.4.2 表示关系的符号,例如,下图是一个电梯系统的类模型,队列就是电梯控制器类与电梯类的关联关系上的关联类。,连接有4个,存储着控制器和按钮的请求服务信息,9.4.2 表示关系的符号,2. 聚集 聚集也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系。 在陈述需求时使用的“包含”、“组成”、“分为部分”等字句,往往意味着聚集关系。,9.4.2 表示关系的符号,(1) 共享聚集 如果在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为共享聚集。 一个课题组包含许多成员,每个成员又可以是另一个课题

23、组的成员,则课题组和成员之间是共享聚集关系。一般聚集和共享聚集的图示符号,都是在表示关联关系的直线末端紧挨着整体类的地方画一个空心菱形。,9.4.2 表示关系的符号,9.4.2 表示关系的符号,(2) 组合聚集 如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失(或失去存在价值了),则该聚集称为组合聚集。,9.4.2 表示关系的符号,3. 泛化 泛化关系就是通常所说的继承关系。 在UML中,用一端为空心三角形的连线表示泛化关系,三角形的顶角紧挨着通用元素。 泛化针对类型而不针对实例,一个类可以继承另一个类,但一个对象不能继承另一个对象。实际上,泛化关系指出在类与类之间存在

24、“一般-特殊”关系。,9.4.2 表示关系的符号,(1) 普通泛化 没有具体对象的类称为抽象类。抽象类通常作为父类,用于描述其他类(子类)的公共属性和行为。 图示抽象类时,在类名下方附加一个标记值abstract 右图所示图下方的两个折角矩形是模型元素“笔记”的符号,其中的文字是注释,分别说明两个子类的操作drive的功能。,9.4.2 表示关系的符号,图9.13 复杂类图示例,9.4.2 表示关系的符号,(2) 受限泛化 给泛化关系附加约束条件的泛化称为受限泛化。 预定义的约束有4种: 多重、不相交、完全和不完全。 多重继承指的是,一个子类可以同时多次继承同一个上层基类。 与多重继承相反的是

25、不相交继承,即一个子类不能多次继承同一个基类。,9.4.2 表示关系的符号,9.4.2 表示关系的符号,完全继承指的是父类的所有子类都已在类图中穷举出来了,图示符号是指定完全约束。 不完全继承与完全继承恰好相反,父类的子类并没有都穷举出来,随着对问题理解的深入,可不断补充和维护,这为日后系统的扩充和维护带来很大方便。不完全继承是一般情况下默认的继承关系。,9.4.2 表示关系的符号,4. 依赖和细化 (1) 依赖关系 依赖关系描述两个模型元素(类、用例等)之间的语义连接关系: 其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的

26、模型元素。 在UML的类图中,用带箭头的虚线连接有依赖关系的两个类,箭头指向独立的类。在虚线上可以带一个版类标签,具体说明依赖的种类。,9.4.2 表示关系的符号,9.4.2 表示关系的符号,(2) 细化关系 当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。 假设两个模型元素A和B描述同一个事物,它们的区别是抽象层次不同,如果B是在A的基础上的更详细的描述,则称B细化了A,或称A细化成了B。细化的图示符号为由元素B指向元素A的、一端为空心三角形的虚线。(注意,不是实线) 如图9.16所示。细化用来协调不同阶段模型之间的关系,表示各个开发阶段不同抽象层次的模型之间的相关性,常常用

27、于跟踪模型的演变。,9.4.2 表示关系的符号,9.5 动态模型,动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。 一旦建立起对象模型,就需要考察对象的动态行为。 所有对象都具有自己的生命周期。对一个对象来说,生命周期由许多阶段组成,在每个特定阶段中,都有适合该对象的一组运行规律和行为规则,用以规范该对象的行为。,9.5 动态模型,所谓状态,是对对象属性值的一种抽象。各对象之间相互触发(即作用)就形成了一系列的状态变化。 一个触发行为称作一个事件。对象对事件的响应,取决于接受该触发的对象当时所处的状态 响应包括改变自己的状态或者又形成一个新的触发行为。

28、状态有持续性,它占用一段时间间隔。状态与事件密不可分,一个事件分开两个状态,一个状态隔开两个事件。 事件表示时刻,状态代表时间间隔。,9.5 动态模型,通常,用UML提供的状态图来描绘对象的状态、触发状态转换的事件以及对象的行为(对事件的响应)。 每个类的动态行为用一张状态图来描绘,各个类的状态图通过共享事件合并起来,从而构成系统的动态模型。,9.6 功能模型,功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。 通常,功能模型由一组数据流图组成。在面向对象方法学中,数据流图远不如在结构分析、设计方法中那样重要。,9.6 功能模型,UML提

29、供的用例图也是进行需求分析和建立功能模型的强有力工具。 在UML中把用用例图建立起来的系统模型称为用例模型。 用例模型描述的是外部行为者(actor)所理解的系统功能。 用例模型的建立是系统开发者和用户反复讨论的结果,它描述了开发者和用户对需求规格所达成的共识。,9.6.1 用例图,一幅用例图包含的模型元素有系统、行为者、用例及用例之间的关系。 图9.17是自动售货机系统的用例图。 1. 系统 系统被看作是一个提供用例的黑盒子。 代表系统的方框的边线表示系统的边界,用于划定系统的功能范围,定义了系统所具有的功能。 描述该系统功能的用例置于方框内,代表外部实体的行为者置于方框外。,9.6.1 用

30、例图,9.6.1 用例图,2. 用例 一个用例是可以被行为者感受到的、系统的一个完整的功能。 在UML中把用例定义成系统完成的一系列动作,动作的结果能被特定的行为者察觉到。 用例通过关联与行为者连接,关联指出一个用例与哪些行为者交互,这种交互是双向的。,9.6.1 用例图,用例特征: (1) 用例代表某些用户可见的功能,实现一个具体的用户目标; (2) 用例总是被行为者启动的,并向行为者提供可识别的值; (3) 用例必须是完整的。用例的实例是系统的一种实际使用方法,通常把用例的实例称为脚本。,9.6.1 用例图,脚本是系统的一次具体执行过程。 例如,在自动售货机系统中,张三投入硬币购买矿泉水,

31、系统收到钱后把矿泉水送出来,上述过程就是一个脚本;李四投币买可乐,但是可乐已卖完了,于是系统给出提示信息并把钱退还给李四,这个过程是另一个脚本。,9.6.1 用例图,3. 行为者 行为者是指与系统交互的人或其他系统,它代表外部实体。使用用例并且与系统交互的任何人或物都是行为者。 行为者代表一种角色,而不是某个具体的人或物。事实上,一个具体的人可以充当多种不同角色。,9.6.1 用例图,4. 用例之间的关系 UML用例之间主要有扩展和使用两种关系,它们是泛化关系的两种不同形式。 (1) 扩展关系 向一个用例中添加一些动作后构成了另一个用例,这两个用例之间的关系就是扩展关系,后者继承前者的一些行为

32、。 例如,在自动售货机系统中,“售货”是一个基本的用例,如果顾客购买罐装饮料,售货功能完成得很顺利,但是,如果顾客要购买用纸杯装的散装饮料,则不能执行该用例提供的常规动作,而要做些改动。,9.6.1 用例图,我们可以修改售货用例,使之既能提供售罐装饮料的常规动作又能提供售散装饮料的非常规动作。 图9.18中把常规动作放在“售货”用例中,而把非常规动作放置于“售散装饮料”用例中,这两个用例之间的关系就是扩展关系。 在用例图中,用例之间的扩展关系图示为带版类扩展的泛化关系。,9.6.1 用例图,9.6.1 用例图,(2) 使用关系 当一个用例使用另一个用例时,这两个用例之间就构成了使用关系。 如果

33、在若干个用例中有某些相同的动作,则可以把这些相同的动作提取出来单独构成一个用例(称为抽象用例)。 这样,当某个用例使用该抽象用例时,就好像这个用例包含了抽象用例中的所有动作。在用例图中,用例之间的使用关系用带版类使用的泛化关系表示,如图9.18所示。,9.6.1 用例图,请注意扩展与使用之间的异同: 这两种关系都意味着从几个用例中抽取那些公共的行为并放入一个单独的用例中。 而这个用例被其他用例使用或扩展,但是,使用和扩展的目的是不同的。 通常在描述一般行为的变化时采用扩展关系; 在两个或多个用例中出现重复描述又想避免这种重复时,可以采用使用关系。,9.6.2 用例建模,获取用例是需求分析阶段的

34、主要工作之一,而且是首先要做的工作。 大部分用例将在项目的需求分析阶段产生,并且随着开发工作的深入还会发现更多用例,这些新发现的用例都应及时补充进已有的用例集中。 用例集中的每个用例都是对系统的一个潜在的需求。,9.6.2 用例建模,一个用例模型由若干幅用例图组成。创建用例模型的工作包括: 定义系统,寻找行为者和用例,描述用例,定义用例之间的关系,确认模型。其中,寻找行为者和用例是关键。 1. 寻找行为者 为获取用例首先要找出系统的行为者,可以通过请系统的用户回答一些问题的办法来发现行为者。下述问题有助于发现行为者: 谁将使用系统的主要功能(主行为者)? 谁需要借助系统的支持来完成日常工作?

35、谁来维护和管理系统(副行为者)? 系统控制哪些硬件设备?,9.6.2 用例建模,系统需要与哪些其他系统交互? 哪些人或系统对本系统产生的结果(值)感兴趣? 2. 寻找用例 一旦找到了行为者,就可以通过请每个行为者回答下述问题来获取用例: 行为者需要系统提供哪些功能?行为者自身需要做什么? 行为者是否需要读取、创建、删除、修改或存储系统中的某类信息? 系统中发生的事件需要通知行为者吗?行为者需要通知系统某些事情吗?从功能观点看,这些事件能做什么?,9.6.2 用例建模,行为者的日常工作是否因为系统的新功能而被简化或提高了效率? 还有一些不是针对具体行为者而是针对整个系统的问题,也能帮助建模者发现

36、用例,例如: 系统需要哪些输入输出?输入来自何处?输出到哪里去? 当前使用的系统(可能是人工系统)存在的主要问题是什么? 注意,最后这两个问题并不意味着没有行为者也可以有用例,只是在获取用例时还不知道行为者是谁。事实上,一个用例必须至少与一个行为者相关联。,9.7 3种模型之间的关系,在面向对象方法学中,对象模型是最基本最重要的,它为其他两种模型奠定了基础,我们依靠对象模型完成3种模型的集成。下面扼要地叙述3种模型之间的关系。,9.7 3种模型之间的关系,(1) 针对每个类建立的动态模型,描述了类实例的生命周期或运行周期。 (2) 状态转换驱使行为发生,这些行为在数据流图中被映射成处理,在用例

37、图中被映射成用例,它们同时与类图中的服务相对应。 (3) 功能模型中的处理(或用例)对应于对象模型中的类所提供的服务。通常,复杂的处理(或用例)对应于复杂对象提供的服务,简单的处理(或用例)对应于更基本的对象提供的服务。有时一个处理(或用例)对应多个服务,也有一个服务对应多个处理(或用例)的时候。,9.7 3种模型之间的关系,(4) 数据流图中的数据存储,以及数据的源点/终点,通常是对象模型中的对象。 (5) 数据流图中的数据流,往往是对象模型中对象的属性值,也可能是整个对象。 (6) 用例图中的行为者,可能是对象模型中的对象。 (7) 功能模型中的处理(或用例)可能产生动态模型中的事件。 (

38、8) 对象模型描述了数据流图中的数据流、数据存储以及数据源点/终点的结构。,9.8 小结,对于大型软件产品来说,面向对象范型明显优于结构化范型。 此外,使用面向对象范型能够开发出稳定性好、可重用性好和可维护性好的软件,这些都是面向对象方法学的突出优点。 面向对象方法学自然地模拟了人类认识客观世界的思维方式。,9.8 小结,面向对象方法学认为,客观世界由对象组成。 任何事物都是对象,每个对象都有自己的内部状态和运动规律,不同对象彼此间通过消息相互作用、相互联系,从而构成了目标软件系统。 系统中每个对象都属于一个特定的对象类。类是对具有相同属性和行为的一组相似对象的定义。 应该按照子类、父类的关系

39、,把众多的类进一步组织成一个层次系统,这样做了之后,如果不加特殊描述,则处于下一层次上的类可以自动继承位于上一层次的类的属性和行为。,9.8 小结,通常,人们从3个互不相同然而又密切相关的角度建立起3种不同的模型。它们分别是描述系统静态结构的对象模型、描述系统控制结构的动态模型、描述系统计算结构的功能模型。 对象模型是最基本、最核心、最重要的。 统一建模语言UML是国际对象管理组织OMG批准的基于面向对象技术的标准建模语言。 使用UML的类图来建立对象模型, 使用UML的状态图来建立动态模型, 使用数据流图或UML的用例图来建立功能模型。 在UML中把用用例图建立起来的系统模型称为用例模型。,9.8 小结,软件开发人员无须像用结构分析、设计技术那样,在开发过程的不同阶段转换概念和表示符号。 实际上,用面向对象方法开发软件时,阶段的划分是十分模糊的,通常在分析、设计和实现等阶段间多次迭代。 喷泉模型是典型的面向对象软件过程模型。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报