面向对象的分析和设计

上传人:hs****ma 文档编号:567590520 上传时间:2024-07-21 格式:PPT 页数:237 大小:1.04MB
返回 下载 相关 举报
面向对象的分析和设计_第1页
第1页 / 共237页
面向对象的分析和设计_第2页
第2页 / 共237页
面向对象的分析和设计_第3页
第3页 / 共237页
面向对象的分析和设计_第4页
第4页 / 共237页
面向对象的分析和设计_第5页
第5页 / 共237页
点击查看更多>>
资源描述

《面向对象的分析和设计》由会员分享,可在线阅读,更多相关《面向对象的分析和设计(237页珍藏版)》请在金锄头文库上搜索。

1、症倚囱讳苇颇快窃淳崎篙笼系防咨嘿极炭盖玫苍甩虹钢吕醇夺缚企王见图面向对象的分析和设计面向对象的分析和设计软件工程软件工程软件工程软件工程第7章 面向对象的分析和设计尹埠澈解蚜剔漳停佰肄烬鳞阅屠酥元衅富索麓着蚂衷坎碘逾川阵攀句蘑肮面向对象的分析和设计面向对象的分析和设计内容摘要内容摘要面向对象的基本概念面向对象的基本概念面向对象的分析和设计过程面向对象的分析和设计过程UML概述概述用况建模用况建模静态建模静态建模动态建模动态建模物理体系结构建模物理体系结构建模邻言匪京掇戍泡事滓服说租驴味畦它砍韭田扳诫攀馈倔息帖癣贫泉绸爽牌面向对象的分析和设计面向对象的分析和设计2复旦大学计算机科学与工程系复旦大

2、学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要面向对象的基本概念面向对象的基本概念面向对象的分析和设计过程面向对象的分析和设计过程UML概述概述用况建模用况建模静态建模静态建模动态建模动态建模物理体系结构建模物理体系结构建模轴爬患莎盼术试妓最劣卞的痊挖桶暗寒骆垄切空懒距僻宪宇恕靖虐贪疲琅面向对象的分析和设计面向对象的分析和设计3复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程Peter Coad和Edward Yourdon提出用下列等式识认面向对象方法:面向对象 = 对象(object) + 分类(classification) + 继承(inh

3、eritance) + 通过消息的通信(communication with messages)可以说,采用这四个概念开发的软件系统是面向对象的檬梢持做圾锻检谤七蝎槐鸥隙方忌章叮银堡状慎歧音真甸若讣淳耘宛库署面向对象的分析和设计面向对象的分析和设计4复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 面向对象方法的出现很快受到计算机软件界的青睐,并成为20世纪90年代的主流开发方法。我们可以从下列几个方面来分析其原因:1.从认知学的角度来看,面向对象方法符合人们对客观世界的认识规律。2.面向对象方法开发的软件系统易于维护,其体系结构易于理解、扩充和修改。3.面向对象

4、方法中的继承机制有力支持软件的复用。 阻技诈砸寿妹乳旷凰队笑雕栽稗籍样衡桅栖夕舀冠墟谁纂气奴兵侍科哺秆面向对象的分析和设计面向对象的分析和设计5复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程面向对象的基本概念面向对象的基本概念 1. 对象(object) 对象是指一组属性以及这组属性上的专用操作的封装体。 属性(attribute)通常是一些数据,有时它也可以是另一个对象。每个对象都有它自己的属性值,表示该对象的状态。对象中的属性只能通过该对象所提供的操作来存取或修改。 操作(operation)(也称方法或服务)规定了对象的行为,表示对象所能提供的服务。 斡橱

5、袄竭嫂随岩北殷侍泅蜡署揩浩鬃毅一设缔聂凰良钞来挪氰择爹喊盏栏面向对象的分析和设计面向对象的分析和设计6复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程封装(encapsulation)是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的是使对象的使用者和生产者分离,使对象的定义和实现分开。 一个对象通常可由对象名、属性和操作三部分组成。厂蝇疏农威帚鳃膛透衰翼蔼稀点狞袒陇韭傈棉怂临写共蛤泪琶炕碴睫阮情面向对象的分析和设计面向对象的分析和设计7复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程2.

6、类(class) 类是一组具有相同属性和相同操作的对象的集合。一个类中的每个对象都是这个类的一个实例(instance)。 类是创建对象的模板,从同一个类实例化的每个对象都具有相同的结构和行为。秽关敲卒希酒厩蛔晰幂脾瞳骚慧身瘪疫辑州邱愚孕座赞苗舆进负原忠猜贷面向对象的分析和设计面向对象的分析和设计8复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程轿轿 车车型号:字符串型号:字符串颜色:字符串颜色:字符串牌照号:字符串牌照号:字符串张经理的轿车张经理的轿车型号型号= =桑塔纳桑塔纳颜色颜色= =红色红色牌照号牌照号= =沪沪AN2037AN2037类类实例对象实例对

7、象紫陪嘲拳拒熙捶窜遁吊彰涅沥革帅嫌批耐鲁瓶电尖肪夺翱旧傅臂柏害珠两面向对象的分析和设计面向对象的分析和设计9复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程3. 继承(inheritance) 继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承其父类(或祖先类)的属性和操作,还可以对父类(或祖先类)中的操作重新定义其实现方法。 业警梯尔稠尾差苇乙衙寺季蒸麦障棵肌邀症置肚角嘛票熏啡炸认豫诡坊白面向对象的分析和设计面向对象的分析和设计10复旦大学计算机科学与工

8、程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 矩形矩形长长宽宽对角线对角线计算面积计算面积计算对角线计算对角线 多边形多边形顶点数顶点数顶点坐标顶点坐标计算面积计算面积旋转旋转僚鹰诅否铺讣蚌舀技表贱蓝懒馋檄敷胯拽盅筏绽椅揖摸樊聂勾晃洲绍突踩面向对象的分析和设计面向对象的分析和设计11复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程有时,我们定义一个类,它把一些类组织起来,提供一些公共的行为,但并不需要使用这个类的实例,而仅使用其子类的实例。我们把这种没有实例的类称为抽象类(abstract class)。在抽象类中可以定义抽象操作,抽象操作指:只定义这

9、个类的操作接口,不定义它的实现,其实现部分由其子类定义。抽象操作操作名用斜体字表示,也可以在操作特征(signature)后面加上特征字符串abstract。焕愿贞挫场尹躇惊姚誊杉刹孟淳抑贿菏敢婪睬扳卸骄郡辉梧剖宵啼紊隧找面向对象的分析和设计面向对象的分析和设计12复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程交通工具交通工具飞行器飞行器汽汽 车车 船船轿轿 车车货货 车车 一般一般- -特殊关系特殊关系檀剔惋僳谆腮闷驯揣翱羡愁啥厌密痛位怒孺妓爷斯旭媒幼节馅桐大跋啊德面向对象的分析和设计面向对象的分析和设计13复旦大学计算机科学与工程系复旦大学计算机科学与工程系

10、 软件工程课程软件工程课程 如果一个子类只有唯一一个父类,这个继承称为单一继承。如果一个子类有一个以上的父类,这种继承称为多重继承。 水上交通工具水上交通工具 陆上交通工具陆上交通工具 水陆两栖交通工具水陆两栖交通工具多重继承多重继承魄兜忆敲沃螺诊半鸵婿棘蜡剖变挽埋袄饲撕涟胞训胆逗哟瓮范彼注噬笋生面向对象的分析和设计面向对象的分析和设计14复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程4. 消息(message) 消息传递是对象间通信的手段,一个对象通过向另一个对象发送消息来请求其服务。一个消息通常包括接收对象名、调用的操作名和适当的参数(如果有必要的话)。消息

11、只告诉接收对象需要完成什么操作,但并不指示接收者怎样完成操作。消息完全由接收者解释,接收者独立决定采用什么方法完成所需的操作。 蹿少地次摧粤撼巴荤岩颤赎桓赁叁庐紧骋猎导澈菊解峨安跌蔼援竹剪短荧面向对象的分析和设计面向对象的分析和设计15复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程5. 多态性(polymorphism) 多态性是指同一个操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形,作用在“圆”对象上,则在屏幕上画一个圆。也就是说,相同操作的消息发送给不同的对象时,每个对象将根据自己所属

12、类中定义的这个操作去执行,从而产生不同的结果。 惰芭次卞日岭仟伦耻嗜延档柞曝狗篡抗恐穗搜度妓诗篷挎幸刑很伸刊陨哪面向对象的分析和设计面向对象的分析和设计16复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程6. 动态绑定(dynamic binding) 动态绑定是指在程序运行时才将消息所请求的操作与实现该操作的方法连接起来。 传统的程序设计语言的过程调用与目标代码的连接(即调用哪个过程)放在程序运行前(即编译时)进行(称为静态绑定),而动态绑定则是把这种连接推迟到运行时才进行。 动态绑定是一种在运行时确定被执行代码的技术。另坷挑约之喝灌企冷废霖续卒镇坑清曾梆檀笛岩

13、七葛历寡统埂诛资禁栅尤面向对象的分析和设计面向对象的分析和设计17复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程在一般与特殊关系中,子类是父类的一个特例,所以父类对象可以出现的地方,也允许其子类对象出现。因此在运行过程中,当一个对象发送消息请求服务时,要根据接收对象的具体情况将请求的操作与实现的方法进行连接,即动态绑定。 乓募抒冻凄述鞍坍峻润掀闽妆腋也旗莎脆姜辉驹烧渐酗统鳃愧犬辟纪痒脚面向对象的分析和设计面向对象的分析和设计18复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程if 条件条件 then p := t ; else p

14、:= r ;area := p.getarea ;getArea abstractpolygonareahexagongetArearectanglegetArealengthwidthtrianglegetAreaVar p : polygon ;Var t : triangle := triangle.new ;Var r : rectangle := rectangle.new ; 瘩或饱懈台姆硒气荆泥芹抠劈慑项淌阜廖晰镶柯豪媚揩蹦错擂邢锣建括麦面向对象的分析和设计面向对象的分析和设计19复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要面向对

15、象的基本概念面向对象的基本概念面向对象的分析和设计过程面向对象的分析和设计过程UML概述概述用况建模用况建模静态建模静态建模动态建模动态建模物理体系结构建模物理体系结构建模卡坝莽肚轨坏睛疮且似挑敝历癌摄患幽智攫牲羔瀑矩慈票敏捆断菜匆波嫌面向对象的分析和设计面向对象的分析和设计20复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程面向对象分析面向对象分析Object-Oriented Analysis 面向对象分析的一般步骤如下:1.获取客户对系统的需求:包括标识场景(scenario)和用况(use case,也称用例),以及建造需求模型2.用基本的需求为指南,来选

16、择类和对象(包括属性和操作)。3.定义类的结构和层次。4.建造对象关系模型。5.建造对象行为模型。6.利用用况/场景来复审分析模型。 宁浸斥乡鱼罚既割奄潘钙语柑决瞳窄预趁涵简挎走椰奋够怂瓶极诚宪紧瓣面向对象的分析和设计面向对象的分析和设计21复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程1. 获取客户对系统的需求 需求获取必须让客户与开发者充分地交流,这里介绍一种采用用况来收集客户需求的技术。分析员首先标识使用该系统的不同的执行者(actor),这些执行者代表使用该系统的不同的角色。每个执行者可以叙述他如何使用系统,或者说他需要系统提供什么功能。执行者提出的每一

17、个使用场景(或功能)都是系统的一个用况的实例,一个用况描述了系统的一种用法(或一个功能),所有执行者提出的所有用况构成系统的完整的需求。 分析过程分析过程夕春斤沏晦澄莱蜘诲仕劳亲望洪踞盼痰造蚌黄烃孵诡条裴沮刚揪迷拍齐举面向对象的分析和设计面向对象的分析和设计22复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程注意,执行者与用户是不同的两个概念,一个用户可以扮演几个角色(执行者),一个执行者可以是用户,也可以是其他系统(应用程序或设备)。得到的用况必须进行复审,以使需求完整。簇尾化趁凉腿秽仅好惯谨喊亿妓诀养勺限惨让驱符样办杠闯裴撼劫洁衍把面向对象的分析和设计面向对象

18、的分析和设计23复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程2.标识类和对象 类和对象来自问题领域。可以先标识候选类,然后进行筛选岭香舆彦误怖徒仅茄瑰熊窥甲教幅披总扭毒栽夏拎萨垄荷尘篮屉里烤脚祈面向对象的分析和设计面向对象的分析和设计24复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程3. 定义类的结构和层次 类 的 结 构 主 要 有 两 种 : 一 般 特 殊(generalizationspecialization)结构和整体部分(wholepart)结构。 一般特殊结构是一种分类结构,反映了类间的一般与特殊的关系。一般类与

19、特殊类之间是一种“is a”的关系,如:汽车是一种交通工具。同样,特殊类还可以分为更特殊的类,这样可形成类的层次结构。 整体部分结构反映了类间的整体与部分关系。值得注意的是,整体部分关系是对对象而言的,而不是对类的。整体部分关系是一种“has a ”的关系,如“汽车”有“发动机”。同样,整体部分结构也具有层次结构。将晶渭魏揉杖蜂侥淳风业其宙煽载盖眼叫瞧裹隧体交肉芒罚缝肢戚搐噬荆面向对象的分析和设计面向对象的分析和设计25复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程有的面向对象方法中,把互相协作以完成一组紧密结合在一起的责任的类的集合定义为主题(subject)

20、或子系统(subsystem)。主题和子系统都是一种抽象,从外界观察系统时,主题或子系统可看作黑盒,它有自己的一组责任和协作者,观察者不必关心其细节。观察一个主题或子系统的内部时,观察者可以把注意力集中在系统的某一个方面。因此,主题或子系统实际上是系统更高抽象层次上的一种描述。 乱侵款箱捕播娘苦跌氧砍袱实柱淮几拎红摔监竿蛀亡卿荷渝忍晒颊盈荫榴面向对象的分析和设计面向对象的分析和设计26复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程4. 建造对象关系模型 对象-关系模型描述了系统的静态结构,它指出了类间的关系(relationship)。 类之间的关系有关联、依赖

21、、泛化、实现等。皂丘谱转券索构肩煞蓑贾数病卯弹新豹宾肩多岭此香唉巩跑墩怕囤现筹痔面向对象的分析和设计面向对象的分析和设计27复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程5. 建立对象行为模型 对象-行为模型描述了系统的动态行为,它们指明系统如何响应外部的事件或激励(stimulus)。 建模的步骤如下:评估所有的用况,以完全理解系统中交互的序列。标识驱动交互序列的事件,理解这些事件如何和特定的对象相关联。为每个用况创建事件轨迹(event trace)。为系统建造状态机图。复审对象-行为模型,以验证准确性和一致性。 骄噎钙馏场酪麓防浊誉杀肺漆外重勤修刺阳佯剔瓢

22、耽喳浪寝正驯的朴舒韵面向对象的分析和设计面向对象的分析和设计28复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程面向对象设计面向对象设计(Object_Oriented Design) 面向对象设计的一般步骤如下:1.系统设计将子系统分配到处理器将子系统分配到处理器选选择择实实现现数数据据管管理理、界界面面支支持持和和任任务务管理的设计策略管理的设计策略为系统设计合适的控制机制为系统设计合适的控制机制复审并考虑权衡(折衷)复审并考虑权衡(折衷)漓天村茅钎稽龋皆详恍左损续酵冀伏艇屠吉裔窒掺笋篇保误寥孟雕装浚霞面向对象的分析和设计面向对象的分析和设计29复旦大学计算机

23、科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程2.对象设计在在过过程程级级别别(procedural lavel)设设计计每每个操作,即设计每个操作的实现细节个操作,即设计每个操作的实现细节定义内部类定义内部类为类属性设计内部数据结构为类属性设计内部数据结构3.消息设计 使用对象间的协作和对象-关系模型,设计消息模型4.复审 复审设计模型并在需要时迭代。 揖涸弧贯再判译碟痉良平木品杆瘁基涕迸取孝惜逐誉衫踏携俏驼嚣抓嘘嵌面向对象的分析和设计面向对象的分析和设计30复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程1. 系统设计1) 将分析模型划分成子

24、系统 在OO系统设计中,我们把分析模型中紧密相关的类、关系等设计元素包装成子系统。 通常,子系统的所有元素共享某些公共的性质,它们可能都涉及完成相同的功能;它们可能驻留在相同的产品硬件中;或者它们可能管理相同的类和资源。子系统由它们的责任所刻画,即,一个子系统可以通过它提供的服务来标识。在OOD中,这种服务是完成特定功能的一组操作。 假烯舞矫寥南洁磷闰艇赢径蓖沁辫浮面藕赣曲松贪锥脯钠柳毖桨乖布夺竭面向对象的分析和设计面向对象的分析和设计31复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 子系统的设计准则是:(1) 子系统应具有定义良好的接口,通过接口和系统的其它

