软件工程导论class14面向对象方法学引论



《软件工程导论class14面向对象方法学引论》由会员分享,可在线阅读,更多相关《软件工程导论class14面向对象方法学引论(55页珍藏版)》请在装配图网上搜索。
1、,,单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,,,*,,,单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,,,*,软件工程导论第,14,课,9.4.2,表示关系的符号,,9.4.2,表示关系的符号,类与类之间通常有,关联、泛化(继承)、依赖,和,细化,等,4,种关系,,1,关联,,关联表示两个类的对象之间存在某种语义上的联系,,,,,,9.4.2,表示关系的符号,普通关联:,,最常见的关联关系,只要在类与类之间存在连接关系就可以用普通关联表示。,,例如,作家使用计算机,我们就认为在作家和计
2、算机之间存在某种语义连接,因此在类图中应该在作家类和计算机类之间建立关 联关系,,,,,,,,,黑三角表示关联方向,,,(2),关联的角色,在任何关联中都会涉及到参与此关联的对象所扮演的角色, 在某些情况下,显式标明角色,名有助于别人理解类图,,例:一个人与另一个人结婚,必然一个人扮演丈夫的角色, 另一个人扮演妻子的角色。如果没有显式标出角色名,则意 味着用类名作为角色名。,,,,,(3),限定关联,,(3),限定关联,,(3),限定关联,限定关联通常在一对多或多对多的关联关系中,可以把模型中的 重数从一对多变成一对一,或从多对多简化成多对一,,例如,某操作系统中一个目录下有许多文件,一个文件
3、仅属于一 个目录,在一个目录内文件名确定了惟一一个文件。,,可见,利用限定词把一对多关系简化成了一对一关系,,图,9.7,查找,,目录,->文件名->文件,,,,,,(4),关联类,①为了说明关联的性质可能需要一些附加信息,可以引入一个关联类来记录这些信息。,,②关联中的每个连接与关联类的一个对象相联系。关联类通过一条虚线与关联连接。,,图,9.8,有,4个连接,每个,,连接都对应一个队列,,2,聚集,聚集也称为聚合,是关联的特例。聚集表示类与类之间的关系是,整体和部分,的关系。,,在陈述需求时使用的,“包含”、“组成”、“分为,……,部分”,等字句,往往意味着存在聚集关系。除了一般聚集之外,
4、还有两种 特殊的聚集关系,分别是共享聚集和组合聚集。,,,,(1),共享聚集,如果在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为共享聚集。,,一般,聚集和,共享,聚集的图示符号,都是在表示关联关系的直线未端,紧挨整体类的地方画一个空心的菱形,,,,(2)组合聚集,如果,部分类完全隶属于整,,体类,,部分与整体共存,,,整体不存在了 部分也会随,,之消失(或失去存在的价,,值了),则该聚集称为组合聚集(简称为组成)。,,例如,在屏幕上打开一个窗口,它由文本框、列表框、按钮和菜 单组成,一旦关闭了窗口,各个组成部分也同时消失,窗口和它的组成部分之间存在着组合聚集关系,
5、,组成关系用实心菱形表示,,,,3,泛化,在,UML,中的,泛化关系,就是通常所说的,继承关系,,它是通用元素和具体元素之间的一种分类关系。,,具体元素完全拥有通用元素的信息,并且还可以附加一些其他信息。,,③ 泛化针对类型而不针对实例,一个类可以继承另一个类,但一个对象不能继承另一个对象。,,④ 实际上,泛化关系指出在类与类之间存在“一般-特殊”关系。,,⑤ 泛化可进一步划分成,普通泛化,和,受限泛化,。,,,,,,(1),普通泛化,需要特别说明的是没有具体对象的类称为抽象类,,抽象类通常作为父类,用于描述其他类(子类)的公共属性和 行为。图示抽象类时,在类名下方附加一个标记值,{abstr
6、act},,操作的图示方法,在标记后面跟一个性质串,{abstract},,,,,例子:一副工程蓝图由许多图形组成,图形可以是直线,圆, 多边形或组合图,而多边形由直线组成,组合图由各种线型混合而成,,,,(2),受限泛化,可以给泛化关系,附加约束条件,,以进一步说明该泛化关系的使用方法或扩充方法,这样的泛化关系称为受限泛化,,预定义的约束有4种:,多重,不相交,完全和不完全,,这些约束都是,语义约束,。,,,,,,,,多重继承,指的是,,一个子类可以同时多次继承同一个上层基类。与多重继承相反是,不相交继承,,,完全继承,指的是,父类的所有子类都已在图中穷举,,不完全继承,指的是,父类的所有子
7、类没有都穷举出来,,,,,,4,依赖和细化,(1),依赖关系:依赖关系描述两个模型元素之间的语义连接关系,其 中一个模型元素是独立的,另一个模型元素不是独立的,如果独立的模型元素改变,将影响依赖于它的模型元素。,,箭头指向独立的类,,(2),细化关系:当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。,,箭头由更详细层指向上层,,,,,9.5,动态模型,动态模型表示,瞬时的,行为化,的系统的“控制”性质,,,它规定了对象模型中的对象的合法,变化,序列。,,状态,是任何可以被观察到的系统,行为模式,,,,每个类的动态行为用一张状态图来描绘,, 各个类的状态图通过共享事件合并起来,
8、从而构成系统 的动态模型,, 动态模型是基于事件共享而互相关联的一组状态图的集 合,,,,,动态模型的三要素:,,①,事件,(event),:引发对象状态改变的控制信息(瞬时),,②,状态,(status),:即对象的属性所处的情形(可持续),,③,行为,(action),:对象要达到某种状态所做的操作(耗时),,,,注意,:,,状态图:适合描述跨越多个用例的单个对象的行为,不适合描述多个对象之间的协作行为,, 不应对系统中的每个类都画状态图,而只应对某些 关键类建立状态图;而且应将状态图与其它技术组 合使用,,,9.6,功能模型,表示变化的系统的“,功能,”性质,它指明了系统应该“做什么
9、”,因此更直接地反映了用户对目标系统的需求,,功能模型由一组数据流图组成,在面向对象方法学中,数据流图 远不如在结构分析设计方法中那样重要,,② 一般说来,与对象模型和动态模型比较,数据流图并没有增加新 的信息,,UML,提供的用例图也是进行需求分析和建立功能模块的强有力工具,在,UML,中把用用例图建立起来的系统模型成为,用例模型,。,,,,9.6.1,用例图,用例图包含的模型元素,:,系统,,,,行为者,,,用例,及,用例之间,,的,关 系,.,,图中的,方框,代表,系统,,,,椭圆,代表,用例,,,,线条人,代表,行为者,,它们之间的,连线,表示,关系,,,,,,1系统,,系统被看作是一
10、个提供用例的黑盒子,内部如何工作,用例如何实现,这些对于建立用例模型来说都是不重要的。,,系统的方框边线表示系统的,边界,,划定系统的,功能范围,,描述系统功能的用例置于方框内。行为者置于方框外。,,,,,,2用例,,用例是可以被行为者感受到的,系统的一个完整的功能,,在,UML,中把用例,定义,成,系统完成的一系列动作,,动作的结果能被特定的行为者察觉到。,,用例具有下述特征:,,(1),用例代表某些用户可见的功能,实现一个具体用户目标,,(2),用例总是被行为者启动的,并向行为者提供可识别的,,(3),用例必须是完整的,,,,,,,,2用例,,用例是一个类,它代表一类功能而,不是使用该功能
11、的某个具体实例,。,,用例的实例是系统的一种实际使用方法,通常把用例的实例称为脚本。 脚本是系统的一次具体执行过程,,例如,在自动售货机系统中,张三投入硬币购买矿泉水,系统收到钱后把矿泉水送出来,上述过程就是,一个脚本,;李四投币买可乐,但是可乐卖完了,于是系统给出提示信息并把钱退还给李四,这个过程是,另一个脚本,。,,,,3行为者,,行为者,是指与系统交互的人或其他系统,它代表,外部实体,。使用用例并且与系统交互的任何人或物都是行为者。,,行为者代表一种,角色,,而不是某个具体的人或物,,例如,在自动售货机系统中,使用售货功能的人既可以是张三 (买矿泉水)也可以是李四的(买可乐),但是不能把
12、张三或李四这样的个体对象称为行为者。,,直线,连接行为者和用例,表示两者之间交换信息,称为,通信联系,。行为者触发用例,并与用例交换信息,,,,,,,,,,4用例之间的关系,,uml1.1,中有两种用例关系,,>,关系和,>,关系,,它们都是泛化(,generalization,)关系的构造型(,stereotype,),,uml1.3,之后,提供了三种用例关系,,>,关系、,>,关系都是依赖(,dependency,)关系的构造型(,stereotype,),,泛化关系(,generalization,),,,,,,(1),扩展关系,向一个用例中,添加,一些动作后构成了另一个用例,,,这两个
13、用例之间的关系就是扩展关系,,,后者称为扩展用例。,,例如,,,在自动售货机系统中,,,”售货”是一个基本的用例,,,如果顾客购买罐装饮料,,,顺利实现。而买散装饮料则不行,买散装饮料是非常规动作。把非常规动作放置于”售散装饮料”用例中,,,这两个用例之间关系就是扩展关系,,,(2),使用关系,当一个用例使用另一个用例时,,,这两个用例之间就构成了,使用关系,,一般说来,,,如果在若干个用例中有某些相同的动作,,,则可以把这些相同的动作提取出来单独构成一个用例,(,成为抽象用例,),。,,例如,,,在自动售货机系统中,,,”供货”和”取货款”都要先打开机器,结束后关闭机器。把打开机器抽象成”打
14、开机器” 用例,,,把最后的动作抽象成”关闭机器”用例。,,注意:,通常在描述一般行为的变化时采用扩展关系,;,在两个或多个用例中出现重复描述又想避免这种重复时,,,可以采用使用关系,,,,,,9.6.2,用例建模,一个用例模型由若干幅用例图组成,,创建用例模型的工作包括,:,,定义系统,,,寻找行为者和用例,,② 描述用例,,,定义用例之间的关系,,③ 确认模型。,,其中,,,寻找行为者和用例是关键,。,,,,,,,1.,寻找行为者,通过请系统的用户回答一些问题的办法来发现行为者,下述问题有助于发现行为者,:,,谁将使用系统的主要功能,(,主行为者,)?,,谁需要借助系统的支持来完成日常工作
15、,?,,谁来维护和管理系统,(,副行为者,)?,,系统控制哪些硬件设备,?,,系统需要与哪些其他系统交互,?,,哪些人或系统对本系统产生的结果,(,值,),感兴趣,?,,,,,,,,,2.,寻找用例,一旦找到了行为者,,,就可以通过请每个行为者回答下述问题来获取用例,:,,行为者需要系统提供哪些功能,?,行为者自身需要做什么,?,,行为者是否需要读取,,,创建,,,删除,,,修改或存储系统中的某类信息,?,,系统中发生的事件需要通知行为者吗,?,行为者需要通知系统某些事情吗,?,,从功能观点看,,,这些事件能做什么,?,,行为者的日常工作是否因为系统的新功能而被简化或提高了效率,?,,系统需要
16、哪些输入输出,?,输入来自何处,?,输出到哪里去,?,,当前使用的系统,(,可能是人工系统,),存在的主要问题是什么,?,,,,,,,,9.6.2,用例建模,,9.6.2,用例建模,,,9.7,三种模型之间的关系,三种模型之间关系,,FM,:功能模型做什么,What,,DM,:动态模型何时做,When,,OM,:对象模型操作的实体,How,,,,,9.7,三种模型之间的关系,(1),针对每个类建立的动态模型,,,描述了类实例的生命周期或运行周期。,,(2),状态转换驱使行为发生,,,这些行为在数据流图中被映射成处理,,,在用例图中被映射成用例,,,它们同时与类图中的服务相对应。,,(3),功能
17、模型中的处理,(,或用例,),对应于对象模型中的类所提供的服务。,,(4),数据流图中的数据存储,,,以及数据的源点,/,终点,,,通常是对象模型中的对象。,,9.7,三种模型之间的关系,(5),数据流图中的数据流,,,往往是对象模型中对象的属性值,,,也可能是整个对象。,,(6),用例图中的行为者,,,可能是对象模型中的对象。,,(7),功能模型中的处理,(,或用例,),可能产生动态模型中的事件。,,(8),对象模型描述了数据流图中的数据流,,,数据存储以及数据源点,/,终点的结构。,,第,10章,面向对象分析,分析的过程是提取,系统需求,的过程,,分析凶包括,3项内容:,理解、表达、验证,
18、,面向对象分析的关键是,识别出问题域内的类与对象,,并分析它们相互间的,关系,,最终建立起问题域的简洁、精确、可理解的正确模型。由,对象模型,、,动态模型,、和,功能模型,组成。,,10.1,面向对象分析的基本过程,10.1.1 概述,10.1.2,3个子模型与5个层次,Requirement statement =>,,Rapid prototype => Models,,3,个模型,,Object model,:最重要,开发任何系统都需要;,,Dynamic model,:对于开发交互式系统,(interactive system),很重要;,,Function model,:对于开发大运
19、算量问题(如科学计算、编译系统等)很重要,,5,个层次,,,复杂问题的对象模型通常由,5个层次组成:,,主题层,,类与对象层,,结构层,类与对象间的关系,,属性层,,服务层,,主题是指导读者理解大型、复杂模型的一种机制。,通过划分主题把一个大型、复杂的对象分解成几个不同的概念范畴,。,,从高层次描述总体模型,指导读者的注意力,,5个层次对应5项,主要活动,:,,找出类与对象,,识别结构、识别主题、定义属性、定义服务。,,工作顺序,:,,寻找类与对象,,识别结构、识别主题、定义属性、建立动态模型、建立功能模型、定义服务。,,面向对象分析的,,基本过程,,10.2,需求陈述,第三章中已介绍过,需求
20、陈述的,内容,包括:,,,问题范围、功能需求、性能要求、应用环境、假设条件,等等。陈述方式可繁可简,说明,What,而不是,How,。,, 见教材对,Automated Teller Machine (ATM),的需求陈述。,,10.2.2 例子,,,,10.3,建立对象模型,面向对象分析的首要工作,是建立问题域的对象模型。,,典型的工作步骤:,,确定,Class-&-Object,,确定关联结构层,,完善,,确立属性,,识别继承关系及其它修改,,10.3.1,确定类与对象,Class-&-Object,第,1,步:列出所有候选对象,(candidates),,它们可能是,:,,(1),
21、物理实体 ,,(2),人或组织 ,,(3),要处理的事件,,(4),对象间的活动,,(5),抽象概念 等等;,,另一种方法非正式分析:从需求陈述中挑出,,名词,,Class-&-Object,,形容词,,Attribute,,动词,,Method,,,2,去粗取精,筛选出正确的类与对象,,,2,、确定关联结构层,两个或多个对象之间的相互依赖、相互作用的关系就是关联。分析确定关联,能促使分析员考虑问题域的,边缘情况,,有助于发现那些,尚未被发现的类与对象,。,1 初步确定关联,,需求陈述中使用的描述性,动词或动词词组,通常表示关联关系。,,大多数关联可以通过直接提取需求陈述中的动词词组得
22、出。,ATM例子有下列关联,,(1)直接提取动词短语得出的关联,,,ATM,、中央计算机、分行计算机及柜员终端组成网络,, 总行拥有多台,ATM,,,ATM,设在主要街道上,, 分行提供分行计算机和柜员终 端,, 柜员终端设在分行营业厅及储 蓄所内,, 分行分摊软件开发成本,, 储户拥有账户,, 分行计算机处理针对账户的事务,, 分行计算机维护账户,, 柜员终端与分行计算机通信,, 柜员输入针对账户的事务,,,ATM,与中央计算机交换关于事务的信息,, 中央计算机确定事务与分行的对应关系,,,ATM,读现金兑换卡,,,ATM,与用户交互,,,ATM,吐出现金,,,ATM,打印账单,, 系统处理并发的访问,,(2),需求陈述中隐含的关联,,总行由各个分行组成 ,, 分行保管账户 ,, 总行拥有中央计算机,,系统维护事务日志,,系统提供必要的安全性,,,储户拥有现金兑换卡,,(3)根据问题知识得出的关联,,现金兑换卡访问账户,, 分行雇用柜员,2 筛选,,,
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专题党课讲稿:以高质量党建保障国有企业高质量发展
- 廉政党课讲稿材料:坚决打好反腐败斗争攻坚战持久战总体战涵养风清气正的政治生态
- 在新录用选调生公务员座谈会上和基层单位调研座谈会上的发言材料
- 总工会关于2025年维护劳动领域政治安全的工作汇报材料
- 基层党建工作交流研讨会上的讲话发言材料
- 粮食和物资储备学习教育工作部署会上的讲话发言材料
- 市工业园区、市直机关单位、市纪委监委2025年工作计划
- 检察院政治部关于2025年工作计划
- 办公室主任2025年现实表现材料
- 2025年~村农村保洁员规范管理工作方案
- 在深入贯彻中央8项规定精神学习教育工作部署会议上的讲话发言材料4篇
- 开展深入贯彻规定精神学习教育动员部署会上的讲话发言材料3篇
- 在司法党组中心学习组学习会上的发言材料
- 国企党委关于推动基层党建与生产经营深度融合工作情况的报告材料
- 副书记在2025年工作务虚会上的发言材料2篇