




已阅读5页,还剩154页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,面向对象的设计与技术,杨文川 北京邮电大学 2007年2月,(OOD提高篇),2,第三部分 分析(Analysis),面向对象的设计与技术,3,第六讲 分析工作流,面向对象的设计与技术,4,6.1分析工作流,分析开始于初始阶段结尾,是细化阶段的焦点。,需求,分析,设计,实现,测试,初步迭代,I1 I2,In In+1,Im Im+1,初始,细化,构造,移交,管理,配置,5,6.2 分析的目标,分析目标是产生分析模型 该模型关注系统需要做什么,但把系统如何做的细节留给设计工作流。,6,与需求、设计的关系,分析工作与需求捕获在很大程度上重叠。 实际上,这两种活动常常相辅相成为了澄清和找出任何遗漏或歪曲的需求,常常需要在需求之上作一些分析。 分析和设计的边界非常模糊,在一定程度上,个体分析师根据一些经验在他们认为恰当的地方分界。 一般认为分析主要负责理清“作什么”,设计负责“如何作”。,7,6.3分析工作细节流,8,6.4分析制品元模型,分析主要制品:分析类和用例实现,9,6.5 经验法则,中等系统的分析模型中大约有50-100个类。 捕获大的场面。 总是使用业务语言。 仅包含建模问题域词汇的类。 对尽可能多的利益相关人有用。 不作出实现的决定。 讲述有关期望系统的故事。 关注类的关联最小化耦合。 在存在自然抽象层次的地方使用继承。 保持简单,10,小结,本讲介绍分析工作流 分析模型捕获期望系统的基本需求和特征,是战略性的。 开始于初始阶段的结尾开始,贯穿整个细化阶段。 分析活动制品是分析类和用例实现 分析工作流包含构架,用例,类和包的分析 注意分析模型的若干经验法则,保持简单,11,12,第七讲 类和对象,面向对象的设计与技术,13,7.1 类,“共享相同属性、操作、方法、关系或者行为的一组对象的描述符” RumbaughUML参考手册 类是具有相同特征的一组对象的描述符 分类人类通常的思维方法 分类所依据的原则抽象 忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为一类,得出一个抽象的概念。,14,类的特点,抽象 封装 多态 继承,15,7.2 对象,“具有良好定义的,封装了状态和行为的边界的具体实体,类的实例” RumbaughUML参考手册 一般意义上的对象: 是现实世界中一个实际存在的事物、构成世界的一个独立单位 可以是有形的(如一辆汽车),也可是无形的(比如一项计划)。 具有静态特征:可以用某种数据来描述;动态特征:对象所表现的行为或具有的功能,16,对象的消息传递,17,7.3 类和对象,类和对象是“建模元素之间的联系” ,定义为instantiate关系 Rumbaugh UML参考手册,18,7.4UML类符号,名称分栏采用CamelCase格式 属性分栏可视性/多重性 操作分栏名称/参数/返回值,19,例子,20,7.5UML对象符号,单独的类名称表明具有一个匿名对象或者那个类的实例 例如:Account 单独的对象名称标识一个特定对象,但没有标识它是属于哪个类 例如jimsAccount 对象名称后接类名称,中间以冒号分隔。是类的一个实例 例如jimsAccount:Account,21,例子,22,7.6可视性(UML语义),public: 可访问该类的任何元素,可访问该类带有公共可视性的任何特征 private: 只有该类的操作才能访问,该类带有私有可视性的特征 protected : 只有该类及其子类的操作才能访问,该类有保护可观性特征 package : 可访问与该类处在相同包中的或者是在嵌套子包中的元素,可访问该类带有包可视性的任何特征,23,7.7范围,对象具有由它们的类所定义的属性的副本,因此不同对象能够具有不同属性值。 类范围特征为类的所有对象提供了一组全局特征。,24,类范围和实例范围的操作和属性,25,7.8对象构造和析构,类范围属性和操作的典型用法 构造函数新对象初始化的特殊类范围方法。 析构函数当销毁对象时,起清理作用方法 以C+为例子: 构造操作的名字与类相同,可以有多个 析构操作在类名前加,只有一个,26,小结,类定义了一组对象的特征(属性、操作、方法、关系和行为)。对象是一个类的实例,是数据和函数的内聚单元。 类有封装、抽象、多态,继承等特性 对象和类名称具有CamelCase格式。对象名称以小写字母打头,类名称以大写字母打头,对象名称和类名称之间以冒号隔开。 类有名称,属性,操作分栏,可视性和多重性。 实例范围的属性和操作运作在特定对象上,类范围属性和操作运作在对象的整个类上。 类的构造函数在创建新对象时初始化对象,析构函数在销毁对象时,起清理作用,27,28,第八讲 寻找分析类,面向对象的设计与技术,29,8.1 分析用例,分析用例产生分析类和用例实现,30,8.2 什么是分析类,分析类是这样的类: 它代表问题域中的简洁抽象,问题域是首先产生软件系统需求的域。 使用清晰的和无歧义的方法映射到某个真实世界业务概念 注意 分析模型中的所有类都是分析类,而不是从设计考虑而产生的类。 当进行详细设计时,可能发现一个分析类被精化为一个或多个设计类。,31,8.3 分析类剖析,分析类展示“高级层次”的属性集合,为设计类捕获候选属性, 避免实现细节。 分析类的最小形式由以下部分组成: 名称这是强制的。 属性只有候选属性的重要子集在此时建模 操作仅是类职责的高级层次的陈述 可视性通常不显示。 构造型增强模型时才显示。 标记值增强模型时才显示。,32,例子,分析类的思想是:尽力捕获抽象的本质,忽略实现细节,33,8.4产生良好分析类的方法,名称反映目的。 是建模问题域的一个特定元素的简洁的抽象。 清晰地映射到问题域中的可识别的特征。 具有小的、良好定义的职责集合。 高内聚。 低耦合。,34,8.5分析类经验法则,每个类大约3-5个职责类应该尽可能保持简单 不存在独立的类类相互协作以使用户受益 当心很多非常小的类整合成更大的类。 当心少数非常庞大的类分解成小的类。 当心“伪类”伪类其实是一般的过程函数 当心万能类分解成内聚的子集 避免深度继承树继承仅用在存在直接产生于问题域的、清晰的、显而易见的继承层次的场合。,35,8.6寻找分析类,“不存在找出恰当分析类的简单算法,如果这样的算法存在,那么意味着存在没有错误的方法来设计OO软件”。 Meyer,Object Oriented Software Construction 我们将采用导致良好答案的已尝试和已测试的技术,包括分析文本和采访用户领域专家,36,8.6.1使用名词/动词分析,名词/动词分析是分析文本尝试找出类、属性和职责的的方法。基本上,文本中名词和名词短语暗示类或类的属性,动词和动词短语暗示职责或者类的操作。 分析方法步骤: 尽可能多地收集相关信息。 在收集文档之后,简单分析其中的名词、动词 把词语加入到项目词汇表中,澄清不理解的术语 把属性和职责分配给类。 产生初步类模型,通过进一步分析来精化它。,37,文档来源,合适的信息来源是: 补充需求规格说明(如果有)。 用例。 项目词汇表。 任何其他信息源(构架、远景文档等)。,38,8.6.2使用CRC分析寻找类,CRC(Class Responsibility Cooperate) 类 职责 协作方,39,便签,使用最有力的分析工具便笺: OO分析师、利益相关人和领域专家收集信息 把所有的想法记录下来而不争论 尝试识别可能一起工作的类 OO分析师和领域专家分析信息 特定便笺需要成为类 其他便笺可成为类的属性。 精化类,40,8.6.3其他方法寻找类,物理客体 文档 外部世界已知的接口 概念实体,41,8.7创建初步分析模型,将分析结果整合成单一UML模型 做法是: 比较所有的三种信息来源 整合出分析类、属性和职责,并输入CASE工具。 协作方代表类间的关系 按照标准命名约定改进类、属性和职责命名。 输出一组分析类和初步分析模型,42,小结,在本章描述了什么是分析类 UP活动“分析用例”输出分析类和用例实现。 分析类表示问题域中简洁、良好定义的抽象,问题域是产生软件系统需求的域。 分析类应该以清晰的、无歧义的方式映射到真实世界业务概念。 分析类包括一组高级候选属性和一组高级操作。 怎样产生好的分析类以及如何避免产生坏的分析类 如何使用名词/动词分析、CRC脑力风暴以及检查分析类的其他来源来找出分析类。 如何构建初步分析模型。,43,44,第九讲 关系,面向对象的设计与技术,45,9.1关系,关系是建模元素之间的语义(有意义)联系,是UML把物件联系到一起的方法。 关系包括:链接、关联、泛化和继承 我们先讲述链接和关联: 对象间的联系被称为链接 类间的联系被称为关联 对象间链接实际上是它们类间关联的实例,46,9.2链接,链接是两个对象之间的语义联系,它允许消息从一个对象发送到另一个对象。 OO执行系统包含很多来来往往的对象和连接这些对象的链接。 一旦接收到消息,对象将调用相应的方法。 链接包括单向链接(箭头)和双向链接(直线)。 不同的OO语言以不同的方法实现链接,对象图及路径,48,9.3关联,关联是类间的关系,链接依赖于关联 如果对象间存在链接,其类间必定存在关联 可用instantiate构造型化依赖,49,9.3.1关联语法,关联可以具有: 关联名称。 角色名称。 多重性。 导航性。,例子,51,9.4.2多重性,多重性约束在任意时刻涉及特定关系的类对象数目 多重约束在模型中编码关键业务规则。 这些规则被“深埋”在模型的细节之中。称做“平凡化(trivialization)”。 多重性被说明为用逗号分隔的区间,每个区间具有以下形式: minimummaximum,52,例子,53,自反关联,表示该类的对象具有到该类的其他对象的链接,54,9.4.3层次和网络,层次具有一个根对象,其他节点的直接上方恰有一个对象 网络中不存在根对象,节点间没有优先关系,形成了复杂的节点网络,55,例子,56,9.4.4导航,导航性表明可从源类的任何对象到目标类的一个或多个对象(根据多重性确定的)遍历。 导航性的意义是“消息仅能够在箭头的方向上传递”。 使用导航性是最小化类间耦合一种良好做法。 注意: 即使关系在特定方向上不能导航,仍可能在该方向上遍历关系。然而,遍历的计算成本可能非常高。,57,例子,导航性暗示源对象承载了到目标对象的引用。源对象可以使用该对象引用发送消息到目标对象。,58,9.4.5关联和属性,在类关联和类属性之间存在紧密联系。 源类和目标类之间的关联意味着源类的对象能够承载到目标类对象的对象引用。 等价于源类具有目标类的一个伪属性。源类的对象能够使用这个伪属性引用目标类的对象,59,例子,上述模型产生的Java代码: public class House private Address address; ,60,9.4.6关联类,当类间具有多对多关系时,可能存在一些属性不容易地放入任何一个类中 UML允许你使用关联类来建模这种情况 关联类既是关联又是类, 关联类能够具有属性、操作和其他关联。 关联类的实例是具有属性和操作的链接。 当每个链接具有唯一标识时,才使用关联类,61,例子,62,9.4.7受限关联,受限关联通过指定目标集合的唯一对象(或一组对象)把多对多关联削减为多对一关联。 它是常用的建模元素,演示了关系如何从集合中查找或导航特定对象。 受限关联是使用唯一键从整个集合中选定特殊对象的方法。 限定符通常提及目标类的属性,以及可理解的一些其他表达式。,63,例子,64,9.5什么是依赖,“依赖是两个元素之间的关系,对一个元素(提供者)的改变可能影响或提供信息给其他元素(客户)” RumbaughUML参考手册 依赖发生在类间,包和包,对象和类之间,也可以出现在操作和类之间。 四种基本依赖类型。 Usage(使用) Abstraction(抽象) Permission(授权) Binding(绑定),65,9.5.1使用依赖,use依赖是类间最普遍的依赖,下列任何一种情况产生这个依赖。 (1)类A的操作需要类B的参数。 (2)类A的操作返回类B的值。 (3)类A的操作在实现中使用类B的对象,但不是作为属性来使用的。,66,其他类型使用依赖,call这是操作之间的依赖,客户操作调用提供者操作。 parameter这是操作和类之间的依赖。提供者是客户操作上的参数或返回值。 send客户把提供者(它必须是信号)发送到非指定的目标。用于在客户和目标之间传输数据。 instantiate客户是提供者的实例。,67,9.5.2抽象依赖,抽象依赖建模依赖于在不同抽象层次上的物件。 trace依赖演示元素间的一般联系,其中提供者和客户处在开发中的不同位置。 refine是相同模型中元素之间的依赖,用于优化性能。 derive显示地表示一个物件能够以某种方式从其他物件派生而来。,68,例子,69,9.5.3授权依赖,授权依赖表达一个物件访问另一个物件的能力。 access是包间依赖。包用在UML中来分组物件。 import是与access概念相似的依赖,但提供者的命名空间被整合到客户的命名空间中。 friend允许在非常紧密相关的两个类间,客户类访问提供者私有成员。,70,小结,在本章介绍了关系,关系是物件之间的语义联系,包括以下内容。 对象之间的联系被称为链接。对象图展现特定时刻的对象以及它们之间的链接。 路径是连接UML建模元素的连线: 关联是类间的语义联系,导航性表明能够在箭头的方向上遍历关系,多重性表明在任意时刻关系所能够涉及的对象数目。 关联类既是关联又是类,受限关联使用限定符从目标集中选择唯一对象 依赖是两个元素之间的关系,包括使用依赖,抽象依赖,授权依赖,71,72,第十讲 继承和多态,面向对象的设计与技术,73,10.1 继承和多态,继承inherit 子类继承父类的特征 多态polymorph 子类对同一动作的不同反应,74,10.2泛化,泛化是一般物件和特殊物件之间的关系 泛化表示两个元素之间最高层次的依赖,适用于所有的类元以及建模元素,如关联、状态、事件和协作。 分析类的详细属性和操作时,两种方法获得类间的层次通过特化过程或者泛化过程。 OO分析倾向于同时使用特化和泛化,尽管如此,以我们的经验,锻炼我们自身在分析过程中尽早地知道更加一般的情况是明智的。,例子,特化: 在分析中先识别一般概念Shape,然后根据Shape的特殊类型特化它。 泛化:先在分析中识别特殊概念Square、Circle和Triangle,然后注意到它们都具有某些公共特征,把这些公共特征抽取出来成为一般的超类。,76,10.3类继承,当类组织成泛化层次后,类间隐式地具有继承关系,子类继承了其超类的所有特征。 这些继承特征包括: 属性 操作 关系 约束 子类同样能够添加新特征以及覆盖超类的操作。,77,10.3.1覆盖,为覆盖超类操作,子类必须提供与想要重载超类操作具有完全相同签名的操作,即具有相同的操作名称、返回类型以及按照顺序列出的所有参数类型。,78,例子,79,10.3.2抽象操作和类,在子类中延迟操作实现。 可以说明缺乏实现的操作,使它成为抽象操作。 被称做抽象类,不能实例化这样的类 使用抽象类和抽象操作有两大优点。 在抽象超类中定义一组抽象操作,具体子类必须实现。 可替换性原则,为操纵父类而书写的代码可被子类替代。,80,例子,81,10.3.3抽象层次,泛化层次定义了从顶部最一般的到底部最特殊的一组抽象层次。 应该总是尽力维护泛化层次中每个层次上统一的抽象层次。,82,10.4多态,多态的意思是同一操作具有多种实现。 多态允许你设计能够更加容易适应变化的简单系统,因为它允许你以相同的方式对待不同的对象。 实际上使多态成为OO的一个基本方面是它允许你给不同类的对象发送相同消息,对象能够作出正确的响应。 封装、继承和多态是OO的“三根支柱”。,83,例子,84,小结,本讲描述类继承和多态 泛化是一般物件和特殊物件之间的关系 类继承发生在存在泛化关系的类之间。 子类可以添加新特征,覆盖已继承的操作: 多态就是“多种形态”。它允许你使用抽象类来设计系统,然后在运行时替换成具体的子类,使得系统非常灵活和容易扩展。,85,86,第十一讲 分析包,面向对象的设计与技术,87,11.1什么是包,包是把包元素和图组织到组中的通用机制。每个包具有它自身的名字空间,它用于: 分组语义上相关的元素。 定义模型中“语义边界”。 提供配置管理单元。 在设计中,提供并行工作的单元。 提供封装的名字空间,其中所有名称必须唯一。,88,11.2分析包,UML包的语法非常直接,包图标是文件夹。 分析包可以包含: 用例。 分析类。 用例实现。,89,例子,90,11.3包依赖,包通过依赖彼此相关。 包定义了封装的名字空间。它的真正意义是包创建了边界,其中所有元素名称必须唯一。 同时,它也意味着,一个名字空间中的元素引用另一个名字空间的元素,必须说明所需的元素名称以及通过嵌套名字空间导航到可以找到所需元素的名字空间的方法。这就是元素的路径名。,四种不同类型包依赖的语义,92,11.4传递性,传递性是用于关系的术语,这意味着,如果物件A和物件B间存在关系,物件B和物件C间存在关系,那么物件只和物件C间隐式地存在关系。 注意 access包关系与import包关系没有传递性,这允许你主动管理和控制模型中的耦合和内聚,不能访问或导入任何东西,除非显式地访问和导入。,93,例子,包A中的元素可以看到包B中的元素。 包B中的元素可以看到包C中的元素。 包A中的元素不能看到包C中的元素。,94,11.5嵌套包,包可以在任何深度被嵌套到另一个包中。 嵌套包能够看见它的外层包的所有公共元素。外层包不能看见嵌套包的任何元素。 注意:如果存在太多嵌套层次,模型变得难以理解和定位。,95,两种嵌套表示方法,96,11.6包泛化,在包泛化中,特殊子包继承了父包的所有公共元素和保护元素。子包可以添加新元素以及通过提供相同名称实现覆盖父包中的元素。 就像类继承一样,包继承必须适用可替换性原则。,97,例子,98,11.7包构造型,UML为特定目的提供一些标准构造型以裁剪包的语义,如下表所示,99,11.8架构分析,在构架分析中,所有分析类被组织成一组内聚的分析包,进一步组织成分区和层。 构架分析的一个目的是尽力最小化系统中耦合的数量。有三种方法可以做到: 最小化分析包间的依赖。 最小化每个分析包中的公共元素和保护元素的数目。 最大化每个分析包中的私有元素的数目。,100,削减耦合,削减耦合是构架分析中最重要的考虑之一,因为表示出高度耦合的系统是复杂的和难以构造和维护的。你应该总是尽力保持必须的最小耦合。 随着模型深入到设计模型时,层的数目将增加。然而,在分析中,你可以只把包组织成为特定应用和一般应用两层。特定应用层包含对特定应用来说完全特殊的功能。,101,11.8.1寻找分析包,通过识别具有很强语义联系的建模元素的分组找出分析包。 分析包必须反映元素真实的语义分组,静态模型是包的最有用来源,包括: 类图中类的内聚集群。 继承层次。,102,良好包结构的关键,包内高内聚,包间低耦合。 包应该包含一组紧密相关的类。 类通过继承最紧密相关,组合次之,然后是聚合,最后是依赖。 应该最小化包的公共和保护成员以及包间的依赖,做法是: 在包间移动类。 添加包。 删除包。,103,11.8.2包循环依赖,尽量避免分析包模型中的循环依赖。 如果包A以某种方式依赖包B,并且包B以某种方式依赖包A,就存在非常强有力的证据来合并这两个包,这是消除循环依赖非常有效的方法。 但是经常起作用的、更好的方法是努力分解公共元素成为第三个包已重新计算依赖关系以消除循环依赖。,104,例子,确定具有相互依赖的类通常应该处在相同包中,105,小结,本讲介绍分析包,包是UML的分组机制,服务于很多目标,提供了封装的名字空间。 每个建模元素恰属于一个包,分析包可以包含用例,分析类,用例实现。 包元素可以具有可视性,用于控制包间耦合。 包间的依赖关系表示客户包以某种方式依赖提供者包的公共元素。 包泛化与类泛化非常相似。 构架分析是把分析类的内聚集合分区为分析包。 首先要寻找分析包,精化包模型以最大化包内的内聚和最小化包间的依赖,106,107,第十二讲 用例实现,面向对象的设计与技术,108,12.1 用例实现,先前几章中学习了如何产生“分析用例”活动的分析类制品,这个活动产生的第二个制品是用例实现。 分析类建模系统的静态结构,用例实现表示分析类的实例如何交互以实现系统的功能。这是系统的动态视图部分。,109,12.2 UP活动:分析用例,110,12.3什么是用例实现,找出分析类之后,分析的关键是找出用例实现。 用例实现由一组类所组成,这些类实现了用例中所说明的行为。 需要创建用例实现以演示这些类和这些类的对象是如何交互以实现由系统所说明的行为。 这样,你把用例(它是功能性需求的规格说明)转换成类图和交互图(它是系统高级层次的规格说明)。,111,例子,尽管UML提供了用于用例实现的记号,但极少被显式地建模。设计者仅添加恰当的元素到CASE工具中确保用例实现隐式出现。,112,12.4用例实现元素,用例实现包括: 分析类图 表示交互以实现用例的分析类 交互图 表示实现用例的特定实例之间的协作和交互,是运行系统的“快照” 特殊需求 用例实现过程可以为用例揭示新的特殊需求,它们必须被捕获 用例精化 在实现过程可以发现新的信息这意味着必须更新原始用例,113,12.5交互图,UML交互图建模实现用例或者部分实现用例的对象间的协作和交互,包括协作图和顺序图。 协作图强调对象间的结构关系,在分析中非常有用,尤其对于创建对象间协作的草图。 顺序图强调对象发送消息的时序。用户能够比协作图更好地理解顺序图,因为它们更加容易阅读。 协作图和顺序图是相同底层UML模型的两种不同视图,有两种形式。 描述符形式这描述了类元实例在系统中所扮演的角色之间的协作和交互。 实例形式这描述了实际类元实例之间的协作和交互。,114,12.6协作和交互,协作描述实例间关系以及在那些关系中实例所扮演的角色的静态集合。 交互描述实例间的动态交互。它描述实例间传递的消息。在实例能够交互、传递消息之前,它们必须具有关系因此,交互仅能出现在协作的语境中。 角色是事物表现或被使用的方式。除了实例和链接,交互图可以具有类元角色(它定义类元实例被使用的方式)和关联角色(它定义关联(链接)实例被使用的方式)。,115,12.7协作图,协作图关注对象交互的结构方面,有两种形式: 描述符形式: 通过说明实例所扮演的角色(类元角色),提供协作非常普遍的视角。同时,它也说明这些角色之间的关系。 实例形式: 实例形式协作图要具体得多。它表示实际类元实例(通常是对象)以及这些实例之间的链接。实例形式协作图是最有用和最广泛使用的。,116,12.7.1描述符形式的协作图,描述符形式协作图表示由类元的末指定实例(通常是类)所扮演的角色和末指定实例的关联(链接)所扮演的角色。 它不显示特定实例或链接。如果你想要以非常通用的方式建模协作,它非常有用。,117,例子,斜线必须总是前缀于角色名称之前,冒号必须总是前缀子类元名称之前。角色名称和类元名称都是可选的,但是其中之一必须出现。,118,12.7.2实例形式的协作图,实例形式的协作图表示类元实例之间的协作。这些实例由链接联系起来。 实例形式协作图显示在特定时刻协作的特定实例。它们就像OO运行系统的快照,119,例子,斜线总是前缀子类元角色名称之前,冒号总是前缀子类元名称之前。这个名称的所有部分都是可选的。但其中之一必须出现。,12.7.3对象交互,为了有效地使用描述符形式或者实例形式的协作图作为用例实现的组成部分,需要显示特别是系统中的对象是如何实现用例所说明的行为。 通过给协作图添加交互可以做到。,例子,122,12.7.4多重对象,多重对象代表一组对象,它提供在协作图中表示对象集合的方法。发送到多重对象的消息被传递给整个集合,而不是任何个体对象。 在分析中假设多重对象能发送以下消息: find(uniqueIdentifier)给定参数唯一标识符,返回特定对象。 includes(anObject)如果多重对象包含对象anobject,返回true。 count()返回多重对象中对象的数目。,例子,124,12.7.5迭代,通过在顺序编号前缀迭代符(*)和一个可选的迭代表达式可以表示迭代 下面是一些通用表达式。,例子,126,12.7.6分支和自委托,分支是能够在消息前简单地添加条件建模分支,当条件计算为真时才发送消息 自委托发生在对象调用自身时。 在协作图中清晰地表示分支非常困难,条件似乎扩散到整幅图并且图很快就会变得复杂。,例子,128,12.7.7并发性活动对象,用协作图容易建模并发。基本原则是每个控制线程或并发送程被建模为活动对象。对象封装了它本身的控制线程。 活动对象并发执行,每个活动对象同时具有控制焦点。活动对象绘制出来就像通常的对象,但是带有粗边框。如果需要,特性关键字active也可以被包含到对象方框中。,例子,130,12.7.8对象状态,“对象生命期中的条件和状况,在此期间,它满足某种条件、执行某种活动或者等待某种事件”。 RumbaughUML参考手册 状态是一个显著的对象条件,依赖于对象属性值、对象到其他对象的链接或正在执行的活动。 消息常常引起对象经历从一个状态到另一个状态的迁移。,131,例子,通过使用实例形式协作图表示对象为了响应消息如何在状态间经历迁移。对象状态可以显示在对象名称后,用方括号括起来。,132,12.8顺序图,顺序图表示以时间序列安排的对象交互。它与协作图是同构的,它包括相同的元素,加上两个额外元素对象生命线和控制焦点。 在协作图中,顺序编号的嵌套表示控制焦点,但在顺序图中,我们能够更加清晰更加显式地显示控制流,控制流也被称做激活。 顺序图的时间顺序是从顶部到底部的,从左到右是实例。,133,例子,134,12.8.1迭代,通过把重复的一组消息封套在方框中并且把迭代表达式放置在该方框下方,可以显示顺序图上的迭代,135,12.8.2分支和自委托,顺序图表现分支比协作图更加清晰,12.8.3并发性活动对象,137,12.8.4对象状态和约束,使用顺序图能够显示对象如何随着时间推移改变状态,也可标记时间轴上的特定点,以表达定时约束。,138,小结,本讲介绍用例实现,这是分析过程的基础部分。 用例实现显示分析类的实例是如何交互以实现由用例所说明的功能需求。 交互图可以有描述符形式或实例形式。 有两种同构的交互图:协作图,顺序图。 顺序图强调实例间的交互。 交互图描述实例间的交互 如何描述迭代,分支,并发 在对象生命线上的恰当位置使用状态图标表示对象状态和约束,139,140,第十三讲 活动图,面向对象的设计与技术,141,13.1什么是活动图,活动图是“OO流程图”。它们使你能把过程建模为活动以及在活动之间迁移的集合。 活动图实际上是状态图的特殊形式,其中每个状态具有入口动作,它说明当进入该状态时发生的某个过程或者函数。 活动图能够附加到任何建模元素以建模那个元素的行为。活动图典型被附加到: 用例。 类。 接口。 组件。 节点。 协作。 操作和方法。,142,13.2 活动图,使用活动图建模业务过程和工作流非常有利。 好的活动图的本质是关注读者与系统动态行为的一个特定方面的通信。同样,它必须处在正确的抽象层次与目标观众通信。 活动图必须包含通信所需的最少信息。使用对象状态和对象流等来修饰活动图。,143,13.3动作状态,活动图包括动作状态和子活动状态。 动作状态是活动图最小粒度的构造块,并且表示动作。 动作状态表示为带有圆端的方框。动作表达式表示该状态的入口动作。 动作是: 原子的不能被分解成更小的部分。 不可中断的一旦开始这件工作,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年文化馆文化演出策划师招聘面试模拟题及答案
- 圆的认识教学设计与课件
- 2025年生物实验员面试模拟试卷本科院校及答案
- 2025年仓储管理师库存管理考试题
- 2025年电子商务推广专家考试试题及答案解析
- 2025年新能源汽车销售顾问考试题库
- 说礼貌语做文明事课件
- 机油培训知识课件
- 2025年喷漆安全操作测试题及答案集
- 清溪县急救知识培训课件
- 城市照明设计案例赏析
- 2025年高考生物辽宁卷真题解读及复习备考指导(黑龙江吉林内蒙古适用)
- 新媒体视听节目制作
- 数字化教学环境下小学语文板书设计优化策略
- JG/T 237-2008混凝土试模
- JG/T 232-2008卫浴型散热器
- 灭火员初级习题库
- T/CAQP 001-2017汽车零部件质量追溯体系规范
- 燃气入户可行性报告
- 技术赋能医疗创新-深入解析数字化口腔诊所建设指南
- 眼内炎护理疑难病例讨论
评论
0/150
提交评论