25、部分通信;(2) 除了少数的“通信类” 外,子系统中的类应只和该子系统中的其它类协作;(3) 子系统的数量不宜太多;(4) 可以在子系统内部再次划分,以降低复杂性。感摆弹咖魂克啦闺和盾蓟贮磕鞭没稀肠治官卓澳晒刁挺脊扁你仅扭歌典洽面向对象的分析和设计面向对象的分析和设计32复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程2) 标识问题本身的并发性,并为子系统分配处理器 通过对对象-行为模型的分析,可发现系统的并发性。如果对象(或子系统)不是同时活动的,则它们不需并发处理,此时这些对象(或子系统)可以在同一个处理器上实现。反之,如果对象(或子系统)必须对一些事件同时异

26、步地动作,则它们被视为并发的,此时,可以将并发的子系统分别分配到不同的处理器,或者分配在同一个处理器,而由操作系统提供并发支持。茁久搁七庙腮殊蜒甥径酣媚胎詹慷讣羡虹哪延嗣搞城吼糕蛋玖析育拾涯焊面向对象的分析和设计面向对象的分析和设计33复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程3) 任务管理设计Coad和Yourdon提出如下管理并发任务对象的设计策略:(1) 确定任务的类型;(2) 必要时,定义协调者任务和关联的对象;(3) 将协调者任务和其它任务集成。 通常可通过了解任务是如何被启动的来确定任务的类型,如事件驱动任务,时钟驱动任务。每个任务应该定义其优先

27、级,并识别关键任务。当有多个任务时还可以考虑增加一个协调者任务,以控制这些任务协同工作。 蔷担俩案错鹏议唤烯走触账伊乙锑叹袋搓悍垃梭闭畜铂搪跨恐翟酷定雇潘面向对象的分析和设计面向对象的分析和设计34复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程4) 数据管理设计 通常数据管理设计成层次模式,其目的是将数据的物理存储及操纵与系统的业务逻辑加以分离。 数据管理的设计包括设计系统中各种数据对象的存储方式(如内部数据结构、文件、数据库),以及设计相应的服务,即为要储存的对象增加所需的属性和操作。炊象氏痹黍胺茁绳诲忻畸找颜恐忱佣截磷潮麓硷逞契脾卑舷莎懂还豹惩驴面向对象的分

28、析和设计面向对象的分析和设计35复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程5) 资源管理设计 OO系统可利用一系列不同的资源(如磁盘驱动器、处理器、通信线路等外部实体或数据库、对象等抽象资源),很多情况下,子系统同时竞争这些资源,因此要设计一套控制机制和安全机制,以控制对资源的访问,避免对资源使用的冲突。 6)人机界面设计 对大多数应用系统而言,人机界面本身是一个非常重要的子系统。人机界面主要强调人如何命令系统,以及系统如何向人提交信息。它包括窗口、菜单、报告的设计。 祖忧乍蝇黑菜忧柱澳碰婆遣两伙德答剧烹爱滁哼工炽呼华充照县糕舟夕昨面向对象的分析和设计面向对

29、象的分析和设计36复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程7) 子系统间的通信 子系统之间可以通过建立客户/服务器连接进行通信,也可以通过端对端(peer to peer)连接进行通信。我们必须确定子系统间通信的合约(contract),合约提供了一个子系统和另一个子系统交互的方式。 牡抄野择徽婶对冲迸牛号屿助蔷诽反示鹏拳碍贩琅贼赁确乔柠诗蓟而勤孙面向对象的分析和设计面向对象的分析和设计37复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程2. 对象设计 对象设计是为每个类的属性和操作作出详细的设计,并设计连接类与它的协作者之间

30、的消息规约。1) 对象描述 对象的设计描述可以采取以下形式之一:(1) 协议描述:描述对象的接口,即定义对象可以接收的消息以及当对象接收到消息后完成的相关操作;(2) 实现描述:描述传送给对象的消息所蕴含的每个操作的实现细节,实现细节包括有关对象私有部分的信息,即关于描述对象属性的数据结构的内部细节和描述操作的过程细节。 对对象的使用者来说,只需要协议描述就够了。可葛按歹壳尧盅萤镍跳议算嗜瓶专浦曝巴首汕粹鲍窜奠咖垒枣众窝坟呻曰面向对象的分析和设计面向对象的分析和设计38复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程2)设计算法和数据结构 为对象中的属性和操作设计

31、数据结构和实现算法。 3. 设计模式(design patterns) 在许多面向对象系统中,存在一些类和通信对象的重复出现的模式。这些模式求解特定的设计问题,使面向对象设计更灵活,并最终可复用。这些模式帮助设计者复用以前成功的设计,设计者可以把这些模式应用到新的设计中。一聊娜砾患斜椭牵婚挣琐暑扰童昆卫捂侯疯稽释聚针也援简尧腮熔维撕鸥面向对象的分析和设计面向对象的分析和设计39复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程一个设计模式通常可用四个信息来描述:1)模式名 设计模式名应具有实际的含义,它能反映模式的适用性和意图。2)使模式可被应用所必须存在的环境和条

32、件。3)设计模式的特征 模式特征指出一些设计的属性,调整这些属性使该模式能适应各种不同的问题。这些属性表示设计的特征,这些特征能被用于检索(通过数据库)以找到合适的模式。4)应用设计模式的结果(consequences) 对于一个设计模式的使用结果表明设计决策的走向。奈俐奸岩名旱匹语脑构亡络悼刚鞍荒摘乘框赢茧眶闻孔枉钱焙内拜尹苹木面向对象的分析和设计面向对象的分析和设计40复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程典型的面向对象方法Coad & Yourdon 方法OMT方法Booch方法OOSE方法梭凰账赁施柱淖足折穴飘睫俏伶磅牵酣隔带苫鸣铭贾橙诗冰了陀袍

33、宜扳设面向对象的分析和设计面向对象的分析和设计41复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要面向对象的基本概念面向对象的基本概念面向对象的分析和设计过程面向对象的分析和设计过程UML概述概述用况建模用况建模静态建模静态建模动态建模动态建模物理体系结构建模物理体系结构建模镍松惊散滓擒逝剑竣初逸琼洁疚脖宏讳疗舆舱垄挣耀盈伙猖孺玉津斥童猪面向对象的分析和设计面向对象的分析和设计42复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程统一建模语言统一建模语言UMLUnified Modeling Language豁靳狰靛盅琉

34、提址铣付椿墩沿玻坡芯铂趣矽噶汤暴讥哆玉杂斟獭申戳荧顿面向对象的分析和设计面向对象的分析和设计43复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程UML概述概述 为何研究UML结束方法大战发展历史 1994年Booch和Rumbaugh在Rational Software Corporation开始了UML的工作,其目标是创建一个“统一的方法”, 1995年OOSE的创始人Jacobson加盟到这项工作中,工作重点转移到创建一种统一的建模语言UML 1996年6月、10月、1997年1月、11月分别推出了UML0.9、 UML0.91、 UML1.0、 UML1.1

35、 态献缠吗嘴拈龚龟僚典禄玖磊傀羊仑肥坎鹤屈咖篇辐沃爬韵兹等问端盘艾面向对象的分析和设计面向对象的分析和设计44复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程UML概述概述 1997年11月,OMG(Object Management Group)批准把UML1.1作为基于面向对象技术的标准建模语言 之后,UML进行了持续的修订和改进,先后产生了UML1.2、1.3、1.4、1.5版本 2004年推出了UML2.0,UML2.0对UML1.x作了重大的修改。 盔庆甩鸟携寂秃滴翌孪拯儒稽另拉柳采坦晋犹效祟磋宋贿氢孜非津匿摄吝面向对象的分析和设计面向对象的分析和设计4

36、5复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程模型元素 模型元素指模型中的实体以及实体间相互连接的关系 部分模型元素部分模型元素注解注解类类属性属性操作操作对象:类对象:类属性属性操作操作状态状态用况用况 结点结点供应接口供应接口包包依赖依赖关联关联泛化泛化主动类主动类属性属性操作操作请求接口请求接口构件构件实现实现唐浇企饿铡梭婚纫葫蔫沛沼菇胀涟血散村疗杖拟牺呀凑糊菱粪迭蚂补锗玛面向对象的分析和设计面向对象的分析和设计46复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程视图与图视图与图主题域视图 (view)图(diagram)结

37、构化结构化静态视图静态视图类图(类图(class)设计视图设计视图内部结构(内部结构(internal structure)协作图(协作图(collaboration)构件图(构件图(component)用况视图用况视图用况图(用况图(use case)动态的动态的状态机视图状态机视图状态机图(状态机图(state machine)活动视图活动视图活动图(活动图(activity)交互视图交互视图顺序图(顺序图(sequence)通信图(通信图(communication)物理的物理的部署视图部署视图部署图(部署图(deployment)模型管理模型管理模型管理视图模型管理视图包图(包图(pa

38、ckage)敦构鼠大蔼癸佐贴纺杆坍喳迎痕洁嘛更蟹柴幽诱拴良仔倡持垄菠驶恳韧爬面向对象的分析和设计面向对象的分析和设计47复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程静态视图静态视图对应用领域中的概念以及与系统实现有关的内部概念建模,主要由类以及类之间的相互关系组成,在静态视图中不描述依赖于时间的系统行为。静态视图用类图来展示。设计视图设计视图对应用自身的设计结构建模,例如,将设计结构扩展成:结构化类元,为实现功能所需的协作和良定义接口的构件的组装。设计视图由内部结构图、协作图和构件图实现。善娶赐泳蔑瓢嘛咆靛哦泅敬噪畦妹吻傲拢它累歌耻迈秋坞眶站弯鼻纯原熏面向对象

39、的分析和设计面向对象的分析和设计48复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程用况视图用况视图对被称为执行者的外部代理(他与特定视点的主题交互)所感受到的主题(如系统)功能建模。用况视图的意图是列出系统中的用况和执行者,并显示哪个执行者参与了哪个用况的执行。用况的行为用动态视图,特别是交互视图来表示。用况视图用用况图来展示。帛但拘园槛帮墟廷告搬罪裸孺坠药台喳平翁鹿拥脾祸咏施窗疮挡松能妮坏面向对象的分析和设计面向对象的分析和设计49复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程状态机视图状态机视图对一个类的对象的可能生命历程建模

40、。一个状态机包括用迁移连接的状态,每个状态对一个对象在其生命期中满足某种条件的一个时间段建模。当一个事件发生时,它会导致触发对象的一个状态向另一个新状态的迁移,附加在迁移上的动作或活动也同时被执行。状态机视图用状态机图来展示。给则妒烘虹需妓棱砚汝滓珠信染诸畏月忻挨档衙用侥业表享毖罐汁遍轩鲜面向对象的分析和设计面向对象的分析和设计50复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程活动视图活动展示了包含在执行计算或工作流中的计算活动的控制流。一个动作是一个基本的计算步,一个活动结点是一组动作或子活动,一个活动可描述顺序的和并发的计算。活动视图用活动图来展示。交互视图

41、交互视图描述系统各部分中消息交换的顺序。交互视图提供了系统中行为的整体视图,也就是说,它展示了多个对象间交叉的控制流。交互视图用顺序图和通信图来展示。爸邀嗓隧破众守了钠化冰盖窗莉桌眶撬鹃碰渠待管栖茁特喝售捆旧淹深写面向对象的分析和设计面向对象的分析和设计51复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程部署视图部署视图描述了运行时结点上制品的分布。制品是一个物理实现单元,如一个文件,它也可以表示一或多个构件的实现(一种表现形式)。结点是运行时表示计算资源的物理对象,如,计算机、设备或内存。部署视图允许对分配的结果和资源分配进行评估。部署视图用部署图来展示。哀暗惯

42、在薪宝酥彝罚镀袋果苯阔勃炯顶晌乳丹宿锹锹倦颇毁是矗薛而红配面向对象的分析和设计面向对象的分析和设计52复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程模型管理视图模型管理视图对模型自身的组织建模。一个模型由一组保存模型元素(如类、状态机、用况)的包组成。包还可以包含其它的包,因此,一个模型从一个间接包含所有模型内容的根包(root package)开始。包是操纵模型内容的单元,还是访问控制和配置控制的单元。每个模型元素可以被一个包或另一个元素拥有。模型管理信息通常展示在包图中,它是类图的变种。真虞彰移迎趟倔踞遮裴戌设召收鹊象大礼落掖孽桃溯竖宋宗厚猿抄炭探朽面向对象

43、的分析和设计面向对象的分析和设计53复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程剖面(profile)UML是用一个元模型(metamodel)定义的,元模型是指描述建模语言自身的模型。通常元模型的改变是复杂的,也是危险的。剖面机制允许在不修改基础元模型的前提下对UML作有限的变化。UML包含三个主要的可扩展结构:约束(constraints)、版型(stereotypes)和标签值(tagged values)。约束是以自然语言或特定形式语言的正文表示的语义条件或限制,约束写在花括号中(),如value0,or。版型是在基于现有各类模型元素的外形中定义模型元

44、素的新类型,它本质上是一种新元类(metaclass)。版型可以扩展语义,但不能扩展原元模型类的结构。用标记版型,如signal。标签值是贴在任何模型元素上的被命名的信息片。下图给出了版型和标签值的应用实例。金较卵复涂扶爆布这耀腑雀值慰坝么偿讹及冒宏赠恕饵睬竣玲碌供殴熙反面向对象的分析和设计面向对象的分析和设计54复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程版型和标签值版型和标签值authorshipSchedulingtagged valuesauthorshipauthor=“Frank Martin”due=Dec.31,2009邀旋斩祖搞沂惯躯碴黑锻锨

45、曲谴傻烂氢淬繁憋蕾箱选自闹庚韶裁菲傀申叠面向对象的分析和设计面向对象的分析和设计55复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 类图 类图展示了系统中类的静态结构,即类与类之间的相互联系。类之间有多种联系方式,如关联(相互连接)、依赖(一个类依赖或使用另一个类)、泛化(一个类是另一个类的特殊情况)等。可以把若干个相关的类包装在一起作为一个单元(包),相当于一个子系统。一个系统可以有多张类图,一个类也可以出现在几张类图中。 对象图 对象图是类图的实例,它展示了系统执行在某一时间点上的一个可能的快照。对象图使用与类图相同的符号,只是在对象名下面加上下划线,同时它

46、还显示了对象间的所有实例链接(link)关系。 嘉矣乞误紊吩帅亲症帅叭威涉烹悉奋码懒妒拜锌勾啃双许佰厂最务灶近翠面向对象的分析和设计面向对象的分析和设计56复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内部结构图内部结构图展示了类的分解,给出了组成一个结构化类元的相互连接的部分、端口和连接器。手册:演出手册手册:演出手册数据库:演出数据库数据库:演出数据库售票员:售票员售票员:售票员售票处售票处售票售票内部结构图内部结构图怪臭啥烈挨衡芬痊踩蛀爸牌杏羌挪硷感诸离仑肯去霞说龟西篆踢贬勃僧组面向对象的分析和设计面向对象的分析和设计57复旦大学计算机科学与工程系复旦大学

47、计算机科学与工程系 软件工程课程软件工程课程协作图协作图展示了协作的定义,是一种合成的结构图。协作是为了完成某一目的而一起工作的一组对象间的上下文关系。 剧院售票剧院售票* * 1 1售票亭:售票亭售票亭:售票亭:售票处:售票处1 1 * *终端:售票终端终端:售票终端协作图协作图蜕骡脐坦帜茄瘴纫颐辫琅雪霞湘搪址捻悸旋侍残众瞥驼吃构车苛桥雍做咆面向对象的分析和设计面向对象的分析和设计58复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程构件图构件图展示了系统中的构件(即来自应用的软件单元),构件间通过接口的连接,以及构件之间的依赖关系。构件是一种结构化类元,可以用内

48、部结构图来定义它的内部结构。懒碍陡腆套索赖刨贫时粹导傈紊撑芦帜烦焚款崖蒲磐阅鸭涕幻缅镐瘫煤峡面向对象的分析和设计面向对象的分析和设计59复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程用况图用况图展示了各类外部执行者与系统所提供的用况之间的连接。一个用况是系统所提供的一个功能(也可以说是系统提供的某一特定用法)的描述,执行者是指那些可能使用这些用况的人或外部系统,执行者与用况的连接表示该执行者使用了那个用况。用况图给出了用户所感受到的系统行为,但不描述系统如何实现该功能。用况通常用普通正文描述,也可以用活动图来描述。粗芝崩傈扬借帝晰才请蒜匈犹资拥街贫葵捏窖义仗变亲

49、昼穿恕扇温嫡晋弛面向对象的分析和设计面向对象的分析和设计60复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程状态机图状态机图通常是对类描述的补充,它说明该类的对象所有可能的状态以及哪些事件将导致状态的改变。一个事件可以是另一个对象向它发送的一条消息,或者是满足了某些条件。状态的改变称为迁移(transition)。一个状态迁移还可以有与之相关的动作,该动作指出状态迁移时应做什么。并不是所有的类都要画状态机图,有些类有一些意义明确的状态,并且其行为受不同的状态所影响和改变,这些类才需要画状态机图。 瞄拂闺敛抱扎温票仪沫掣诱驱腐完恩删指泥颈践槽翅势宵锁龙姆虞礁腔赂面向

50、对象的分析和设计面向对象的分析和设计61复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程活动图活动图展示了连续的活动流。活动图通常用来描述完成一个操作所需要的活动。当然它还能用于描述其它活动流,如描述用况。活动图由动作状态组成,它包含完成一个动作的活动的规约(即规格说明)。当一个动作完成时,将离开该动作状态。活动图中的动作部分还可包括消息发送和接收的规约。誉妓烤蚀崩携饭卖巾剧撤免襄倔将扦渺酞看巴嘉荧得避肥蚤糟掇内兽珠银面向对象的分析和设计面向对象的分析和设计62复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程顺序图顺序图展示了几个对象

51、之间的动态交互关系。它主要是用来显示对象之间发送消息的顺序,它还显示了对象之间的交互,即系统执行的某一特定点所发生的事。 通信图通信图用几何排列来表示交互作用中的角色,它显示了有协作关系的复合结构组成部分或角色范围内的交互。它明确地显示元素之间的协作关系,而不显示作为独立维的时间,消息的顺序和并发线程必须由顺序号确定。 完势琶默絮邻久粕虽挑讽搓搔情帕挠鳃玖溯踌针郑涸集倍址颤网术挝湘铺面向对象的分析和设计面向对象的分析和设计63复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程部署图部署图展示了运行时处理结点和在结点上生存的制品的配置。结点是运行时的计算资源,制品是物

52、理实体,如构件、文件。部署图中显示部署在结点上的制品和它们之间的关系,以及结点之间的连接和通信方式。旷啄状挺甚制血莫紊涂亢螺甘穗于俺感陕砌俄闽劝傲持哭吐案倡谅吩霹盯面向对象的分析和设计面向对象的分析和设计64复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程包图包图是由包和它们间的关系组成的结构图模型是在某一视点给定的精度上对系统的完整描述,一个系统可以从不同的视点(如分析模型、设计模型)存在多个模型。一个模型可看作一个特定类型的包,通常仅显示包就足够了(不必显示包内部的细节)。下图给出了剧院系统所细分成的包以及它们之间的依赖关系。予读炉硼击淹式润精蓝舆伏酪粘藤河拓

53、还舵吹呆畅磊颅途啡霹档瞥狰沽脆面向对象的分析和设计面向对象的分析和设计65复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程售票处售票处计划计划广告广告时间表时间表客户记录客户记录票记录票记录运作运作售票售票工资单工资单计算计算购买购买包图包图杉艇傲疼俺础签旗畴虑鲤半搂他斜卒纹莲优磁戎览熏赏涩疑鱼弘圾蛆舒蓄面向对象的分析和设计面向对象的分析和设计66复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要面向对象的基本概念面向对象的基本概念面向对象的分析和设计过程面向对象的分析和设计过程UML概述概述用况建模用况建模静态建模静态

54、建模动态建模动态建模物理体系结构建模物理体系结构建模喻畏炎吟破兄程沁过岿预嚷需扛煮陌涨述例怎会首葱漓华邯城叼记哩汾粥面向对象的分析和设计面向对象的分析和设计67复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程用况建模用况建模 用用况况建建模模是是用用于于描描述述一一个个系系统统应应该该做做什什么么的的建建模模技技术术,用用况况建建模模不不仅仅用用于于新新系系统统的的需需求求获获取取,还还可可用用于于已有系统的升级。用况模型用用况图来描述。已有系统的升级。用况模型用用况图来描述。 用用况况图图展展示示了了各各类类外外部部执执行行者者与与系系统统所所提提供供的的用用况

55、况之之间间的的连连接接。一一个个用用况况是是系系统统所所提提供供的的一一个个功功能能(也也可可以以说说是是系系统统提提供供的的某某一一特特定定用用法法)的的描描述述,执执行行者者是是指指那那些些可可能能使使用用这这些些用用况况的的人人或或外外部部系系统统,执执行行者者与与用用况况的的连连接接表表示示该该执执行行者者使使用用了了那那个个用用况况。用用况况图图给给出出了了用用户户所所感感受受到到的的系系统统行行为为,但但不不描描述述系系统统如如何何实现该功能。实现该功能。用况通常用普通正文描述,也可以用活动图来描述。用况通常用普通正文描述,也可以用活动图来描述。嘎共墒葬帅叙拎掷恋结秸姚缔邀媳万呜低

56、邮殉赴晤匀举止氖垃幂貌猖塞孕面向对象的分析和设计面向对象的分析和设计68复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 任何一个涉及到系统功能活动的人都会用到用况模型。 客户:用况模型指明了系统的功能,描述了系统能如何使用。用况建模时客户的积极参与是十分重要的。 开发者:用况模型帮助他们理解系统要做什么,同时为以后的其它模型建模、结构设计、实现等提供依据。 集成测试和系统测试人员:根据用况来测试系统,以验证系统是否完成了用况指定的功能。 靳筹畔窿凯冒啸典欢紫始淋澄走筐欠焊命揭蔡行不衫焉崩伺帜绚锰艇逆仍面向对象的分析和设计面向对象的分析和设计69复旦大学计算机科学

57、与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程用况建模步骤用况建模步骤创建用况模型的步骤包括:1定义系统2确定执行者3确定用况4描述用况5定义用况间的关系,6确认模型鸥栽票块兑摊拱卒烧师党惑朗抿晓支孕团良荫征干殊峡慢砾痴柯郑惮艘妆面向对象的分析和设计面向对象的分析和设计70复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程用况模型由用况图组成,用况图展示了执行者、用况以及它们之间的关系。用况通常用正文形式来描述。一个用况模型可由若干幅用况图组成。一幅用况图包含的模型元素有系统、执行者、用况,以及表示它们间的不同关系,如关联、扩展、包含、泛化等。戚烘邻搅

58、遂炊嘴镐莎离脾卓磁榔电度眨尧力羽骚汉帘经猩迷闯仍述嗓给根面向对象的分析和设计面向对象的分析和设计71复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程用况图用况图电话订购系统用况图电话订购系统用况图Telephone CatalogCustomerSalespersonnShipping ClerksupervisorestablishcreditFill orderArrangePaymentSupplyCustomerDataorderproductArrangeCreditPaycashplaceorderRequestCatalogincludeinclud

59、eincludeextendcheckstatus舍畸壮鹤赫迪武峪盎蠕黑兼谰居榴射铱辱忧敦遏徽爆嚣扳镑轿剩空呸益镀面向对象的分析和设计面向对象的分析和设计72复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程一. 确定执行者执行者是指与系统交互的人或其它系统执行者是指与系统交互的人或其它系统执行者代表一种角色,而不是具体的某执行者代表一种角色,而不是具体的某个人个人 执行者可分成主执行者和副执行者:执行者可分成主执行者和副执行者:主执行者使用系统的主要功能 例如,保险系统中主执行者处理保险的注册和管理 副执行者处理系统的辅助功能 例如,管理数据库、通信、备份以及其它

60、管理等系统维护陨仁抄壁怠颇肩思湃沛彦磕守靠蚁腿王授昧洋汕峡占誊夜凳溉票狈闲湾洼面向对象的分析和设计面向对象的分析和设计73复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程执行者还可分为主动执行者和被动执行执行者还可分为主动执行者和被动执行者:者:主动执行者开始一个用况被动执行者从不开始用况,只是参与一个或多个用况涵缮厂喜寝橙咋旅隅沦炯缚酵乒评调十搽驶烹蛮艺疆过先绳寒狐站驰囊雀面向对象的分析和设计面向对象的分析和设计74复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程我们可以通过回答下列问题来确定执行者:谁使用系统的主要功能(主执行者)

61、?谁需要从系统中得到对他们日常工作的支持?谁需要维护、管理和维持系统的日常运行(副执行者)?系统需要控制哪些硬件设备?系统需要与哪些其它系统交互?哪些人或哪些系统对系统产生的结果(值)感兴趣?陌戊稗藤高等凛妆棺颅汰室舀依扶圾稼卑渴篆蹋馅梆呕槛亏蚕排亩曾夏澜面向对象的分析和设计面向对象的分析和设计75复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程二.确定用况1. 用况的特征用况总是被执行者启动的(用况总是被执行者启动的(initiated),),执行者必须直接或间接地指示系统去执行者必须直接或间接地指示系统去执行用况执行用况用用况况向向执执行行者者提提供供值值,这

62、这些些值值必必须须是是可识别的可识别的用用况况是是完完整整的的,一一个个用用况况必必须须是是一一个个完整的描述完整的描述 用况是一个类,而不是实例,用况的实例称为场景(scenario)敬搭蕊想壤泪茎模抛肮拿翌厕拾磨嚼峭闺弯宋地煎豺碧条看景稀交晰粉辉面向对象的分析和设计面向对象的分析和设计76复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程2. 寻找用况可以通过让每个执行者回答以下问题来寻找用况:执执行行者者需需要要系系统统提提供供哪哪些些功功能能?执执行行者者需需要要做什么?做什么?执执行行者者是是否否需需要要读读、创创建建、删删除除、修修改改或或储储存系统中的

63、某类信息?存系统中的某类信息?执执行行者者是是否否要要被被系系统统中中的的事事件件提提醒醒,或或者者执执行行者者是是否否要要提提醒醒系系统统中中某某些些事事情情?从从功功能能观观点看,这些事件表示什么?点看,这些事件表示什么?执执行行者者的的日日常常工工作作是是否否因因为为系系统统的的新新功功能能(尤尤其其是是目目前前尚尚未未自自动动化化的的功功能能)而而被被简简化化或提高了效率?或提高了效率?专臭绣活佑跌碑未炔论十浊朔绿皱枷奸妄袭数日柬梆植脑浸哆羽齿分侯冶面向对象的分析和设计面向对象的分析和设计77复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程另外还有一些不是

64、目前的执行者回答的问题:系统需要哪些输入系统需要哪些输入/输出?谁从系统获输出?谁从系统获取信息?谁为系统提供信息?取信息?谁为系统提供信息?与当前系统(可能是人工系统而不是自与当前系统(可能是人工系统而不是自动化系统)的实现有关的主要问题是什动化系统)的实现有关的主要问题是什么?么? 对同一个项目,不同的开发者选取的用况数是不一样的。例如一个10个人年规模的项目,有人选取了20个用况,而在一个类似的项目中,有人选用了100个用况。 似乎20个太少,而100个太多,希望在项目规模和用况数之间保持均衡。 管群篱镣耐蔼驯鲤缓杖拷睫吁迎诈屉汰桥贯乡瘩骡赎傍孤箕由哮见啃蛹派面向对象的分析和设计面向对象

65、的分析和设计78复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程3. 用况的描述 用况通常用正文(text)来描述,也可用活动图来描述 。 用况的正文描述应包括以下内容:用况的目的:用况的最终目的是什么?它试图达到什么?用况是如何启动(initiate)的:哪个执行者在什么情况下启动用况的执行?执行者和用况之间的消息流:用况与执行者之间交换什么消息或事件来通知对方改变或恢复信息?描述系统与执行者之间的主消息流是什么?以及系统中哪些实体被使用或修改?蔚库牵荣贸加衍转欲迂袖院据澈缓翌渐帐烤酱歪尼捣翅只萨盔嗓滑晋掷淮面向对象的分析和设计面向对象的分析和设计79复旦大学计

66、算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程用况中可供选择的流:用况中的活动可根据条件或异常(exception)有选择地执行。如何通过给执行者一个值来结束用况:描述何时可认为用况已结束.轿鸽嗽讨舍勋付惮牌饥束琅栗倒峙喝考捷敖着匹笺逞学值勒盎破差倦捞确面向对象的分析和设计面向对象的分析和设计80复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程执行者的简要描述 如客户:向公司订购商品的人 客户代表:公司处理客户请求的雇员 库存系统:记录公司库存的软件用况的简要描述 如订购货物:客户创建一个新的请求商品的订单,并为那些商品付费 取消订单:客户取

67、消一个已经存在的订单辽眺有捶吏沦摄荐敞昏走揩往瞥沾癌力贿霄诽疮董宣温奶汤佛哄壁幅睁汲面向对象的分析和设计面向对象的分析和设计81复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 用况的详细描述前置条件和后置条件前置条件和后置条件前置条件和后置条件表示用况开始和结束的前置条件和后置条件表示用况开始和结束的条件条件事件流事件流(flow of events)事件流是一系列陈述句,它是从执行者的角事件流是一系列陈述句,它是从执行者的角度看,列出用况的各个步骤度看,列出用况的各个步骤用况描述中可以包含条件、分支和循环。用况描述中可以包含条件、分支和循环。例如:订购货物用况

68、的描述如下例如:订购货物用况的描述如下幽吨凛窗宇深殴魂兜送绵再性杀头懦邀股写阵皆谅飞烽计五癸痰抡误谤赁面向对象的分析和设计面向对象的分析和设计82复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程用况名称:订购货物参与的执行者:客户、客户代表前置条件:一个合法的客户已经登录到这个系统事件流:1.当客户选择订购货物时,用况开始2.客户输入他的姓名和地址3.如果客户只输入邮编,系统将给出州和城市名4.当客户输入产品代码a. 系统给出产品描述和价格b. 系统往客户订单中添加该物品的价格 循环结束5. 客户输入信用卡支付信息凰渍膀做浑代拐烂抉铱蚂帧氦址隶悠搓茬沦问理潦惕嘱镀

69、漠倡废名烬藻母面向对象的分析和设计面向对象的分析和设计83复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程6. 客户选择提交7. 系统检验输入的信息,把该订单作为未完成的交易保存,同时向记账系统转发支付信息。如果客户提交的信息不正确,系统将提示客户修改。8. 当支付确认后,订单就被标记上已经确认,同时返回给客户一个订单ID,用况也就结束了。如果支付没有被确认,系统将提示客户改正支付信息或者取消。如果客户选择修改信息,就回到第5步;如果选择取消,用况结束。后置条件:如果订单没有被取消,它将保存在系统中,并做上标记凿阉霓澡慈赃疽幌拨长腻件日合洪裴徊宁匝啃描边秆碟曙震晌

70、滩筐寅壳美面向对象的分析和设计面向对象的分析和设计84复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程其他需求其他需求在用况中还可描述一些特殊的需求,这些需在用况中还可描述一些特殊的需求,这些需求常常是非功能性需求,如可用性、安全求常常是非功能性需求,如可用性、安全性、可维护性、负载、性能、自动防故障、性、可维护性、负载、性能、自动防故障、数据需求等。数据需求等。如订购货物用况的其他需求:如订购货物用况的其他需求:前置条件:(略)事件流: (略)特殊需求: 系统必须在一秒内响应客户的输入后置条件: (略)拥勘凹怯首盆宿熄辆猩砚膘吕圈适胆恒淆碟帜号乏怔逆查摩千帽蹲锑

71、艘业面向对象的分析和设计面向对象的分析和设计85复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程事件流可分为两部分:基本路径基本路径 基本路径是运转正常时的路径,是一系列没基本路径是运转正常时的路径,是一系列没有分支和选择的简单陈述句有分支和选择的简单陈述句可选路径可选路径 可选路径是指不同于基本路径而允许不同的可选路径是指不同于基本路径而允许不同的事件序列的路径。事件序列的路径。 对于明显有可能随时发生的事情来说,可选对于明显有可能随时发生的事情来说,可选路径非常有效。路径非常有效。绿凝异胀臼端琵已疡棒乍貌岗兄够隋您任卵夜靴睡婴刹坛扬凝慌志胃茁龚面向对象的分析和

72、设计面向对象的分析和设计86复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程如订购货物用况的基本路径:如订购货物用况的基本路径:事件流:基本路径1.当客户选择订购货物时,用况开始2.客户输入他的姓名和地址3.当客户输入产品代码时a. 系统给出产品描述和价格b. 系统往客户订单中添加该物品的价格 循环结束4. 客户输入信用卡支付信息5. 客户选择提交6. 系统检验输入的信息,把该订单作为未完成的交易保存,同时向记账系统转发支付信息7. 当支付确认后,订单就被标记上已经确认,同时返回给客户一个订单ID,用况结束褪罩久簿足搀纠槐舟靴榴赣实沫哇惶汹浪川新狄验涨拜辟宦挪婶蛊

73、援银泼面向对象的分析和设计面向对象的分析和设计87复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 如果在订购货物用况中,客户可以在提交订单前随时取消订单,其可选路径如下:可选路径:在选择提交前的任何时候,客户都可以选择cancel。这次订购没有被保存,用况结束。在基本路径第6步,如果有任何不正确的信息,系统提示客户去修改这些信息。在基本路径第7步,如果支付没有被确认,系统将提示客户改正支付信息或者取消。如果客户选择修改信息,就回到基本路径第4步;如果选择取消,用况结束。仑茬责掺形憎吧雀阁串谨折盅糕多么瘴剂胶滩牌扭讳与限正猩痹墒掀饶汰面向对象的分析和设计面向对象的

74、分析和设计88复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程三.确定用况之间的关系关系说明记号关联执行者与他所参与的一个用况之间的通信路径 扩展扩展的用况到基本用况的一种关系,它指出扩展的用况所定义的行为如何插入到基本用况所定义的行为中。扩展的用况通过模块化方式增量地修改基本用况 extend走忠倒曾恩萨觉靖扇友脱垦凌缩镁漂饲沧瘟视廷絮歇剁骋未贸劳妓趁啤琉面向对象的分析和设计面向对象的分析和设计89复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程关系说明记号包含从基本用况到另一个用况(称为包含用况,inclusion use cas

75、e)的一种关系,它指出包含用况定义的行为被包含在基本用况所定义的行为中。基本用况能看到包含用况,并依赖于执行包含用况后的结果,但两者相互间不能访问其它属性 用况泛化 一个一般用况与一个更特殊的用况之间的关系,特殊用况可继承一般用况的特征 include舅蝴验眉温毋讼肆蛆宣坡宋白航航宙屈拍汛钥蓖芦棱雾捂羡吠箕伍趾某彼面向对象的分析和设计面向对象的分析和设计90复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程实例实例本实例实现一个简化了的银行储蓄账户管理系统,该系统是在银行的柜台上对客户办理活期储蓄业务。系统的需求陈述如下:一个客户可以在多个银行中开设账户,一个客户也

76、可在同一银行中开设多个不同的账户。客户可以通过银行职员进行开户、存款、取款、转账、注销账户等活动。其中转账指客户将自己的某个账户上的钱款转入同一银行的不同账户(称为银行内转账)或转入不同银行的账户(称为银行间转账)。系统管理员负责系统的账户管理及业务报表的生成。郡靛志哪毕炸灾步兴叛帕奴擞颧很酗痢膛匹沂古倾诺炒剔楼恃预芒鼻躺登面向对象的分析和设计面向对象的分析和设计91复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程识别执行者客户:到银行办理储蓄业务的人,负责输入密码银行职员(客户代理):银行工作人员,代表客户进行储蓄业务的操作银行职员(管理人员):银行工作人员,根

77、据客户的储蓄业务更新账户管理员:银行计算机的管理人员,负责账户的管理和业务报表的生成湿甚堰丸仟画物铺疗举烽拂翅栽兹晚喊笔撇茎遭琳龟恨仑志惨辊凿邪尾委面向对象的分析和设计面向对象的分析和设计92复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程识别用况从系统的需求陈述可知,银行职员(客户代理)需要系统提供开户、存款、取款、转账、注销账户等功能,这些功能都包含了校验密码的功能。系统管理员需要系统提供账户管理和报表生成功能。银行职员(管理人员)则参与了账户管理中的更新账户的功能。此外,转账功能可分为银行内转账和银行间转账,我们可将它们设计成三个用况,其中银行内转账用况和银

78、行间转账用况都继承了基本转账用况。据此分析,得到该系统的用况图如下图所示。咎屹协庸本宋价私栏城们玩窄篷境诲占逢赃铱算昏宴羌毖脱陈他汰蔬趣羽面向对象的分析和设计面向对象的分析和设计93复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程银行储蓄账户管理系统银行储蓄账户管理系统包含包含包含包含包含包含银行职员银行职员(用户代理)(用户代理)账户管理账户管理银行间转账银行间转账开户开户取款取款银行内转账银行内转账注销注销存款存款校验密码校验密码转账转账报表生成报表生成其它银行其它银行账户管理系统账户管理系统客户客户系统管理员系统管理员银行职员银行职员(管理人员)(管理人员)

79、柄疲瘤跨筷惕谍硬品旭凌勺鹊碴安踢焉挑吩椰叠到肾彦雇疵福亢键赖奄痛面向对象的分析和设计面向对象的分析和设计94复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程开户用况描述用况名称:开户参与的执行者:银行职员(客户代理),客户前置条件:一个合法的银行职员(客户代理)已登录到该系统事件流:1.当选择开户功能时用况开始2.输入客户信息(姓名、地址、身份证号等)3.从账户管理系统获取新的账号4.请客户输入密码5.请客户再次输入密码6.如果两次密码不一致则回到第4步,否则继续7.在账户库中添加新账户8.打印存折,用况结束后置条件:在账户库中增加了一个新账户,得到一张新存折 播

80、这骸住库趟闪浙靠埔猜蚂彼堑弟挥棍嘿篆露锚孜践甥便蜒钡点黔薯篱隅面向对象的分析和设计面向对象的分析和设计95复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程取款用况描述用况名称:取款参与的执行者:银行职员(客户代理)前置条件:一个合法的银行职员(客户代理)已登录到该系统事件流:基本路径:1.当选择取款功能时用况开始2.当输入客户信息(姓名、账号等)后 a)如果客户信息与账户不一致,显示错误信息,可以重新输入或结束用况 b)如果该账户被冻结(如因挂失而冻结),显示冻结信息并结束用况3.输入并校验密码辣镐忱透揖丙均茅熊啡翔茫显帮螺袖付超枉毅渍叔繁捷勺伴翘诌吮沼紧蔚面向对

81、象的分析和设计面向对象的分析和设计96复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程4.输入取款金额,如果该账户的余款小于取款金额,显示错误信息,要求重新输入5.打印取款单,交客户签字6.建立取款事件记录,更新账户信息7. 打印存折,用况结束可选路径:1.在第5步客户签字之前的任何时刻,客户可以取消本次取款,用况结束2.第3步校验密码时,如发现密码不一致,则重新输入密码,或用况结束后置条件:如果取款成功,客户账户中的余额被更新(减少),否则余额不变。每铜颐襟瓮链抽奄该孵丧佃荷林拙咯惺柜脸虾弓矮辫器嚼禁梭鞘俘胰蚤邮面向对象的分析和设计面向对象的分析和设计97复旦大

82、学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程描述取款用况的活动图客户不确认客户不确认客户确认客户确认余额余额取款取款额额未冻结未冻结不一致不一致一致一致选择重新输入选择重新输入选择结束选择结束冻结冻结余额取款额余额取款额打印取款单打印取款单输入客户信息输入客户信息显示显示错误信息错误信息建立取款记录建立取款记录更新账户信息更新账户信息打印存折打印存折显示显示错误信息错误信息输入取款金额输入取款金额输入并校验密码输入并校验密码显示显示冻结信息冻结信息沉哭琵盯器市雹脱乙馆灼砾译仕矫教棺搬决苛犊胯抚辣孤破鸥拎账湘间顺面向对象的分析和设计面向对象的分析和设计98复旦大学计算

83、机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要面向对象的基本概念面向对象的基本概念面向对象的分析和设计过程面向对象的分析和设计过程UML概述概述用况建模用况建模静态建模静态建模动态建模动态建模物理体系结构建模物理体系结构建模榆舌嗅悍惩识兢菇阶竹热骋喉取祁踢烃涛益百眩百析煤翻哇诗蔡奴俐掣斯面向对象的分析和设计面向对象的分析和设计99复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程静态建模静态建模(类和对象建模)(类和对象建模) 类和对象模型的基本模型元素有类、对象以及它们之间的关系。系统中的类和对象模型描述了系统的静态结构,在UM

84、L中用类图和对象图来表示。 拼禾抓碟吊绵陛碗啃庚喧正德枉摧笔沙贰嚣冻岗很伍山烃卷拟扣杭捷坏严面向对象的分析和设计面向对象的分析和设计100复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程类图由系统中使用的类以及它们之间的关系组成。类之间的关系有关联、依赖、泛化、实现等。类图是一种静态模型,它是其它图的基础。一个系统可以有多张类图,一个类也可出现在几张类图中。对象图是类图的一个实例,它描述某一时刻类图中类的特定实例以及这些实例之间的特定链接。对象图使用了与类图相同的符号,只是在对象名下附加下划线,对象名后可接以冒号和类名,即 object-name:class-na

85、me 窑憋龄浊健纬私该趟脯坏争现托纫誉翔捂挽瑶左醚粘拯雏震般篙穿濒滋须面向对象的分析和设计面向对象的分析和设计101复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 对象名对象名 :类名:类名属性名属性名 = 值值操作操作类名类名属性名属性名 :类型:类型操作操作聚集聚集组合组合关联关联泛化泛化依赖依赖实现实现撮励磐肾却戳颓百设擂钎拽怒奢嘻靶瘁蜡息邻剑轨求遭采旱帛乏侠壳妖弟面向对象的分析和设计面向对象的分析和设计102复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程类图和对象图类图和对象图实例实例xL3对象图对象图L4P2lineX1

86、:realY1:realX2:realY2:realpointX: realY: realL1: lineX1=10Y1=10X2= -10Y2= -10L2: lineL3: lineX1=10Y1= 5X2= -10Y2= -5L4: lineX1=9Y1=5X2=9Y2=3X1= -10Y1=10X2=10Y2= -10P1:pointX = 0Y = 0P2:pointX=9Y=4。5P1L1yL2类图类图相交相交2.*0.*粉攻榜汹巾街斜眠给抢屉龙寐舅嗓卫于塞神舜容庸眼观唁扶漓涨坊妻妹谆面向对象的分析和设计面向对象的分析和设计103复旦大学计算机科学与工程系复旦大学计算机科学与工程系

87、 软件工程课程软件工程课程确定类确定类1. 标识类 这里介绍一种类责任协作者(classresponsibilitycollaborator,简称CRC)技术。CRC实际上是一组表示类的索引卡片,每张卡片分成三部分,它们分别描述类名、类的责任和类的协作者。类名: 协作者: 责任: 炳顺朴泵好抬颖凋寸撒荫诈舜下迹谈寿革榨步隧圣绸摹夺歧唯敛藏穆梧驳面向对象的分析和设计面向对象的分析和设计104复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程(1) 标识潜在的对象类 通常陈述中的名词或名词短语是可能的潜在对象,它们以不同的形式展示出来,如:1)外部实体(如,其它系统、设

88、备、人员),他们生产或消费计算机系统所使用的信息;2)物件(如,报告、显示、信函、信号),它们是问题信息域的一部分;3)发生的事情或事件(如,性能改变或完成一组机器人移动动作),它们出现在系统运行的环境中;商兰旨豫私袱阁邦碎港命弥盯蚊赔脾问累链瘪蜗彩仪妆漆庶率袜逐碟恼凝面向对象的分析和设计面向对象的分析和设计105复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程4)角色(如:管理者、工程师、销售员),他们由与系统交互的人扮演;5)组织单位(如:部门、小组、小队),他们与一个应用有关;6)场所(如:制造场所、装载码头),它们建立问题和系统所有功能的环境;7)构造物(

89、如,四轮交通工具、计算机),它们定义一类对象,或者定义对象的相关类。未昏门课土妖驭嚏必像敝啪隋寿波降拽溯刀滩槐公氰析雌曾无詹庶茬碗肋面向对象的分析和设计面向对象的分析和设计106复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程回答下列问题来识别潜在对象:是否有要储存、转换、分析或处理的信息?是否有要储存、转换、分析或处理的信息?是否有外部系统?是否有外部系统?是否有模式(是否有模式(pattern)、类库和构件等?)、类库和构件等?是否有系统必须处理的设备?是否有系统必须处理的设备?是否有组织部分(是否有组织部分(organizational parts)? 业业

90、务务中中的的执执行行者者扮扮演演什什么么角角色色?这这些些角角色色可可以以看作类,如客户、操作员等。看作类,如客户、操作员等。 败嘴晶褥于乞缴贴宙锣肚晾敌桩儿列巫贷西纽汐悲厂讯含稀兼泌愤舔程声面向对象的分析和设计面向对象的分析和设计107复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程(2)筛选对象类,确定最终对象类我们可以用以下选择特征来确定最终的对象:1)保留的信息:仅当必须记住有关潜在对象的信息,系统才能运作时,则该潜在对象在分析阶段是有用的;2)需要的服务:潜在对象必须拥有一组可标识的操作,它们可以按某种方式修改对象属性的值;3)多个属性:在分析阶段,关注

91、点应该是“较大的”信息(仅具有单个属性的对象在设计时可能有用,但在分析阶段,最好把它表示为另一对象的属性);鼎磋界筏啡鹰炯功疏婴渡发诚烯羔志漏祝吱有甄絮阉辊肋妇瀑襄要孙蜘研面向对象的分析和设计面向对象的分析和设计108复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程4)公共属性:可以为潜在的对象定义一组属性,这些属性适用于该类的所有实例;5)公共操作:可以为潜在的对象定义一组操作,这些操作适用于该类的所有实例;6) 必要的需求:出现在问题空间中的外部实体以及对系统的任何解决方案的实施都是必要的生产或消费信息,它们几乎总是定义为需求模型中的类。 磷腔欢持遗雌燃盾后擞

92、棉悟还恶昆硼越潞饮遣栖帘闷醋榨签兰彪雁驻卜俄面向对象的分析和设计面向对象的分析和设计109复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 对象和类还可以按以下特征进行分类:1)确切性(tangibility):类表示了确切的事物(如,键盘或传感器),还是表示了抽象的信息(如,预期的输出)?2)包含性(inclusiveness):类是原子的(即不包含任何其它类),还是聚合的(至少包含一个嵌套的对象)?3)顺序性(sequentiality):类是并发的(即,拥有自己的控制线程),还是顺序的(被外部的资源控制)?夜每氧渭幌逐缸觉蹲粤率鳞贿涟子纯萝挤噪亭患婿疾歉建酉

93、碱救序辈仑间面向对象的分析和设计面向对象的分析和设计110复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程4)持久性(persistence):类是短暂的(即,它在程序运行期间被创建和删除)、临时的(它在程序运行期间被创建,在程序终止时被删除)、还是永久的(它存放在数据库中)? 永久对象(persistent object):其生存周期可以超越程序的执行时间而长期存在的对象。5)完整性(integrity):类是易被侵害的(即,它不防卫其资源受外界的影响),还是受保护的(该类强制控制对其资源的访问)。 基于上述分类,CRC卡的内容可以扩充,以包含类的类型和特征。枯

94、孔涵琢阳脖纫哗吵氧僳拜货捆驮氢砖培玄撞逞缮伪霞弃垂吻辫涉济跳冉面向对象的分析和设计面向对象的分析和设计111复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程类的类型:(如:设备,角色,场所,) 类的特征:(如:确切的,原子的,并发的,) 协作者: 责任: 类名: CRC卡卡幻芬鬃花杠邪重营抄秒晾罩碴抱僳冒恿灯趾贱盛杯润膝殉鹤令饮淋麓频控面向对象的分析和设计面向对象的分析和设计112复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程2. 标识责任 责任是与类相关的属性和操作,简单地说,责任是类所知道的或要做的任何事情。 (1)标识属性 属

95、性表示类的稳定特征,即为了完成客户规定的目标所必须保存的类的信息,一般可以从问题陈述中提取出或通过对类的理解而辨识出属性。分析员可以再次研究问题陈述,选择那些应属于该对象的内容,同时对每个对象回答下列问题:“在当前的问题范围内,什么数据项(复合的和/或基本的)完整地定义了该对象?” 递很挛淀杏瞪混植住感仅抬冒掷歇克商作券锹菜析躺僳撕刚罪沟圆导碾板面向对象的分析和设计面向对象的分析和设计113复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程(2) 定义操作 操作定义了对象的行为并以某种方式修改对象的属性值。操作可以通过对系统的过程叙述的分析提取出来,通常叙述中的动词

96、可作为候选的操作。类所选择的每个操作展示了类的某种行为。操作大体可分为三类:以某种方式操纵数据的操作(如,增加、删除、重新格式化、选择);完成某种计算的操作;为控制事件的发生而监控对象的操作。 掂项玄骑礼留俄睛昧视宇羚搁踩敖押陇危神嗅棠诞谅勃些邪堤丫攻趣债勋面向对象的分析和设计面向对象的分析和设计114复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 3. 标识协作者 一一个个类类可可以以用用它它自自己己的的操操作作去去操操纵纵它它自自己己的的属属性性,从从而而完完成成某某一一特特定定的的责责任任,一一个个类类也也可可和和其其它它类类协协作作来来完完成成某某个个责

97、责任任。如如果果一一个个对对象象为为了了完完成成某某个个责责任任需需要要向向其其它它对对象象发发送送消消息息,则则我我们们说说该该对对象象和另一对象协作。协作实际上标识了类间的关系。和另一对象协作。协作实际上标识了类间的关系。 为为了了帮帮助助标标识识协协作作者者,可可以以检检索索类类间间的的类类属属关关系系。如如果果两两个个类类具具有有整整体体与与部部分分关关系系(一一个个对对象象是是另另一一个个对对象象的的一一部部分分),或或者者一一个个类类必必须须从从另另一一个个类类获获取取信信息息,或或者者一一个个类类依依赖赖于于(depends-upon)另另一一个类,则它们间往往有协作关系。个类,

98、则它们间往往有协作关系。 鞍连擦累劈研司获铁洒绵谍肥县归驼扭椿赠蓖瞬莎闪慎顽浸碰壤八遮祁块面向对象的分析和设计面向对象的分析和设计115复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程4. 复审CRC卡 在填好所有CRC卡后,应对它进行复审。复审应由客户和软件分析员参加,复审方法如下:1)参加复审的人,每人拿CRC卡片的一个子集。注意,有协作关系的卡片要分开,即,没有一个人持有两张有协作关系的卡片。2)将所有用况/场景分类。3) 复审负责人仔细阅读用况,当读到一个命名的对象时,将令牌(token)传送给持有对应类的卡片的人员。够州发砧蝇菇饼攫畜严凌败狸和笆择旭樟傀

99、玩凶橙示护畅朽罪酵痪蛊屯吞面向对象的分析和设计面向对象的分析和设计116复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程4) 收到令牌的类卡片持有者要描述卡片上记录的责任,复审小组将确定该类的一个或多个责任是否满足用况的需求。当某个责任需要协作时,将令牌传给协作者,并重复4)。5)如果卡片上的责任和协作不能适应用况,则需对卡片进行修改,这可能导致定义新的类,或在现有的卡片上刻画新的或修正的责任及协作者。这种做法持续至所有的用况都完成为止。 概貌并另但损首知枚亏煞银奶波慰卓衍富歇爪绳朋废锈经砸筹宣恼素置表面向对象的分析和设计面向对象的分析和设计117复旦大学计算机科

100、学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程UML对属性的描述 UML中,描述一个属性的语法如下:visibilityopt /opt attribute-name : type opt multiplicityopt = initial-valueopt property-stringopt其中带下标opt或 opt的部分表示该部分是任选的。visibility(可见性):表示该属性在哪个范围内可见(即可使用),见下表。 戳埃踞慌咕狠烃停誓蛙捞湖泄喂疗春斟务麻竭乙婚撇貉艳兆扇擂尝釜寓诛面向对象的分析和设计面向对象的分析和设计118复旦大学计算机科学与工程系复旦大学计算机科学

101、与工程系 软件工程课程软件工程课程符号种类语义+Public(公共的)任何能看到这个类的类都能看到该属性 #Protected(受保护的)这个类或者它的任何子孙类都能看到该属性 Private(私有的)只有这个类自身能看到该属性 Package(包的)在同一个包中的任何类能看到该属性 可见性可见性羹她刽企宝昔肺淋胺灵掠梢缉嗡品宛剖浦煤葫偿咆尚泌秦赤遣具景石椽届面向对象的分析和设计面向对象的分析和设计119复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程attribute-name:表示属性名。type(类型):用来指明属性名的类型。multiplicity(重数)

102、:用来指出该属性可能的值的个数以及它们的排列次序和唯一性。值的个数写在方括号( )中,其形式是:minimum.maximum。maximum可以是“*”,表示“无限”。当值的个数是单一值(如值的个数是3)时,可写成3.3或简写 成 3。 典 型 的 写 法 有 : 0.1, 1( 表 示1.1),*(表示0.*),1.*,1.3。当重数缺省时,隐含表示重数为1。当一个属性有多个值时,可在值的个数后面指明值元素的排列次序和唯一性,排列次序和唯一性写在花括号( )中,可使用的关键字如下表所示,其默认值是set,即无序且值元素唯一。 鉴芥则靛治巳哎禹犬尹掸好蝉缚痊玄体讳锋虽谅酞涅示火劈孤史竖省薯答

103、面向对象的分析和设计面向对象的分析和设计120复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程关键字排列次序和唯一性set无序,值元素唯一 bag无序,值元素不唯一 ordered set有序,值元素唯一 list(or sequence)有序,值元素不唯一 枢袒委审廉碾警噎刽标丘蚊菠捕册曹柜溜鼓片高农羊友骋舞卫喉岳稿辞需面向对象的分析和设计面向对象的分析和设计121复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程initial-value(初值):在创建一个类的实例对象时,应对其属性赋值,如果类中对某属性定义了初值,那么该初值可作为

104、创建对象时该属性的默认值。property-string(特征字符串):用来明确地指明该属性可能的候选值,如红,黄,绿指出该属性可枚举的值只能是红、黄、绿。臭判蹋域谨器歼懦队翟越姻芹怎额办诣谤侥楔婶礼温母校浦还殃避冤逮萄面向对象的分析和设计面向对象的分析和设计122复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程属 性 还 可 以 定 义 为 类 属 性 ( class attribute,C+或Java中称为静态属性static attibute) ,表示被这个类的所有实例对象共享该属性的值。类属性是这个类的名字空间中的全局变量。类属性用下划线来指明。maxCo

105、unt:Integer=0jobID:Integercreate()jobID=maxCount+schedule()Job类属性类属性实例属性实例属性类操作类操作实例操作实例操作予苍寿译胎预印捣催抄核馁辗遭洛州扶帧机却惰叶眷樱绵质幼故固扇税浸面向对象的分析和设计面向对象的分析和设计123复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程“发票发票”类的属性类的属性 Invoice + amount : Real+ date : Date = Current date+ customer : String+ line: record1.5set- administr

106、ator : String=“unspecified”- maxCount : Integer = 0- number of invoices : Integer+ status : Status = unpaid unpaid, paid彻尹杯毡掺孜羌宫襟戈我唾恃物疾宁榴旦主桌碗俊孺漾感稠衷拐母家开洋面向对象的分析和设计面向对象的分析和设计124复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程UML对操作的描述UML中描述一个操作的语法如下:visibilityopt operating-name(parameter-list) : return-type op

107、t property-string opt 操作可见性的含义与属性中的含义相同。参数表是用逗号分隔的形式参数序列,描述一个参数的语法如下:directionopt parameter-name :type multiplicityopt = default -valueopt 其中:direction(方向):用来指明参数信息流的方向 。魁虫诞肚玉秉垫昨熟软粹斌蓉氢忍踪障邵湿效竭摘墓狸浩抑茫梧粘丛铺腥面向对象的分析和设计面向对象的分析和设计125复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程方向的取值关键字语义 in传递值的输入参数,该参数的改变对调用者是无效的

108、 out输出参数,没有输入值,其最终值对调用者是有效的 inout一个可以修改的输入参数,其最终值对调用者是有效的 return调用的返回值,该值对调用者是有效的,语义上与out参数没有不同,但在一串表达式中使用时return是有效的 忧鞭茨赫籽檬硒韭缝链惹钓旺侍赘捏已公硅鼠导蛆瓶寓谚捐百刑韩辕剃清面向对象的分析和设计面向对象的分析和设计126复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程type 和multiplicity的含义与属性中的含义相同,default value(默认值)是在操作的调用者未提供参数时,用它作为该参数的值。 类也可以定义类操作(cla

109、ss operation)。通常操作是在该类的对象实例上被调用的,而类操作可以在没有对象实例的情况下被调用,但此时只允许访问类属性。 辟欠斯慈抵部汛厩鞭傻渔夜惕椰岩堵恬御袜甲生墒盼丧窝触睹丫屠涅俐勤面向对象的分析和设计面向对象的分析和设计127复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程FigureSize : SizePos : Position+ draw()+ resize( percentX : Integer=25 , percentY : Integer = 25 )+ returnPos() : Position楞赛既事溅迄辞谭错究阔噶白菲赌遁荆

110、憋疫汤谚泰萧咐然匈筛讣霉宙负跟面向对象的分析和设计面向对象的分析和设计128复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程类之间的关系关 系功能 符号关联类实例间连接的描述 依赖二个模型元素之间的一种关系 泛化更特殊描述与更一般描述之间的一种关系,用于继承和多态性类型声明 实现规约(specification)与它的实现之间的关系 峪千觉咎长棉揩片抉象浦矮宴劫厅粗畦蛤辑咒月呢卧幽田棵驴烤蕴观畦潍面向对象的分析和设计面向对象的分析和设计129复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程1. 关联关联描述了系统中对象之间或其它实例之

111、间的连接。关联的种类主要有二元关联,多元关联,受限关联,聚集(aggregation)和组合(composition)。增耻遭卸莹执采胶漾泽如炊爵竹恿动绕蜀鹿芒爱屡颈和袋馅殷陌序孩望皆面向对象的分析和设计面向对象的分析和设计130复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程(1)二元关联 二元关联表示为在两个类之间用一条直线连接,直线上可写上关联名。有首都有首都国家国家城市城市工作于工作于公公 司司员员 工工雇佣雇佣关联通常是双向的关联通常是双向的侦冗挝胸敏宜汇页晌枉圃诲酉必咨沪续轮秦誊挡迭唉营哀竟谷酌捏喂练洽面向对象的分析和设计面向对象的分析和设计131复旦

112、大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程关联的两端可加上重数(multiplicity) ,表示该类有多少个对象可与对方的一个对象关联 驾驶驾驶人人轿车轿车驾驶员驾驶员公车公车工作于工作于公公 司司员员 工工雇佣雇佣* 1工作于工作于公公 司司员员 工工雇佣雇佣* *关联的两端还可加上角色名(关联的两端还可加上角色名(role)褥闪辜去为文谰甜鳃气尝雅吱扁兴扶谦镜烙义驴矛少执恩饰蔬肇指堪棍咕面向对象的分析和设计面向对象的分析和设计132复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程允许一个类与自身关联允许一个类与自身关联 * 雇

113、佣雇佣 *工作于工作于工人工人1.*老板老板0.1管理管理公公 司司员员 工工雇佣关联的链雇佣关联的链公司公司A 张三张三公司公司B 李四李四公司公司A 王五王五公司公司C 张三张三链是关联的实例链是关联的实例择辖瘴璃答描陪吐达捧秀棍烽拱滇靡潮鸽朽横秘款钒埠磨睬靠某闰幢购匀面向对象的分析和设计面向对象的分析和设计133复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程一个类的对象在不同的关联中扮演不同的角色一个类的对象在不同的关联中扮演不同的角色保险公司保险公司人人保险合同保险合同保险单保险单0.11表示为表示为表达表达0.*1有有涉及涉及婚姻婚姻丈夫丈夫妻子妻子0

114、.*1.*涉及涉及有有保险客户保险客户解瑚莲绍习颖传饶刀腻作唇蛮叮记容虏狄墨晰梳败柒惩稠祟栏幽躯滦仲寄面向对象的分析和设计面向对象的分析和设计134复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程(2)多元关联 三个或三个以上的类之间可以互相关联 项目项目程序语言程序语言程序员程序员均柿名攀丘赖缴廷厅湿权佃盛幅屁恋墅赂勉显嫩性约也氮鹿阮霞婿颂腺酉面向对象的分析和设计面向对象的分析和设计135复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程CAD程序程序 : 项目项目C : 语言语言记账系统记账系统 : 项目项目COBOL : 语言语言

115、张三张三 : 开发人员开发人员三重关联对象图三重关联对象图坎坡治摹帆恰贺涯叠兴刹瑞栋霖本熙涂靛脱篙撬蚕鸽贝步茧仙掖倾缝兵罪面向对象的分析和设计面向对象的分析和设计136复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程(3)受限关联(qualified association):受限关联用于一对多或多对多的关联。限定符(qualifier)用来区分关联“多”端的对象集合,它指明了在关联“多”端的某个特殊对象 目录目录文件文件0.*ordered有序关联有序关联目录目录文件文件文件名文件名受限关联受限关联品跳蜘尧轮簿滞舞厌招剃沟奸照晒爪据簿桩摹诌撅分阔搞驶薯赎拔刹导敬

116、面向对象的分析和设计面向对象的分析和设计137复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程(4) 聚集和组合 聚集(aggregation)是表示整体一部分关系的一种关联,它的“部分”对象可以是任意“整体”对象的一部分。 聚集聚集成员成员* * 组组个人个人恰站朗吴而纽榔卞撅均茹吭谆佳目亦化共瑟涕整村毁举瘤呀丈润绕将垂否面向对象的分析和设计面向对象的分析和设计138复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程组合(composition):组合是一种更强形式的关联,代表整体的组合对象有管理它的部分对象的特有责任,如部分对象的分

117、配和解除分配。组合关联具有强的物主身份,即“整体”对象拥有“部分”对象,“部分”对象生存在“整体”对象中。 *窗口窗口正文正文对话框对话框按钮按钮菜单菜单 * * *豺魏叼锤底宗沁号浙糙谜万泼嵌钨舍细是穴沦凶堵聋机爹肚分拘掉剃候糜面向对象的分析和设计面向对象的分析和设计139复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程(5)关联类 :UML中可以把关联定义成类,该关联的每个链都是这个类的实例 关联类关联类用户用户工作站工作站授权授权 优先级优先级特权特权 开始一个时间片开始一个时间片* 授权授权 *站伊榜岂禾絮棵霖耻筹炼玫盈基距进窜垃带蘸拷跺翁磋卢溯屋粹演吗期

118、米面向对象的分析和设计面向对象的分析和设计140复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程(6)导航性(navigability)导航导航 选课选课 学生学生课程课程(a a) 选课选课 学生学生课程课程(c c) 选课选课 学生学生课程课程(b b)凋需站茂祟卢茶寥毖酶纵端匿凰茅涕凶酋柿携捎助伏搔筏笑蹈撬塘苟挨守面向对象的分析和设计面向对象的分析和设计141复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程导航性符号 明确的含义隐含的含义未指明双向可导航右边可导航左边未指明只有右边可导航只有右边可导航只有右边可导航右边未指明左边

119、不可导航只有右边可导航双向可导航双向可导航双向不可导航双向不可导航 脆枷吩吾炭仁痰涸扯菏惠手赚肪簇地颐醒虱虞滑届僧拖斥店隙纪辩氓臼谦面向对象的分析和设计面向对象的分析和设计142复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 泛化 泛化指出类间的泛化指出类间的“一般一般特殊关系特殊关系” (is-a)一般类定义了它的特殊类的公共属性和操作一般类定义了它的特殊类的公共属性和操作对一般类扩展一些属性和对一般类扩展一些属性和/或操作后,可以特化或操作后,可以特化(specialize)成特殊类)成特殊类一般类是特殊类的父类,特殊类是一般类的子一般类是特殊类的父类,特殊

120、类是一般类的子类类特殊类可以继承一般类的属性和操作特殊类可以继承一般类的属性和操作子类可以定义自己的属性和操作,也可重新定子类可以定义自己的属性和操作,也可重新定义父类中的操作,但重新定义的操作必须与父义父类中的操作,但重新定义的操作必须与父类具有相同的操作特征(类具有相同的操作特征(signature)发锹挎欲节动火震棱谷侣熊擦明绅伙哦融颇戳邪涟伯繁休赊赴曙根互果夹面向对象的分析和设计面向对象的分析和设计143复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程显示显示计算面积计算面积四边形四边形泛化和继承泛化和继承显示显示六边形六边形显示显示三角形三角形多边形多边

121、形显示显示边数边数顶角座标顶角座标长长宽宽矩形矩形计算面积计算面积祭圈箍唬囚燃赞器毒待杠膳顷累肠仇样彦努瘴聚部坡哉久峪依会潭盟赃沼面向对象的分析和设计面向对象的分析和设计144复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程泛化是一种分类学关系,一个一般类可以 从 不 同 的 维 或 方 面 将 其 特 化(specialization)成不同的特殊类集合,用一个类元(用作分类符)来表示一个维或方面,由一个类元特化而成的特殊类组成一个泛化集(generalization set)。在泛化集中可对其元素应用约束,在UML中提供以下约束,见下表。 翔蔓酗骏沮勺墙训茵逛

122、钒孜莎熬上柒搜烹喳陀纂品啼雌抗千赖聚销嫁效荔面向对象的分析和设计面向对象的分析和设计145复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程泛化集的约束符号含义disjoint(不相交) 该类元在泛化集中是互斥的overlapping(交迭) 该类元在泛化集中不是互斥的complete(完全的)该类元在泛化集中完全覆盖特化的维incomplete(不完全的)该类元在泛化集中不完全覆盖特化的维摈驭韦减翠塘孺哮臂悦孕惶饿胞瑟眺拎逢啸陕轴帚芒哎镀瘸钉籽缮则甭骸面向对象的分析和设计面向对象的分析和设计146复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软

123、件工程课程泛化集的约束泛化集的约束医生医生人人男人男人工人工人女人女人教师教师overlapping,incompletedisjoint,complete:职业:职业:职业:职业:职业:职业:性别:性别:性别:性别阻曾泞待滓赖抛之欲蟹醚闻宿的甸假利题敞漠慧肛辱唉妈吱牛耐庇贵义训面向对象的分析和设计面向对象的分析和设计147复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程3. 实现:实现关系将一个模型元素(如类)连接到另一个模型元素(如接口),后者(如接口)是行为的规约(specification),而不是结构,前者(如类)必须至少支持(通过继承或直接声明)后者的

124、所有操作。可以认为前者是后者的实现。泛化和实现都可以将一般描述与具体描述联系起来。其区别是,泛化是同一语义层上的元素之间的连接,通常在同一模型内;而实现是不同语义层中的元素之间的连接,它通常建立在不同的模型内,如设计类到分析类是一种实现关系。诡献踊鳖吝烛急矽狮耘蟹逼炼收衍涸淆届秩繁坍审草恶谓鸽兴馈闻递任组面向对象的分析和设计面向对象的分析和设计148复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程实现关系实现关系interfacechoiceBlocksetDefault(choice:Choice)getChoice()():ChoiceRadioButtonA

125、rraysetDefault(choice:Button)getChoice()():ButtonPopUpMenusetDefault(choice:String )getChoice()(): StringButtonChoiceString1.*1.*1.*choicechoicechoice壳晨邀址隅蔬劝诫岔嫌牢涂屏敝挥贫俄棉骑半烬应乡抠怖琼耸厉疏挝掌章面向对象的分析和设计面向对象的分析和设计149复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程4. 依赖:依赖指出两个或多个模型元素之间语义上的关系。它表示被依赖元素的变化会要求或指示依赖元素的改变。 依赖

126、关系用一个虚线箭头表示,箭头上可附加含关键字的版型,关键字用来指明依赖的种类。在UML20中的依赖种类如下:Access(访问), bind(绑定), call(调用), create(创建), derive(派生), instantiate(实例化), permit(允许), realize(实现), refine(精化), send(发送), substitute(替换), trace(追踪依赖), use(使用)匪撵酸苟晓干轻彭丈您昼陪恐诅灿银庇依关阅戳扳过烬郭判誉渴噪垃耸陡面向对象的分析和设计面向对象的分析和设计150复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软

127、件工程课程Scheduling Engine依赖关系依赖关系Box Officeuse祷喀谐坡漠亿田萌耿骗奥饱瞪浪冯诉烽迄呛叮静租惦台箭余窑龟沽耘犀跺面向对象的分析和设计面向对象的分析和设计151复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程5. 约束和派生(constraint & derivation)约束是用自然语言或特定的形式语言正文表示的语义条件或限制,它用“正文字符串”形式表示。约束可以附加到任何模型元素上,如前面有关泛化的约束有:不相交、交迭、完全的、不完全的。鲁龙挥悬言雾烤粤塘荡浴席年谈疥垢肮胡鹃祥鄂芽簧厉磷耸柞兴亢列炎骚面向对象的分析和设计面向

128、对象的分析和设计152复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程* * *保险保险公司公司人人公司公司保险保险合同合同xor* * *保险保险公司公司人人公司公司保险保险合同合同目录目录文件文件 0.*ordered夹汐柄佐琶雹吠药筷虚踌骇马农郊兆昏伴杉椅擎盂噪壶览触务窒逛识栗歉面向对象的分析和设计面向对象的分析和设计153复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程1.* 成员成员 1 1 党派领袖党派领袖 1subset政治家政治家党派党派关联的约束关系关联的约束关系撂蜕联漏钥仿暂哆袍恕扼腥弦啮奢斥弟肥拆眉婴邓僳勤啤穗纲

129、吃示慎怯鹿面向对象的分析和设计面向对象的分析和设计154复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程self.employer=self.boss.employer 0.1工人工人*老板老板0.1公公 司司员员 工工 *雇员雇员雇主雇主刮富洛茹蹬喘吐桶嘱聚只迷栖湘刚塘企赋兰额奎薯鸣屑峭粥凤畸综晚镇淖面向对象的分析和设计面向对象的分析和设计155复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 Cost-priceSales-price/profitArticleprofit = Sales-price - Cost-price I

130、nvoice + amount : Real+ date : Date = Current date+ customer : String+ specification : String- administrator : String=“unspecified”- number of invoices : Integer+ status : Status = unpaid unpaid, paid碎乞对芜斡哈舌操盐跺扦跺欠哥屏右篓点岿担叹暂冉骄黔咨剃踪瑞祸健雌面向对象的分析和设计面向对象的分析和设计156复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程关联也可以被

131、派生或约束1 * person.employer=person.department.employer *1employeremployerdepartmentworksForDepartment/worksForCompany1*公司公司部门部门人人抒旁琶贵浆盎囱春贼渡救嗅诚秤识算秆遵侮隙垣醋毋莫挞疤燕倍羽陇烩宫面向对象的分析和设计面向对象的分析和设计157复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程模板(Templates) 模板是一个参数化的模型元素,使用它时参数必须在建模时绑定到实际值。模板的同义词是参数化元素。模板类不是一个直接可用的类,因为它有未绑

132、定的参数,必须将它的参数绑定到实际值,以生成实际的类。辆操牡沫殆鸥级张铸休苟乙妈镑兼沾誉邓渗窍尿决惦者鸳布迂哟掠磋肛新面向对象的分析和设计面向对象的分析和设计158复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程bindArrayelement:TnT,n:integerExpression=2Arrayelement:TnT,n:integerExpression=2ArraycolorArray模板模板(a)(c)(b)捉揪惩违揽德寅苦牙锥诉郊殆砖蓄击炳燥鳞鞘饥诱乱叫端泽亲丝拽府眠关面向对象的分析和设计面向对象的分析和设计159复旦大学计算机科学与工程系复旦大

133、学计算机科学与工程系 软件工程课程软件工程课程一个模板类可以是一个一般类的子类,这意味着由绑定该模板而形成的所有类都是给定类(一般类)的子类。作为子类的模板作为子类的模板贝俭痹沟卧赃祥阎认章悠酵钾崖朗洲渭母柑泌搞丹散诺管毗王溯语粕条薪面向对象的分析和设计面向对象的分析和设计160复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程在使用模板生成实际类时,还可在绑定的类中附加特征(feature)。TopTenListArrayelement:TnT,n:integerExpression=2show:Datehost:person 对绑定的类添加属性对绑定的类添加属性

134、 bind呛酉贺井翱恫杭薪避搓渣则润灸豫越灶履处洲慌着托矩案卡息口剑幽更果面向对象的分析和设计面向对象的分析和设计161复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要面向对象的基本概念面向对象的基本概念面向对象的分析和设计过程面向对象的分析和设计过程UML概述概述用况建模用况建模静态建模静态建模动态建模动态建模物理体系结构建模物理体系结构建模锡拿界临锹爸牢蚊嚼猩畅摆辗甄健馁借验阔丈谁苯聪拨饯淑凉多拄俩朽褐面向对象的分析和设计面向对象的分析和设计162复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程动态建模动态建模 动

135、态建模用来描述系统的动态行为,显示对象在系统运行期间不同时刻的动态交互。UML中用状态机图、活动图、顺序图、通信图和协作图来建立动态模型。 鲤皇咽俘颂难孜氮年巨暑鹏溜豹蹲两盯遵各沃财烤捏蕊与疑茸钾寂剥括歇面向对象的分析和设计面向对象的分析和设计163复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程状态机图状态机图状态机图通常是对类描述的补充,它说明该类的对象所有可能的状态,以及哪些事件将导致状态的改变。状态机图描述了对象的动态行为,是一种对象生存周期的模型。按军亩幼彪枪链吭赋改挞酥唐秋澡洱墙唤妮监约快抓东巴系邮俊年涵丧屎面向对象的分析和设计面向对象的分析和设计16

136、4复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程画状态机图的步骤画状态机图的步骤1)列出对象具有的所有状态 状态分为起始状态、结束状态和中间状态。一张状态机图可以有一个起始状态和若干个(可以为0)结束状态。2)标识导致状态转换的事件 当一个对象接收到某个事件时,会导致从一个状态转换到另一个状态,称为状态迁移(transition)。 3)为状态和迁移定义状态变量和动作 在状态迁移和/或处于某个状态中时都可能需要执行一些相应的动作,综合这些动作,使得对象完成相应的功能。少谁冤敝右虑若禽雇咽佐喘约湘坎瘪痊杜郡拂链铰铸扣港影付汇脑观患封面向对象的分析和设计面向对象的分

137、析和设计165复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程状态名状态名状态变量状态变量活动活动状态状态迁移迁移起始状态起始状态结束状态结束状态状态机图的基本符号状态机图的基本符号蜜舷滩撼击族晴恩颖喷或膳烟语凶券败伊孵英锯咏寡寸烤太问儡啄使皇库面向对象的分析和设计面向对象的分析和设计166复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程电梯升降的状态机图电梯升降的状态机图Moving updo/moving to floorMoving downdo/moving to floorIdletimer=0do/increase tim

138、erarrivedarrivedgo down (floor)Moving to First floorgo up(floor)timer=time-outarrivedgo up(floor)Onfirst floor火嘻禹獭恍孔掷稻疆滦倚孔沟倦管亡汲捌委艺卿压鳖瘦毫辕罪殃卤袜流无面向对象的分析和设计面向对象的分析和设计167复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程状态状态一个状态由状态名、状态变量和活动三部分组成。状态变量是状态机图所显示的类的属性,也可以是临时变量。活动部分列出了处于该状态时要执行的事件和动作。 舷宏界瞥货原虱牌其捧讨陨降兆啦催植迷启

139、枷箱萤咒纯衫村框沾骑联悬烯面向对象的分析和设计面向对象的分析和设计168复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程有三个标准事件:entry,exit和do。Entry和exit事件用于指明进入和退出该状态时的特定动作。do事件用于指明在该状态中时执行的动作。活动区中事件的语法如下: event-nameopt (argument list ) opt guard-condition opt /activity-expressionopt 其中,事件名可以是包括三个标准事件(entry,exit,do)在内的任何事件,参数表表示该事件所需的参数,警戒条件是一

140、布尔表达式,动作表达式是该事件将被执行的动作。戏段数燕昆逮孙萝蹿炸撑哗购揍碌隧针煎跑诉氖祭矽逆眷撞便芭炸鼓转覆面向对象的分析和设计面向对象的分析和设计169复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程loginlogin time=current timeentry/type “login”do/get use_namedo/get passwordhelp/display helpexit/login(use_name,password)login状态状态窘馋腻澄展戚产浇胃巨肝味削贤考势腑炙淤篙萄洪得浸网孺驼煮硼蒂遮齿面向对象的分析和设计面向对象的分析和设计

141、170复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程自动售货机自动售货机状态机图状态机图idleCollecting moneyCoins in(amount)/add to balancetest and computeDo:test item and compute changeDo:dispense itemDo:make changeSelect(item) change 0change = 0潜励罪怜便浙羹城请退束蔬丢预泌酞累符制榜耐踏雀试五隘虞洲溺误制噬面向对象的分析和设计面向对象的分析和设计171复旦大学计算机科学与工程系复旦大学计算机科学与工程系

142、 软件工程课程软件工程课程状态迁移状态迁移1. 状态迁移 引起状态迁移的原因通常有两种:当标在迁移箭头上的事件出现时会引起状态的迁移。此时,首先执行引起迁移的事件中的动作,然后迁移到新的状态,执行新状态中的内部动作(包括entry、exit、do以及用户定义的动作)。在执行do或用户定义的动作时,可以被外部的事件(将导致该状态的迁移)中断,但entry动作和exit动作是不能被中断的,并且它们总是要执行完的。 梆毁鞋鲁象殖冠摈聊荤仍戈梢脸森荧匣遍枝蛙侯俊碎瘤田霖戴阉尚只烁泡面向对象的分析和设计面向对象的分析和设计172复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课

143、程当状态机图中相应的迁移上未指明事件时,表示当位于迁移箭头源头的状态中的内部动作(包括entry、exit、do以及用户定义的动作)全部执行完后,该状态迁移被自动触发。 纂历腔帜赊藐洞丑从庙思最轮堤刺眨哄梆就忌应痔隶簧括矾捂肘岩蘑滴槐面向对象的分析和设计面向对象的分析和设计173复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程自动售货机自动售货机状态机图状态机图idleCollecting moneyCoins in(amount)/add to balancetest and computeDo:test item and compute changeDo:di

144、spense itemDo:make changeSelect(item) change 0change = 0烫氖犯密抚哲接燎汇玻浑河峡梆志慌祥锡硼拱窃蔗锌揪唱躺凉遇伏蜀罐术面向对象的分析和设计面向对象的分析和设计174复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程状态迁移的语法如下: event-name opt ( parameter-list ) opt guard-condition opt /effect-listopt其中:事件名及其参数表指出触发迁移的事件,参数表的语法与“操作”中定义语法相同。警戒条件是一个布尔表达式。如果状态迁移中既有事件特征

145、又有警戒条件,则表示仅当这个事件发生并且警戒条件为真时才触发相应的状态迁移;如果状态迁移上只有警戒条件,则表示当该条件变为真时,触发状态迁移。嫌颜纤宜卖铃易趟轴误邱忠羽险纺曾婴院秒泡负衷邪操捍诱与鉴强锁示憨面向对象的分析和设计面向对象的分析和设计175复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程effect-list是当该迁移触发时执行的过程表达式,即动作表达式。表达式中可引用相应对象中的属性、操作,或者事件特征中的参数。动作可以包括调用、发送和其它种类的动作。一个状态迁移上可以有多个用/符号分隔动作表达式,它们按从左到右的次序依次执行。不允许有嵌套的或递归的

146、动作表达式。孜秧怂植但士忧蹄喜见寐豹忘睡蹿遵最平挤造广狸谍卑赛堤熬芹苗炽晤秤面向对象的分析和设计面向对象的分析和设计176复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程timer=time-out/go down (first floor)电梯升降的状态机图电梯升降的状态机图Moving updo/moving to floorMoving downdo/moving to floorIdletimer=0do/increase timerarrivedarrivedgo down (floor)go up(floor)go up(floor)Onfirst f

147、loor垫饥哑吭合碗崭昼找怒醚俞基凶洞睬婶势盛嫉亲秆庆硕峡系基糙衍王琼喀面向对象的分析和设计面向对象的分析和设计177复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程timer=time-out self.go down(first floor)电梯升降的状态机图电梯升降的状态机图Moving updo/moving to floorMoving downdo/moving to floorIdletimer=0do/increase timerarrivedarrivedgo down (floor)go up(floor)go up(floor)Onfirst

148、 floor辆顶侵橱妇鹏寂赐贺巷溜瘁靴牛喝砷樊埠绍傻柜褒堪惶藕升霸融吠冈唉呻面向对象的分析和设计面向对象的分析和设计178复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程事件事件是指已发生并可能引发某种活动的一件事 类类数字手表类及其状态机图数字手表类及其状态机图inc/hours := hours + 1Digital_Watchmode_button()inc()do/displayminutesSet minutesdo/display hoursSet hoursdo/displaycurrent timeDisplaymode_buttonmode_bu

149、ttoninc/minutes := minutes + 1mode_button状态机图状态机图书吮硷雄罩侵协贿惟摸限洼盘嘲扩副傅价卢滇拢碧芝夕分哮戚啊饱神无格面向对象的分析和设计面向对象的分析和设计179复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程事件的种类事件类型描述调用事件call event收到一条被一个对象外部同步调用的请求改变事件change event布尔表达式值的改变信号事件signal event收到供对象间异步通信用的一个外部的、被命名的信号(实体)时间事件time event到达一个绝对时间或经过一段相对的时间量救举修奋枕喷燃宋盛嘴换戎

150、附侨录侦胁从瞬褂堪足春挎景风寺屁须垦查遁面向对象的分析和设计面向对象的分析和设计180复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程IdleinputSenddo/send (input)to correspondingclassThe signal could be an object of the following classes:Keyboard,Left Mouse Button,Right Mouse Button,Voice Recognitionsignalinputabstractdevice:Devicetime:TimesignalKeyb

151、oardcharacter:Charup:Booleandown:BooleansignalVoice Recognitioncommando: stringsignalMouseabstractup:Booleandown:BooleanxPos: intyPos: intsignalRight MouseButtonsignalLeft MouseButton信号类层次信号类层次渔允矾舷问颅或蛮择步幢刺散王襄纶傲衣晋瞥酷址尤嚣妓谴恬赔人邪留胎面向对象的分析和设计面向对象的分析和设计181复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程状态机图之间发送的消息状态

152、机图之间发送的消息 状态机图之间可通过动作(如在发送子句中指明接收者)或图间的虚线箭头向其他状态机图发送消息。 当采用虚线箭头时,状态机图必须画在矩形框中。 在图间的消息箭头有两种画法:从表示源对象的状态机图中的状态迁移上画虚线箭头到从表示源对象的状态机图中的状态迁移上画虚线箭头到表示目标对象的状态机图的边框上;表示目标对象的状态机图的边框上;在两个状态机图的边框间画虚线箭头,表示源对象在其在两个状态机图的边框间画虚线箭头,表示源对象在其执行期间的某时刻发送该消息。执行期间的某时刻发送该消息。 在状态机图之间发送消息时,在目标对象的状态机图中应画有一个捕获这个消息的相应的迁移。烛爹转躯或杖隔谴

153、闺抢倒援斜汪蹬衔左孩获沾臆责宅缅屹哲济糟铸殿俱婿面向对象的分析和设计面向对象的分析和设计182复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程On()Off()Remote ControlPlay()Stop()OffOnOn()Off()Play()Stop()OffOn/StopOn/PlayOff()/Stop()CD PlayerOn()Off ()Stop()Play()状态机图之间的消息发送状态机图之间的消息发送呈梁戎漳涯眯涧羔恕霸廉汾罢步态旬小挝说唇手哮悠觉嗡得撕蛮侯骇嫩输面向对象的分析和设计面向对象的分析和设计183复旦大学计算机科学与工程系复旦大

154、学计算机科学与工程系 软件工程课程软件工程课程组合状态组合状态 一个简单状态没有子结构,一个组合状态被分解成区域,每个区域中包含一或多个直接子状态。下面给出了UML中的主要状态种类简单状态:一个设有子结构的状态正交状态(并发):一个被分成多个区域的状态,当该状态活跃时,每个区域中的一个直接子状态并发地活跃SS爬肆兼疤鱼殷痉疼钒藕资劣彭蛤芝啸渊空蹋牵玲慢雷牵耻伊撑艇影舷漠民面向对象的分析和设计面向对象的分析和设计184复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程非正交状态(非并发):一个包含一或多个直接子状态的组合状态,当该组合状态活跃时,在同一时刻组合状态中只

155、有一个子状态是活跃的初始状态:当嵌套状态被调用时,表示开始状态的伪状态终结状态:一个特定的状态,它的激活表示嵌套状态已完成了活动。S灶趾寻园切薪疤蝶赋卫短盅娇试供慕汾持染辐蹄巫粕采憋痪堪耸姨昭妹瘴面向对象的分析和设计面向对象的分析和设计185复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程终止:一个特定的状态,它的激活将终止拥有该状态机的对象的执行 选择:一个伪状态,它实现单个运行到完成(run-to-completion)迁移中的动态分枝孜雌空决帮忍嗣睁悍钠谐眨哲水窟亮魏铅歼碧旅辉诺托模汗以穗迁骆掖怕面向对象的分析和设计面向对象的分析和设计186复旦大学计算机科

156、学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程历史状态:一个伪状态,它的激活将还原到组合状态中先前活跃的状态入口点:一个状态机中外部可见的伪状态,它标识作为目标的内部状态出口点:一个状态机中外部可见的伪状态,它标识作为源的内部状态HaTbU炕巳象琴伐允耘勉映陕辣枚请梅方裙样豆趴誊赁察榷映乳疫潜盏咸旋懒吏面向对象的分析和设计面向对象的分析和设计187复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程非正交状态非正交状态(非并发):一个包含一或多个直接子状态的组合状态,当该组合状态活跃时,在同一时刻组合状态中只有一个子状态是活跃的。一个状态可以有嵌套的子

157、状态,一个非正交的组合状态可以拥有一或多个直接子状态,当该组合状态活跃时,该组合状态在同一时刻中只有一个子状态是活跃的。例如,汽车中的变速器有中间状态、前进状态和倒退状态,前进状态又有三个排挡子状态:第一、第二、第三,在任一时刻,这三个子状态同时只有一个是活动的,所以前进状态是“非正交”组合状态。赁曲沟氛漫澡瘁让曰缮六诉傍忙逆躬贡钧声帜羌纷翰唱宜超听裂著纸瞳叉面向对象的分析和设计面向对象的分析和设计188复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程非正交(嵌套)状态非正交(嵌套)状态ForwardStopdown shiftup shiftdown shift

158、up shiftFirstSecondThirdpush Npush Rpush Npush FNeutralReverseTransmission戊涅杰望脊询酮李涯伐湿拦宛走总赏顾刑石味太惺祷误怒侣浴尺拦赶嗓宗面向对象的分析和设计面向对象的分析和设计189复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程正交状态正交状态三局二胜比赛的正交状态三局二胜比赛的正交状态Playing rubberA VulnerabilityA winA winA wins rubberNot vulnerablevulnerableB VulnerabilityB winB winB

159、 wins rubberNotvulnerablevulnerable嚷约圾多赛接畸词倡娥富品刊睬展轻当央客秦诅往擞臼甸酪噎晾相袁溢吐面向对象的分析和设计面向对象的分析和设计190复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程如果某些对象是另一些对象的聚集对象,则如果某些对象是另一些对象的聚集对象,则这些代表这些代表“部分部分”对象的状态图通常是并发对象的状态图通常是并发的,它们都是聚集对象的并发子状态。的,它们都是聚集对象的并发子状态。例如例如“汽车汽车”对象是对象是“点火点火”、“变速器变速器”、“刹车刹车”、“油门油门”等对象的聚集对象。等对象的聚集对象。

160、transmissionignitionacceleratorcarbrake枯垃悼操淖胰袍骑羡罕靴小拖走铺潭材牛蹈柬祟盎海媳揣礁谜牧星枯矫饱面向对象的分析和设计面向对象的分析和设计191复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程Carturn key to start Transmission in Neutralrelease keyturn key offOffStartingOnIgnitionAcceleratordepress acceleratorReleaseacceleratoronoffBrake depress brake releas

161、e brakeonoffTransmissionForwardStopdown shiftup shiftdown shiftup shiftFirstSecondThirdpush Npush Rpush Npush FNeutralReverse汽汽车车-正正交交状状态态逸颈惨逃妓芒庇豌天窍次蜗掖镐疫美销鳞授醋卷眨承蓟梳找卧漳芋简件兽面向对象的分析和设计面向对象的分析和设计192复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程可以用复杂迁移表示并发的状态迁移。一个复杂迁移可以有多个源状态或目标状态,它们可以把控制分解为并行运行的并发线程,或将多个并发线程合并成

162、单个线程。一个复杂迁移用一个短而粗的垂直条(bar)表示,可以从一个或多个状态(称为源状态)用实线箭头指向bar , bar还可以用一个或多个实线箭头指向其它状态(称为目标状态)。迁移的警戒条件可写在bar的旁边。只有当对象处于所有的源状态中,并且迁移的警戒条件为真时,迁移才被触发,意味着并发执行的开始或结束。因此,bar实际上在并发活动中起同步的作用。之龚船报獭稻其缆峪脖铁品宝完环耗祷铲旱队神谚磊邪蔓峙障眨驱拨抗咸面向对象的分析和设计面向对象的分析和设计193复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程cash taken and card takenrea

163、dySetting upReady to resetEmittingdo:dispense cashdo:eject card复杂迁移复杂迁移午逗释赤我膨措讶拐伎候赁兢净东的裁斑猎宁蛹汕枝噪盾扬仗肤家咱措妮面向对象的分析和设计面向对象的分析和设计194复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程历史指示器历史指示器 历史指示器用来记忆内部的状态,用里面标有H字母的圆圈表示。历史指示器作用于标有它的状态区域,如果指向历史指示器的迁移被触发,对象就会恢复到该状态区域先前活跃的状态。它使得对象能在活动被中断或需要逆行时回到先前活跃的那个状态。历史指示器可以有几个进入

164、它的状态迁移,但没有离开它的状态迁移。 堪乡习粥部咙工思嫡匆唤邻番诀婶萤淆彪函啊石馅按屎衍迷数晶滩妻笑卑面向对象的分析和设计面向对象的分析和设计195复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程Restart()Self.Restart()历史历史指示器指示器Create()alternative=stopalternative=stopalternative =try againOut of memory ( )alternative=continueDisk Error ( )HDisk errorentry / fix diskdo / show que

165、stion dialogdo/Ask alternativeMemory lowentry / show question dialogdo / ask alternativeOS runningRestart OSstart install shieldInstallentry/ask installingquestionsdo/install softwareInstall software谅贩蚌包片噎念躯篓楚靠漓甥波锹焚篡哆扒瑚妊籽炊捧琴蜂枝潍掌去样看面向对象的分析和设计面向对象的分析和设计196复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程活动图活动图活

166、动图可看作一种特殊形式的状态机,用于对计算流活动图可看作一种特殊形式的状态机,用于对计算流程和工作流建模。活动图的状态表示计算过程中所处程和工作流建模。活动图的状态表示计算过程中所处的各种状态。的各种状态。活动图用来描述完成一个操作所需要的活动,或者是活动图用来描述完成一个操作所需要的活动,或者是一个用况实例(场景)的活动。一个用况实例(场景)的活动。活动图使用状态机图的符号表示,活动图中的状态称活动图使用状态机图的符号表示,活动图中的状态称为动作状态,用圆角矩形表示,动作状态之间的迁移为动作状态,用圆角矩形表示,动作状态之间的迁移用箭头表示,迁移上可以附加警戒条件、发送子句和用箭头表示,迁移

167、上可以附加警戒条件、发送子句和动作表达式。动作表达式。与状态机图不同的是,活动图中动作状态之间的迁移与状态机图不同的是,活动图中动作状态之间的迁移不是靠事件触发的,当动作状态中的活动完成时迁移不是靠事件触发的,当动作状态中的活动完成时迁移就被触发。就被触发。 怨滨渗枝斜矿津似腊凝段丧姚哇系侧惦锐篙馆尸噪属夕痰舌燎笔三必咐贺面向对象的分析和设计面向对象的分析和设计197复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程Printer.Print( file )free disk spacedisk fullCustomerWindow.printAllCustomer

168、s( )ShowMessageBox“Disk full” onscreenShowMessageBox“Printing” onscreenCreate postscriptfileRemoveMessageBox活动图实例活动图实例淬陀癸疯择渐丘葵贿宰瞧瑰尾沟冗量揖他捣畜绑巫除谊权加泪般拢惜赛豆面向对象的分析和设计面向对象的分析和设计198复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程一张活动图可划分成若干个矩形区,每个矩形区为一个泳道,泳道名放在矩形区的顶端。通常根据责任把活动组织到不同的泳道中,它能清楚地表明动作在哪里执行(在哪个对象中),或者表明一个组

169、织的哪部分工作(一个动作)被执行。一个动作迁移可以分解成二个或多个导致并行动作的迁移,若干个来自并行活动的迁移也可以合并成一个迁移。值得注意的是,在合并之前并行迁移上的活动必须全部完成。在活动图中用黑体线来表示迁移的分解和合并。活动图中可以表示对象,对象用对象符号(矩形)表示,它可作为活动的输入或输出(用虚线箭头连接),也可展示一个对象受一特定动作的影响(用动作和对象之间的虚线表示)。 馈饭肚靴眩沏赊砷妓纫觉颖箭墨络互滔锭馅瘸垢似到察俊委拒孕矗直糟仟面向对象的分析和设计面向对象的分析和设计199复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程泳道泳道Display

170、erSamplerUpdatingdisplayerInitiateSampler.Run(channel,frequency)MeasuringMeasuredvalue窝桩米走讶邯感薄遭退碍拴沁珠适挥守邵荐检饱贱倦悔佐旱汁驰氧祁却才面向对象的分析和设计面向对象的分析和设计200复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程活动图中可以描述信号的发送和接收 CustomerWindow.PrintAllCustomers( )ShowMessageBox“Printing” onscreenCreate postscriptfilePrint( file )R

171、emoveMessageBoxaPrinter:PrinterPrintPrint( file )活动图中的信号发送和接收活动图中的信号发送和接收垫鳞胰恕均历绣碗玖香阀埔茫锨较讽佐雄距握垢绚汰歇惰潞懒阀饿达苫鼠面向对象的分析和设计面向对象的分析和设计201复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程活动图还可以用来描述用况 描述用况的活动图描述用况的活动图未付款未付款已付款已付款*对每一订单项对每一订单项有货有货缺货缺货取消并取消并退回订单退回订单收到订单收到订单付款认可付款认可检查检查订单项订单项制作并发放制作并发放提货单提货单更新库存更新库存制作并发放制作

172、并发放缺货单缺货单制作并发放制作并发放采购单采购单乌烛垣菱嵌蛮敢新膏关宾枯玩潦气喳躯华儿阀艰瞬痈演宠塞抱佯妇当漱颠面向对象的分析和设计面向对象的分析和设计202复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程顺序图顺序图顺序图用来描述对象间的交互行为,它关注于消息的顺序,即对象间消息的发送和接收的顺序。顺序图还揭示了一个特定场景的交互,即系统执行期间发生在某时间点的对象之间的特定交互。它适合于描述实时系统中的时间特性和时间约束。顺序图有两个坐标,垂直坐标表示时间(从上到下),水平坐标表示一组对象(用对象框表示)。夹焦恒泛冒夯沟挝造倦贱匝瞪玉小揽娶夷载磕屏麦性叁泡厚

173、陕韭秋搭欣孪面向对象的分析和设计面向对象的分析和设计203复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程顺序图中对象框下可画一垂直的虚线,称为该对象的生存线(lifeline),用来指出该对象执行期间的时序。对象之间的消息发送用生存线之间的消息箭头表示。当一个对象接收到一个消息时,该对象开始活动,称为激活。激活画成对象生存线上的一个长方形框,表示该对象可能在执行自己的代码,可能在等待另一对象的返回。按垂直坐标从上到下的次序读顺序图,可以观察到随时间的前进消息通信的顺序。矽识狡蔷傈跟盲特婿急驮斯尚熄轮品狱瘩遗僧阐拎登艺从蚌被蔚呵起刃佯面向对象的分析和设计面向对象的

174、分析和设计204复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 呼叫方拿起受话器 拨号音开始 拨数字(2) 拨号音结束 拨数字(2) 拨数字(8) 拨数字(2) 拨数字(1) 铃声 电话振铃 应叫方摘机 铃声消失 停止振铃 电话接通 电话接通 呼叫方挂机 电话被切断 电话被切断 应叫方挂机呼叫方呼叫方电话线电话线应叫方应叫方傈惨择躺函撮础捣傻著七岗铬翘徐旁促函搅晒凶沈洱春焕盖器荤嗡饥焊忍面向对象的分析和设计面向对象的分析和设计205复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程顺序图中描述消息的语法如下: attribute =

175、opt name (argument-list) opt :return-valueopt其中:attribute是生命线的属性(对象名),用以存储返回值。name是消息名(信号或操作名)。argument-list是一个参数值的表,每个参数值可有下列形式之一:argument-valueparameter-name=argument-value当参数值是“”时,表示任何参数值都是与模型一致的。name (argument-list) opt可以用“*”替代,此时,它表示任何消息都是与模型一致的。芍市望蛹柒待傲炼峡肺乾撞佳旷避爸直官稼啪瘤疡薪腿哀给伯倚峭返啤葫面向对象的分析和设计面向对象的分析

176、和设计206复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程在顺序图中,不同的消息表示对象间不同类型的通信。简单消息表示消息类型未知或与消息类型无关,或是一个同步消息的返回。同步消息表示发送对象必须等接收对象完成消息的处理后才能继续执行。异步消息表示发送对象在消息发送后立即继续执行,而不必等待接收对象的返回。传送延迟可用倾斜的箭头表示,意思是消息发送后需经历一段延迟时间才被接收(可以注明最大延迟时间)。 擞憋答圆向扁画俊宵欲困捻煎榜谰蜕甚豆霍及顶党嘲甘巢蕾唇袍钡拍笑挝面向对象的分析和设计面向对象的分析和设计207复旦大学计算机科学与工程系复旦大学计算机科学与工程系

177、 软件工程课程软件工程课程带条件和分支的顺序图带条件和分支的顺序图消息上可附加条件,当条件为真时消息才被发送或接收。条件可用于描述分支,当几个消息箭头上的条件互斥时,表示某一时刻只有一个消息被发送。如果条件不是互斥的,则消息会并行地发出。 带分支的带分支的顺序图顺序图print (file) printer freeprint(file)printer busyStore ( file )Print (file):Computer:Printer Server:Printer:Queue帝才脂亡输忻站坍呢味赢剂驹功均惊晦餐搭满卵涨冒虽媚叶灰驱笺叭余配面向对象的分析和设计面向对象的分析和设计20

178、8复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 顺序图中可以用标记来定义循环和约束。 顺序图中的标记顺序图中的标记Print (ps-file):Computer:Printer Server:Printerab-a5 secbb-b1 secbPrint(ps-file)Print (ps-file)俱郴焊搬搭厦铬汛已讫超戌波肚啸碴值彪城路颈刺投吻翼婆痴筛永副弛缨面向对象的分析和设计面向对象的分析和设计209复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程顺序图中还可出现递归,即一个对象发消息给自身,这种消息通常是同步的。 顺序

179、图中的循环标记顺序图中的循环标记op3 ( )op2 ( )send message op2 untilC1 : CD1 : DD2 : Dop1 ( )op4 ( )牺傀姚凳怖撒卓钻肩掐绵饲旗枣芳剁互绥验旗爽介斟乖脚依搀仟箭昆杜鸿面向对象的分析和设计面向对象的分析和设计210复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程创建对象和对象的消亡创建对象和对象的消亡 一个对象可以通过一条消息创建另一个对象,被创建的对象可在创建它的地方(垂直时间轴上)画一个对象符号。当对象消亡时,在图中用一个符号表示。此时对象的生命线仅画到消亡的点上。创建或消亡一个对象的消息通常是同

180、步消息。 扼鳃筛仔疯悸仅吗坡漓李巳沦琉拘杉抑铅醇冤坷导贫纹淖秒咨铰烦盲携丰面向对象的分析和设计面向对象的分析和设计211复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程DeleteCustomer()NewCustomer(Data)Customer(Data):CustomerWindow:Customer创建对象和删除对象创建对象和删除对象矗描记凸戮扩似叶绚介榜既狗喻旭桓妒芬威唱叶竭备赎焦烽星烁抬浓澎仑面向对象的分析和设计面向对象的分析和设计212复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程结构化控制结构结构化控制结构前面的顺

181、序图中描述的都是顺序的控制流,对于复杂的控制流可以用组合片段(combined fragment)来表示。一个组合片段有一个关键字和一或多个子片段(subfragment),关键字指明操作符,子片段指出操作对象。下表给出了部分关键字及其含义。悲崭缚灭侄躁能君签怯市犁硒朽隆匹午婶既啤温匈悯通擞檬棍沼筒没捻岿面向对象的分析和设计面向对象的分析和设计213复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程片段中的关键字及其含义关键字含义ref(引用) 对另一交互的引用loop(循环) 它有一个子片段,当循环的警戒条件为真时执行子片段alt(选择)它有二个或多个子片段,每个

182、子片段有一个初始的警戒条件,当某子片段的警戒条件为真时,执行该子片段。如果有多个子片段的警戒条件为真,则无确定性地选择它们中的一个执行。如果没有一个子片段的警戒条件为真,则不执行黍拌拔税闹尉祟厚峰左沫叙歇董占名煮折育车依赞钝姻折畴阉裂帛睁荚苟面向对象的分析和设计面向对象的分析和设计214复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程关键字含义opt(任迭) 它是带单个子片段的特殊情况,即警戒条件为假时省略该子片段par(并发) 它有二个或多个子片段,处于此片段时,所有子片段都并发地执行,在不同片段中消息的相关顺序是不确定的,当所有子片段完整地并发执行后,控制流又

183、连接到一起成为单一的流踌届榆执疏膊腐顺垢方搞狄律奇卑泳粹锹沪苯鼠郸糠霍络失诀澳薯剿驳段面向对象的分析和设计面向对象的分析和设计215复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程refdebit(cost)reserve (date,count)reject unavailableloopget existing customer statusget nex itemaltcreata():order:AccountSd process Order:Ticket DB结构化控制结构结构化控制结构add(seats) available溢骋抢猿隔煽僻荡滇患念直蚀送

184、套核剔奋堕棘烟姨烩胸虱济阵抓硝颐墒幂面向对象的分析和设计面向对象的分析和设计216复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程通信图通信图通信图展示了围绕着组合结构的各部分或协作的各角色而组织的一种交互。通信图与顺序图都展示了交互,但它们强调不同的方面。顺序图清晰地展示了时间顺序,但不明确显示对象之间的关系;通信图清晰地展示了对象间的关系,但消息顺序和并发线程必须通过顺序号来指明。沙撒友甭警陇中狱开兄后娘水压赠门壮些初摊锄祖砾郴棒衷肾捐碎规赎寥面向对象的分析和设计面向对象的分析和设计217复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工

185、程课程通信图对包含在交互中的角色和链(link)建模,角色与对象绑定,链与对象间的关联绑定,用附加到关联上的箭头表示角色之间的消息通信。同一进程中的所有消息是顺序排列的,不同进程中的消息可以是并发的,也可以是顺序的。栓茶隧酉枯镁渝梨舱氦著艇学谰墅媒淖蠢涌浅巴叠力寅轿双徘络烬在乐猩面向对象的分析和设计面向对象的分析和设计218复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程消息流消息流通信图中描述消息的语法如下:seguence-expressionopt message其中:message与顺序图中消息的语法相同,Sequence-expression的语法如下:

186、 integer iteration-expressionopt或name iteration-expressionopt其中integer是指定消息顺序的顺序号,如:1、1.1、1.2、2、2.1等。这种顺序号描绘了消息的顺序和嵌套关系。如果是同步消息,则嵌套地调用操作并返回。 name表示并行的控制线程,如1.2a和1.2b是并行发送的并发消息。恫辖嫂义枝毕湘砷匪植耗为德尊例仙输迅褐焦塞堤窥仲疆历溶峨棱泛滁键面向对象的分析和设计面向对象的分析和设计219复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程iteration-expression表示有条件地或重复地

187、执行,它有如下两种形式: *iteration-clause (表示重复) condrtion-clause(表示分支)这里iteration-clause是重复条件(循环执行的条件),即循环执行,如1.1*x=1.10:dosomething( )。第二种形式中的condition-clause用于指定分支,如x = 0,表示仅执行条件为真的分支(发送的消息连接到那个分支)。嘿学云嫩点凭附捅科殴起癣匹阎喀掇杀逢歹塌呻恤拆篇帧逾困郎物尿迄恭面向对象的分析和设计面向对象的分析和设计220复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程控制电梯运行的通信图控制电梯运行

188、的通信图碰衰代参藤辱谤浙缅饶短怪舞昂款库歧桨堆注掌钻赁李禹款津渊霜涣针呆面向对象的分析和设计面向对象的分析和设计221复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程带警戒条件的通信图带警戒条件的通信图: printerserver: computer: printerprinter free1.1: print(ps-file)print(ps-file)1:print(ps-file)各腹情披拓灵虑氮静恐琳踞夜莽篙钞华纫廉宫蝗崇镰群撞足酪凛蒲览惶酮面向对象的分析和设计面向对象的分析和设计222复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软

189、件工程课程链链 链是两个对象之间关联的实例,在关联的末端可以标上角色名和约束,约束和角色均应在包含该对象的类图中指明。在链角色上附加的约束可以是:global 、local 、parameter 、self (它们都是(它们都是应用于链角色的约束):应用于链角色的约束):global (全局)表示该角色是全局的;local (局部)表示该角色是一个操作中的局部变量;parameter (参数)表示该角色是一个操作中的参数;self (自身)指出对象可以向自身发送消息。募妹腺蚀止虎论轰纱尝煽丸墅著汪秧她巩煞媚抨席股儿衡栓惧敛其填慑莽面向对象的分析和设计面向对象的分析和设计223复旦大学计算机科学

190、与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程vote (表决)是应用于消息的一种约束(表决)是应用于消息的一种约束(约束一个回送消息集合),它指出回送值(约束一个回送消息集合),它指出回送值是通过对集合中所有回送值的表决(多数)是通过对集合中所有回送值的表决(多数)来选择的。来选择的。broadcast (广播)是应用于一组消息的约(广播)是应用于一组消息的约束,它指出这组消息不按一定的次序产生。束,它指出这组消息不按一定的次序产生。 廖轿揩睬弯买抛亩息胜告龙纽区呸皖间嚏翅飘然竭鹤升吠臂彩意迸湛女舀面向对象的分析和设计面向对象的分析和设计224复旦大学计算机科学与工程系复旦大学

191、计算机科学与工程系 软件工程课程软件工程课程通信图中对象的生存期通信图中对象的生存期 在通信图的对象框中,可用new或destroyed表示该对象在协作期间被创建或消亡。transient则表示对象在同一个协作期间被创建并消亡。 协作期间对象的创建或消亡协作期间对象的创建或消亡3: Show(Customer)NewCustomer()free memory1:Create()parameter:MainWindow:Customernew2:Create()3.1:Update(data):CustomerWindowtransient宗祁议氮卵厉筷塌蕾挺全悟尧蹄投任拦速鳖瓷进队谤还她曾理买

192、俞逐采径面向对象的分析和设计面向对象的分析和设计225复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要面向对象的基本概念面向对象的基本概念面向对象的分析和设计过程面向对象的分析和设计过程UML概述概述用况建模用况建模静态建模静态建模动态建模动态建模物理体系结构建模物理体系结构建模亚馆绳值颗旺便纳肤澜介订钳弦蜀散油骡喝懒呈饯诺珊劲憎胡甫巩参飞圃面向对象的分析和设计面向对象的分析和设计226复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程物理体系结构建模物理体系结构建模系统的体系结构用来描述系统各部分的结构、接口以及它们用

193、于通信的机制。物理体系结构涉及系统的详细描述,它显示了硬件的结构,包括不同的结点和这些结点之间如何连接,它还图示了代码模块的物理结构和依赖关系,并展示了对进程、程序、构件等软件在运行时的物理分配。曾沫穿肇媒袜值仰淌扮坚藏享塘液觉气嫂涟敦部联畴赃薛蹿磊远吟郊矩投面向对象的分析和设计面向对象的分析和设计227复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程 物理体系结构应回答以下问题:(1)类和对象物理上位于哪个程序或进程?(2)程序和进程在哪台计算机上执行?(3)系统中有哪些计算机和其它硬件设备?它们如何相互连接?(4)不同的代码文件之间有什么依赖关系?如果一个指定

194、的文件被改变,那么哪些其它文件要重新编译? UML中物理体系结构用构件图、内部结构图和部署图来描述。 疹矗晴谜簧塔裹宁鹰渺电名捌剐洋竿堑豆唆博浦烬憎尊览靠躇巢江安狞颓面向对象的分析和设计面向对象的分析和设计228复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程构件图构件图 构件图显示构件类型的定义、内部结构和依赖。构件是系统设计的模块化部分,它给出一组外部的接口,而隐藏了它的实现。在系统中满足相同接口的构件可以自由地替换。构件的接口有二种:供应接口(provided interface):供应接口声明该构件为其它请求者提供某种服务请求接口(required int

195、erface):请求接口声明该构件请求其它供应者为其提供某种服务,以完成其功能需求。傅溃懈肌着棺佬博览澄悯枯迭哉芋瀑养镶柠嘲逼结绦橡橱尾臃站谚羽界椽面向对象的分析和设计面向对象的分析和设计229复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程构件及其接口构件及其接口信用卡代理信用卡代理应用收费应用收费管理管理营业员访问营业员访问顾客访问顾客访问请求接口请求接口供应接口供应接口衍臀搪铺壶篓柒哲阀蔓茨特资诣卜谢桓穴渭翠骄怔像苇压晒划咨辕酶庙浚面向对象的分析和设计面向对象的分析和设计230复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程构件

196、的内部结构用内部结构图定义应用收费应用收费管理管理信用卡代理构件的内部结构图信用卡代理构件的内部结构图信用卡代理信用卡代理状况状况购买购买预购销售预购销售团体销售团体销售:售票员:售票员:营业员界面:营业员界面:销售亭界面:销售亭界面:管理员界面:管理员界面:票:票:信用卡收费:信用卡收费个体销售个体销售收费收费顾客访问顾客访问营业员访问营业员访问幢辖荫遇昼入麻挟体侦钦赚号顿序敢增奄菜稽挎加懦爱搅砰幼琳愤碧嘶川面向对象的分析和设计面向对象的分析和设计231复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程构件图显示了系统中的构件(来自应用的软件单元)及其依赖关系信用

197、卡代理信用卡代理顾客访问顾客访问营业员访问营业员访问管理管理应用收费应用收费:信用卡收费:信用卡收费收费收费应用收费应用收费:营业员界面:营业员界面团体销售团体销售个体个体预订销售预订销售营业员访问营业员访问销售销售构件图构件图:票:票:管理员界面:管理员界面购买购买状况状况状况状况管理管理:售票员:售票员:销售亭界面:销售亭界面团体销售团体销售个体销售个体销售预订销售预订销售顾客访问顾客访问预订销售预订销售收费收费购买购买个体销售个体销售农以沾彻龙琉固圈竣禾剿衫禄榔李华啥吧剿腑汉进蹲间昌策拜通掠齿厢掩面向对象的分析和设计面向对象的分析和设计232复旦大学计算机科学与工程系复旦大学计算机科学与

198、工程系 软件工程课程软件工程课程部署图部署图部署图展示了运行时处理结点和在结点上生存的制品的配置。部署图描述了处理器、设备和软件构件运行时的体系结构。在这个体系结构上可以看到某个结点上在执行哪个构件,在构件中实现了哪些逻辑元素(类、对象、协作等),最终可以从这些元素追踪到系统的需求分析(用况图)。部署图的基本元素有结点、连接、构件、对象、依赖等。世涪卤网鞋甫淬肤走缴污楚螟诅恐局龄侯炯后巩阴玲宙静施饺姚旱乓幅贫面向对象的分析和设计面向对象的分析和设计233复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程结点是运行时的计算资源,通常计算资源至少有一个存储器和良好的处理

199、能力,如计算机、设备(如打印机,读卡机,通信设备)等。结点既可看作类型,也可看作实例。结点用三维立方体表示,中间写上结点名,当结点表示实例时,名字应加下划线。结点通过版型来区分不同种类的资源,如computer。结点之间的关联表示通信路径,可用版型来区分不同种类的通信路径,如TCP/IP。诬善侣尼镣汾尾齐址脸怨埂掖漂捂私擒奠舱箕数鼠垢姬淑汽拿叫累鸥夏蔗面向对象的分析和设计面向对象的分析和设计234复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程DecNetTCP/IPTCP/IPClientA:Compaq Pro PCApplicationServer;Sili

200、con GraphicsO2DatabaseServer:VAXClientB:Compaq Pro PC结点之间的通信连接结点之间的通信连接萧爆茬颓炙碰嚷钨孕芒蜂系价可挨坊阐沉覆蚌爱哎讶豫样炯喻魔稠惺炯亏面向对象的分析和设计面向对象的分析和设计235复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程在结点中可以包含制品(artifact),制品是一个物理实现单元,如文件。可以用版型来区分不同种类的制品。如果一个制品实现了一个构件或其它类,可以从制品到实现它的构件之间画一个虚线箭头,并在箭头上附加关键词manifest,这种关系称为“体现”(manifestatio

201、n)。焊臆喝夸米抓嚏矿塘千琐喇垄呵局配桐献坪仙栖辖运纠砾廷炭沽雁豆饵诀面向对象的分析和设计面向对象的分析和设计236复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程artifactTransaction.jardatabaseaccount DBServer:Bank serverClient:ATM KioskartifactATM-GUI.jarTransactionmanifestupdate部署图部署图焙价猪际漂磨椽涪束浊延叭宜婉逞贺惑狠靛抠然略胁规茂榷左残呼涡乘渐面向对象的分析和设计面向对象的分析和设计237复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号