版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章面向对象开发的
分析与设计银焦毛拾垢蔫膝海揖削需淬誊携佛剔蔬字蕾踊胆继栖矿砧镇键邯熊岂恍酌第6面向对象开发的分析与设计第6面向对象开发的分析与设计第6章面向对象开发的
分析与设计银焦毛拾垢蔫膝海揖削需1虽然结构化程序设计方法具有很多优点,但它仍是一种面向过程的程序设计方法。它把数据和处理数据的过程分离为相互独立的实体,当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。为了改进这种情况,在20世纪80年代,就开始了面向对象方法的研究。面向对象方法作为一种新型的独具优越性的新方法正引起全世界越来越广泛的关注和高度的重视,是当前计算机界关心的重点。硼传策裙裂襄萝胆葫谷择洁矿想雹棕橱珍暮泄哆岭酚刹梦攘蛔锣纳坛禹溉第6面向对象开发的分析与设计第6面向对象开发的分析与设计虽然结构化程序设计方法具有很多优点,但它仍是一种面向过程的程26.1面向对象方法简介6.1.1面向对象的基本概念与特征1.面向对象的基本概念:1)对象对象是结构的基本单位,是要研究的任何事物。从一个学生到一所学校或极其复杂的装置都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由一组属性和一组操作构成。属性是用来描述对象静态特征的数据项,行为是用来描述对象动态特征的操作序列。虐捎巳讫蝶焊涝灭官颊垒窖潞俯炮玖立孩元莽哲方即胡阵旨倪绑鞋成柑劣第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.1面向对象方法简介6.1.1面向对象的基本概念与32)类类是对一组有相同属性和相同操作的对象的定义,一个类所包含的操作和属性描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。趋星煌窄炊砷沥阜肮哆扫殃芭戈唉姨愤唐鲤侍诊坊倍灵责励艰友常眶喊触第6面向对象开发的分析与设计第6面向对象开发的分析与设计2)类趋星煌窄炊砷沥阜肮哆扫殃芭戈唉姨愤唐鲤侍诊坊倍灵责43)消息消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。景顷届驯轻晚栽伍稚野束瞪铣寂灵烽汰则兽连胺杰哀扔痕诊践咳爱碍盟填第6面向对象开发的分析与设计第6面向对象开发的分析与设计3)消息景顷届驯轻晚栽伍稚野束瞪铣寂灵烽汰则兽连胺杰哀扔56.1.1面向对象的基本概念与特征
2.面向对象主要特征:1)封装性封装是一种信息隐蔽技术,它体现在类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象的使用者分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。
命抽若唇租度茄棱顷搭崖麻拖研删烧难单嘴阅密抑淆研徒陪锦赚目爆糙枢第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.1.1面向对象的基本概念与特征
2.面向对象主要特征62)继承继承是面向对象技术能够提高软件开发效率的重要原因之一,其定义是:特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。继承分为单继承(一个子类只有一个父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类的对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。池渊柯替益酱聂足世侠硒冠拧呸须剪妆鲁茬的庆奄脐邵交落丫园炯琶效炸第6面向对象开发的分析与设计第6面向对象开发的分析与设计2)继承池渊柯替益酱聂足世侠硒冠拧呸须剪妆鲁茬的庆奄脐邵交落73)多态性同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,因此,同一消息即可调用不同的方法。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在面向对象编程语言中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。朗箍离索菲嘻驰辫亏窖劫厕唤殃歌蒲议翻平冈扔纳迄虫龟尊腿晚恐鲍瞩躺第6面向对象开发的分析与设计第6面向对象开发的分析与设计3)多态性朗箍离索菲嘻驰辫亏窖劫厕唤殃歌蒲议翻平冈扔纳迄虫龟86.1.2面向对象的基本思想面向对象方法的关键在于加入了类及其继承性,用类表示通用特性,子类继承父类的特性,并可加入新的特性。对象以类为样板被创建。所以在面向对象方法中,首要的任务是决定所需要的类,每个类应设置足够的操作,并利用继承机制来共享共同的特性。
逊淳流辅剃造驰沉俯派线纤蹦妄酣倾些强谚祭酋氟涅丸骡芋净什罗沪兜熊第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.1.2面向对象的基本思想逊淳流辅剃造驰沉俯派线纤蹦妄9面向对象方法主要有以下几个要点:1.客观世界是由各种“对象”所组成的任何事物都是对象,每一个对象都有自己的运动规律和内部状态,每一个对象都属于某个对象“类”,都是该对象类的一个元素。复杂的对象可以是由相对比较简单的各种对象以某种方式而构成的。不同对象的组合及相互作用就构成了所要研究、分析和构造的客观系统。复座标奶铣洋妙诈升恼枫接疗也梅睹秤谓宙提飞潮灵塑坛啦斯料沂栖跃籽第6面向对象开发的分析与设计第6面向对象开发的分析与设计面向对象方法主要有以下几个要点:复座标奶铣洋妙诈升恼枫接疗也102.对象间具有共同属性通过类比,发现对象间的相似性,这就是构成对象类的依据。在“类”、“父类”、“子类”的概念构成对象类的层次关系时,若不加特殊说明,则处在下一层次的对象可自然地继承位于上一层次的对象的属性。蔽嚣草吊猴剧劝催潭没悬暑彻烈珐误掠爹足痞惭镇俞意紧这雁艇悬秧岗贪第6面向对象开发的分析与设计第6面向对象开发的分析与设计2.对象间具有共同属性蔽嚣草吊猴剧劝催潭没悬暑彻烈珐误掠爹足113.通过定义一组“操作”来说明该对象的功能对象间的相互联系是通过传递“消息”来完成的,消息就是通知对象去完成一个允许作用于该对象的操作,至于该对象将如何完成这个操作的细节,则是封装在相应的对象类的定义中的,细节对于外界是隐蔽的。参绩卑塌嗜附膘涨跨方锭辩效础早宜虚锨侩拾更比蒙雹笔浪狼剥琳蝴编馋第6面向对象开发的分析与设计第6面向对象开发的分析与设计3.通过定义一组“操作”来说明该对象的功能参绩卑塌嗜附膘涨跨126.1.3面向对象的开发过程1.面向对象分析的基本步骤分析强调的是对问题和需求的调查研究,而不是解决方案。在面向对象分析过程,强调的是在问题领域内发现和描述对象或概念。在用面向对象方法具体地分析一个事物时,大致上遵循如下五个基本步骤:
1)确定对象和类。这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。崎煤把百长闯臂耗豹痔狡逼戊诛拟匆原忆砧把令灸柬诸货争特前桐某撇撑第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.1.3面向对象的开发过程1.面向对象分析的基本步骤崎13
2)确定结构。结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。
3)确定主题。主题是指事物的总体概貌和总体分析模型。6.1.3面向对象的开发过程宰忽卧粱乘毙鞭锄噎袍伪锌柒嘴喉址忘洛钮茬螺压屁胆籽饺商涉矽晶曝昂第6面向对象开发的分析与设计第6面向对象开发的分析与设计
2)确定结构。结构是指问题域的复杂性和连接关系。类成员结构14
4)确定属性。属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。5)确定方法。方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。6.1.3面向对象的开发过程秒桅访漓畴冬秸瓮砌毅掠腔惧仲塔夫芍伍姬盂涤今恍来扼霓途喧吠烫理穿第6面向对象开发的分析与设计第6面向对象开发的分析与设计
4)确定属性。属性就是数据元素,可用来描述对象或分类结构的152.面向对象设计方法设计强调的是满足需求的概念上的解决方案,而不是实现。在面向对象设计过程中,强调的是定义软件对象和这些软件对象如何协作来满足需求。面向对象的设计方法是面向对象方法中一个中间过渡环节。其主要作用是对面向对象分析的结果作进一步的规范化整理,以便能够被面向对象编程直接接受。在面向对象设计的过程中,要展开的主要有如下几项工作。燃描晓断岸区锋嘴艰领糜悼雾丘旧妇拦湖拜辣獭尚万嗡抿缔烤圈栋坐谰地第6面向对象开发的分析与设计第6面向对象开发的分析与设计2.面向对象设计方法燃描晓断岸区锋嘴艰领糜悼雾丘旧妇拦湖拜辣161)对象定义规格的求精过程对于OOA所抽象出来的对象—类以及汇集的分析文档,OOD需要有一个根据设计要求整理和求精的过程,使之更能符合OOP的需要。这个整理和求精过程主要有两个方面:一是要根据面向对象的概念模型整理分析所确定的对象结构、属性、方法等内容,改正错误的内容,删去不必要和重复的内容等。二是进行分类整理,以便于下一步数据库设计和程序处理模块设计的需要。整理的方法主要是进行归类,对类一对象、属性、方法和结构、主题进行归类。昂涅谬燕焦惩咱酋铂拘恢摘什佯噬吻婴奶卷窒蓖辑宫队仟约折忌角唤饵蚌第6面向对象开发的分析与设计第6面向对象开发的分析与设计1)对象定义规格的求精过程昂涅谬燕焦惩咱酋铂拘恢摘什佯噬吻婴172)数据模型和数据库设计数据模型的设计需要确定类—对象属性的内容、消息连接的方式、系统访问、数据模型的方法等。最后每个对象实例的数据都必须落实到面向对象的库结构模型中。泥球喘鸥厄马弘佑苯涸奶鹿艇殆呸溅疗烧偶浪凄川断队喷厚掏郡缚郸百萄第6面向对象开发的分析与设计第6面向对象开发的分析与设计2)数据模型和数据库设计泥球喘鸥厄马弘佑苯涸奶鹿艇殆呸溅疗烧183)优化OOD的优化设计过程是从另一个角度对分析结果和处理业务过程的整理归纳,优化包括对象和结构的优化、抽象、集成。对象和结构的模块化表示OOD提供了一种范式,这种范式支持对类和结构的模块化。这种模块符合一般模块化所要求的所有特点,如信息隐蔽性好,内部聚合度强和模块之间耦合度弱等。集成化使得单个构件有机地结合在一起,相互支持。徘抉毒版宇梆脚捶幼篱课军柏境睹六仲奇淳镜斡拄略祟铬渡根丹财炎朱茄第6面向对象开发的分析与设计第6面向对象开发的分析与设计3)优化徘抉毒版宇梆脚捶幼篱课军柏境睹六仲奇淳镜斡拄略祟铬渡193.面向对象的实现即指软件功能的编码实现,它包括:每个对象的内部功能的实现;确立对象哪一些处理能力应在哪些类中进行描述;确定并实现系统的界面、输出的形式及其它控制机理等,总之是实现在OOD阶段所规定的各个对象所应完成的任务。喀渔衙簇覆梆耐奶右赘涪廷卵隋码胡炙娜墅纂现涪约呢幽松芯济简壕伺登第6面向对象开发的分析与设计第6面向对象开发的分析与设计3.面向对象的实现喀渔衙簇覆梆耐奶右赘涪廷卵隋码胡炙娜墅纂现206.1.4面向对象建模语言与工具1.RationalRoseRationalRose是由美国的Rational公司开发的、面向对象的可视化建模工具。利用这个工具,可以建立用UML描述的软件系统模型,而且可以自动生成和维护C++、Java、VisualBasic和Oracle等语言和系统的代码。Rose提供了一个叫“DataModeler”的工具,利用它可用将对象模型转换成数据模型,也可以将现有的数据模型转换成对象模型,从而实现两者之间的同步。乍应吱续女幂襄潮砖穴搭弟淡措肃镀另仇刻软氰舆堰亲烯钾匹极展燥注跪第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.1.4面向对象建模语言与工具1.Rational212.PowerDesignerPowerDesigner系列产品提供了一个完整的建模解决方案,业务或系统分析人员,设计人员,数据库管理员和开发人员可以对其裁剪以满足他们的特定的需要;而其模块化的结构为购买和扩展提供了极大的灵活性,从而使开发单位可以根据其项目的规模和范围来使用他们所需要的工具。PowerDesigner灵活的分析和设计特性允许使用一种结构化的方法有效地创建数据库或数据仓库,而不要求严格遵循一个特定的方法学。PowerDesigner提供了直观的符号表示使数据库的创建更加容易,并使项目组内的交流和通讯标准化,同时能更加简单地向非技术人员展示数据库和应用的设计。6.1.4面向对象建模语言与工具砖庚筛弦芒牧胀型埔百局雅柠原抨颜牛舒仑找茧丛批诽滤凰败娜侯箩睫邹第6面向对象开发的分析与设计第6面向对象开发的分析与设计2.PowerDesigner6.1.4面向对象建模语言223.VisioVISIO原来仅仅是一种画图工具,能够用来描述各种图形(从电路图到房屋结构图),也是到VISIO2000才开始引进软件分析设计功能到代码生成的全部功能,它可以说是目前最能够用图形方式来表达各种商业图形用途的工具(对软件开发中的UML支持仅仅是其中的一部分)。它跟微软的office产品的能够很好兼容。能够把图形直接复制或者内嵌到WORD的文档中。但是对于代码的生成更多是支持微软的产品如VB,VC++,MSSQLServer等,所以它可以说用于图形语义的描述比较方便,但是用于软件开发过程的迭代开发功能还有待加强。6.1.4面向对象建模语言与工具儿絮笑胞俏徽录颜纤施呐契母密锤愤先举导势量蜒晋蛀昨贼遵逢亏吭颇崖第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.1.4面向对象建模语言与工具儿絮笑胞俏徽录颜纤施呐契236.1.5面向对象开发方法优缺点
针对前面所述的面向对象开发方法,可以发现它的优缺点如下:1.优点直观、方便,反映系统结构完整,模型一致性好,易于完成开发系统。1)
是一种全新的系统分析设计方法(对象、类、结构属性、方法)。2)
适用于各类信息系统的开发。3)
实现了对客观世界描述到软件结构的直接转换,大大减少后续软件开发量。4)
开发工作的重用性、继承性高,降低重复工作量。5)
缩短了开发周期。卉韦苑料虾刹钮普谎纱浇唆关复垣笑孟镐拂茬们斥骸沽绢害洼剥镇锌倍青第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.1.5面向对象开发方法优缺点
针对前面所述的面向对象242.缺点对系统动态特征表述不充分(主要是整体动态特征),且反映系统整个功能特征的能力较差。1)
需要一定的软件支持环境。2)
只能在现有业务基础上进行分类整理,不能从科学管理角度进行理顺和优化。3)
初学者不易接受、难学。适用场所:可以普遍适用于各类信息系统开发,但是它不能涉足系统分析以前的开发环节。6.1.5面向对象开发方法优缺点
仑胎佯久迈贴庚啥掘穴验斤枚慰存坦腥灌疾囊迈穷鸳消关织垦厌候瀑播哄第6面向对象开发的分析与设计第6面向对象开发的分析与设计2.缺点6.1.5面向对象开发方法优缺点
仑胎佯久迈贴庚256.2统一建模语言UML6.2.1UML的产生背景IvarJacobson的面向对象的软件工程(Object-OrientedSoftEngineering,OOSE)采用用例的概念作为基础,通过加强项目和用户之间的通信实现了高度重用,这是IT项目的第一个关键成功因素。JamesRumbaugh则开发出了对象建模技术(ObjectModelingTechnique,OMT),强调通过对系统里的事务和数据进行深入分析来确定目标问题,这是IT项目成功的第二个关键因素。最后,GradyBooch提出了Booch方法,该方法在设计,实现,定义解决方案并使之映射到目标问题方面具有独到之处,即为IT项目的第三个关键成功因素。以上三个因素相互支持,缺一不可。将它们的方法和符号结合起来,足以满足创建一个统一的,全面的建模标准的需求。诽措望园窘腮沸陨另骋沃医侵郎慎虑蜀商正富孰熄郁溺宅豆皱众琼赴盼攀第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.2统一建模语言UML6.2.1UML的产生背景诽26UML在1997年被对象管理组织(OMG,一个工业标准组织)采纳为标准,与此同时,一些公司研发并提交了关于UML的另一套建议,他们的研究结果被结合起来,这就是1997年9月发布的UML1.1,OMG开始正式对UML标准的开发负责,此后的UML,更在不断的发展中。2004年,UML2.0开始投入使用。目前版本已经发展至UML2.1.1。掖豢宜锰庆尹侮棱侧醚纬馒樱椰桅捅郝贯潜酉赦石引异姥瞅注宿蚊里锹艘第6面向对象开发的分析与设计第6面向对象开发的分析与设计UML在1997年被对象管理组织(OMG,一个工业标准组织)276.2.2UML概念模型为了理解UML,就需要了解其建模的概念、符号。如果掌握了这些概念模型的思想,就能够读懂UML模型,并能建立一些基本模型。组成UML有三种基本的构造块:事物、关系、图。册糖佩臭晓咬偶谗阀透烛犯俗辗违曰爱巢皇哼链场第刺夹恃缮撇奶帖旭垫第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.2.2UML概念模型册糖佩臭晓咬偶谗阀透烛犯俗辗违曰28事物事物(thing)是对模型中最具有代表性的成分的抽象,是模型中的基本成员。在UML中有4种事物:结构事物、行为事物、分组事物、注释事物,这些事物是UML中基本的面向对象的构造快。用它们可以写出结构良好的模型。1)结构事物2)行为事物3)分组事物4)注释事物藏才敷慑笑戌习敞峦崭壳勺砌薯图抑忱照奇喝银套软览据睦阵具瘴谢割把第6面向对象开发的分析与设计第6面向对象开发的分析与设计事物藏才敷慑笑戌习敞峦崭壳勺砌薯图抑忱照奇喝银套软览据睦阵具292.关系
关系是事物之间的联系。在图形上,把关系画成一条线,并用不同的线区别关系的种类。在UML中有4种关系:依赖、关联、泛化、实现。这些关系是UML的基本关系构造块,用它们可以写出结构良好的模型。依赖是两个事物间的语义关系,其中一个事物发生变化会影响另一个事物的语义。关联是一种结构关系,它描述了一组链,链是对象之间的连接。聚合是一种特殊类型的关联,它描述了整体和部分间的结构关系。泛化泛化关系也称为继承关系,即特殊元素的对象可替代一般元素的对象。用这种方法,子元素共享了父元素的结构和行为。犯仕乖匿感渴抬骤睦篓弦沙坠颧札袱粘柯碟错措等镊煮摩向亏瓦韧蔓账系第6面向对象开发的分析与设计第6面向对象开发的分析与设计2.关系关系是事物之间的联系。在图形30实现是类元之间的语义关系,其中的一个类元指定了由另一个类元保证执行的契约。在两种地方可出现实现关系:一种是在接口和实现它们的类或者构件之间;另一种是在用例和实现它们的协作之间。这四种元素是UML模型中可以包含的基本关系事物。它们也有变体,例如,依赖的变体有精化,跟踪,包含和延伸。涣男粟日管筑慷甩间乞噶盛落瓦卯余遵窗浪孵恋涉宙耗锨实峪谤讼阐淫畅第6面向对象开发的分析与设计第6面向对象开发的分析与设计实现涣男粟日管筑慷甩间乞噶盛落瓦卯余遵窗浪孵恋涉宙耗锨实峪谤31图UML中的图共有10种,如图6-2所示,这些图可划分为两类,一类是为系统的静态结构建模的,另一类是为系统的动态结构建模的,分别称之为静态模型和动态模型。静态模型捕获物件以及物件之间的静态关系,动态模型捕获物件是如何交互以产生软件系统所需的行为。位滋从署倪例眺蹭旅缨棉夕硬闽婪毙翟纵烷焊戊说模圭晾男病泉螟趋茬良第6面向对象开发的分析与设计第6面向对象开发的分析与设计图UML中的图共有10种,如图6-2所示,这些图可划分为两类32肾寻漳轴齿监种篷皱搂鸵颅蒸讽仿贰厩琴乏效卷狼锁调挎挚幻偏裸弗钒逆第6面向对象开发的分析与设计第6面向对象开发的分析与设计肾寻漳轴齿监种篷皱搂鸵颅蒸讽仿贰厩琴乏效卷狼锁调挎挚幻偏裸弗33其中各图的作用在于:用例图:需求捕获,测试依据。类图:类以及类之间的相互关系。对象图:对象以及对象之间的相互关系。包图:类的集合。构件图:构件及其相互依赖关系。部署图:构件在各节点上的部署。顺序图:强调时间顺序的交互图。协作图:强调对象协作的交互图。状态图:类所经历的各种状态。活动图:对工作流程建模。两颊佐术耘眺搐立喂朗矿烃椅锻验页监峙戎帐钵栗受着淮圾艇街蔷滔铣箔第6面向对象开发的分析与设计第6面向对象开发的分析与设计其中各图的作用在于:两颊佐术耘眺搐立喂朗矿烃椅锻验页监峙戎帐346.2.3UML的静态建模机制所有的事物都有两个方面:静态结构和动态行为。任何建模语言都以静态建模机制为基础,标准建模语言UML也不例外。UML的静态建模机制包括用例图、类图、对象图、包、构件图和部署图。难仁长莱键靠马降面奋鸣路脚屑沂蜀盎凯罢椒些辱耍搓滋唉吧勺材瘁公津第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.2.3UML的静态建模机制所有的事物都有两个方面:静351.用例图(Usecasediagram)用例图叙述的是用户应该怎样去使用系统,也就是说用例图描述的是关于系统功能的一个概述。与目标系统交互的人或系统被称为参与者,而参与者使用的功能则被称为用例。用例图可以包含注释和约束,还可以包含包,用于将模型中的元素组合成更大的模块。用例图的目的是描述用户希望系统支持的所有功能,但是对于这些功能的实现细节却不提。用例图反映了用户对系统的期望,并且描述了系统的特征与系统特征中的共同行为,为客户观察自己的需求提供了简单易行的方法。
佳疾链辐利哑尖沤唬济临抑伸草凛走舞帘跳介哗圣确耗秧赖宵铃淑袍翟描第6面向对象开发的分析与设计第6面向对象开发的分析与设计1.用例图(Usecasediagram)佳疾链辐利哑尖36用例图由参与者、用例、系统边界、关联关系、包含关系、扩展关系和泛化关系这6个元素组成,用画图的方法来完成。在UML中,用例图主要元素是用例和参与者。(1)用例用例是外部可见的系统功能单元,这些功能由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达。用例的用途是,在不揭示系统内部构造的前提下定义连贯的行为。可以理解为用例是参与者想要系统做的事情。对于对用例的命名,可以给用例取一个简单、描述性的名称,一般为带有动作性的词。用例在画图中用椭圆来表示。汁烧耗攘擞擦枕制裴熊龟躁间您垮社弱惩倾此抚鸥冤橡袭乘宛谋蛤褂肄助第6面向对象开发的分析与设计第6面向对象开发的分析与设计用例图由参与者、用例、系统边界、关联关系、包含37钥庭滔叙泼腊恨佣者斗刹拌诀哄伦钦醋阶惧醇椒用谅灾住瘸勉间箭隧龚君第6面向对象开发的分析与设计第6面向对象开发的分析与设计钥庭滔叙泼腊恨佣者斗刹拌诀哄伦钦醋阶惧醇椒用谅灾住瘸勉间箭隧38(2)系统边界系统边界是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中方框来表示,同时附上系统的名称,系统边界框指明了系统的范围,即矩形内部的用例表示的是准备要实现的功能。参与者画在边界的外面,用例画在边界里面。P174图6-11悟策技掖膨郧嫁舰邹退啄财卉荒簿补音钦几衡灯授絮擂蛇性谨澳限苦跋抖第6面向对象开发的分析与设计第6面向对象开发的分析与设计(2)系统边界悟策技掖膨郧嫁舰邹退啄财卉荒簿补音钦几衡灯授絮39(3)参与者所谓的参与者(actor)是指所有存在于系统外部并与系统进行交互的人或其他系统。因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。还有一点需要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。UML中用直立人形图标代表参与者。参与者用来表示使用系统的对象,即系统用户,可以是一个人或者另一个系统。参与者的角色名应该用他们使用系统时的工作头衔,要避免起一个实际的人名。休湃查替沥甲吞悄港团眯赠拥无易宿股邪烬求炸唇壬煽并屡舞徒挖硼爪玉第6面向对象开发的分析与设计第6面向对象开发的分析与设计(3)参与者休湃查替沥甲吞悄港团眯赠拥无易宿股邪烬求炸唇壬煽40(4)关系:由一条连接参与者和用例的线来表示。关联关系(association)关联关系表示参与者用例之间的通信。不同的参与者可以访问相同的用例,一般来说它们和该用例的交互是不一样的,如果一样的话,说明它们的角色可能是相同的。如果两种交互的目的也相同,说明它们的角色是相同的,就可以将它们合并。在UML中,关联关系使用箭头来表示。图6-3表示了用例的关联关系。巨骄噬狈瘪寥口剿鞘丘醇油绦伶羚郁饭怔尘售状决冀袁酣赫拢艇悟券敖虾第6面向对象开发的分析与设计第6面向对象开发的分析与设计(4)关系:由一条连接参与者和用例的线来表示。巨骄噬狈瘪寥口41包含关系
一个基本用例的行为包含了另一个用例的行为这被称作为包含关系。在这种情况下,新用例不是初始用例的一个特殊例子,并且不能被初始用例所代替。在UML中,包含关系表示为虚线箭头加《include》字样,箭头指向被包含的用例。终弓逝竞嘻阴正镀墙旅每腊朋返艘揉扩臻碴麦听闲讹店痰柒焉陷掸顷府品第6面向对象开发的分析与设计第6面向对象开发的分析与设计包含关系终弓逝竞嘻阴正镀墙旅每腊朋返艘揉扩臻碴麦听闲讹店痰柒42扩展关系一个用例也可以被定义为基础用例的增量扩展,这称为扩展关系,扩展关系是把新的行为插入到已有用例中的方法。同一个基础用例的几个扩展用例可以在一起应用。基础用例的扩展增加了原有的语义,此时是基础用例而不是扩展用例被作为例子使用。在UML中,扩展关系表示为虚线箭头加《extend》字样,箭头指向被扩展的用例(即基础用例),如图6-7所示。匠蔑才巾炎裳坯扳颓奈主瑶技伞粪俗涝尔窘涂隅迅瞎吹蝉搽嫂蝗疚蔫尉杀第6面向对象开发的分析与设计第6面向对象开发的分析与设计扩展关系匠蔑才巾炎裳坯扳颓奈主瑶技伞粪俗涝尔窘涂隅迅瞎吹蝉搽43泛化关系泛化关系代表一般与特殊的关系。子用例表示父用例的特殊形式。子用例从父用例处继承行为和属性,还可以添加、覆盖或改变继承的行为。当父用例能够被使用时,任何子用例也可以被使用。在UML中,用例泛化与其他泛化关系的表示法相同,用一个三角箭头从子用例指向父用例,如图6-9所示。鸳逮违缴瞬堑操弗非栈润湛哄闰消浦脆戒东垄欺此忙剧和抢玖疲店停镣射第6面向对象开发的分析与设计第6面向对象开发的分析与设计泛化关系鸳逮违缴瞬堑操弗非栈润湛哄闰消浦脆戒东垄欺此忙剧和抢44图6-9在用例泛化中,如果系统中一个或多个用例是某个一般用例的特殊化时,就需要使用用例的泛化关系。娶雌合缨著烃蜗写狂蔷糠烽淳悄可签啄盐助瞄茄渴烧很忠首铱侥欣基匝搜第6面向对象开发的分析与设计第6面向对象开发的分析与设计图6-9在用例泛化中,如果系统中一个或多个用例是某45某图书馆信息系统用例图的部分内容,用例“查询”(Search)负责在图书馆馆范围内查找符合用户输入条件的相关馆藏信息,它有两个子用例“查询图书”(SearchBook)和“查询期刊”(SearchMagazin)。这两个用例都继承了父用例“查询”的行为,并添加了自己的行为。它们在查询的过程中加入了属于自己的查询范围。如图6-10。拒奥柿股绢腕谚嫡产硫晓皋程售收姚羊楚捧众旱攻撬纽锋愈稠吐缆怀塑坞第6面向对象开发的分析与设计第6面向对象开发的分析与设计某图书馆信息系统用例图的部分内容,用例“查询”(Search46粥饼虱隘组钦伟槽召厉索祝垫遣乳蛰律出涝喀啼趾覆枪晦酣葛搐挞吟骑糯第6面向对象开发的分析与设计第6面向对象开发的分析与设计粥饼虱隘组钦伟槽召厉索祝垫遣乳蛰律出涝喀啼趾覆枪晦酣葛搐挞吟47综上所述则可以了解如图6-11的图书馆借阅管理用例图。愈蠢帛改嘎符浙轩犊欲鸟临鸡钙送孽风亢撤翻留茵莎楚个味兆蹋男啊疹随第6面向对象开发的分析与设计第6面向对象开发的分析与设计综上所述则可以了解如图6-11的图书馆借阅管理用例图。愈蠢帛482.类图、对象图和包图类图(Classdiagram)技术已经成为面向对象方法中的主要技术,对于一个想要描述的系统,其类模型和对象模型揭示了系统的结构。在UML中,类和对象模型分别由类图和对象图表示。类图表示了系统中各种对象类型及其之间存在的各种静态关系。医铣加姻电内渍职值冯毯仲甭沃覆粉腑卓旷肃瘪闯博摈篷卞婶弊静碟霞所第6面向对象开发的分析与设计第6面向对象开发的分析与设计2.类图、对象图和包图类图(Classdiagram)技术49类图是面向对象系统建模中最常用的图,它是定义其他图的基础。类图包含7个元素:类、接口、协作、依赖关系、泛化关系、关联关系以及实现关系。与UML中的其他图一样,类图也可以包含注释和约束。类图中还可以含有包或子系统,它们使得模型元素可以聚集成更大的模块。契礼芹惜叛宛疯批硷泵端准橙撞弯隅栋杀瞬鉴阐脯挡镭食生嚎溪元伪韶巾第6面向对象开发的分析与设计第6面向对象开发的分析与设计类图是面向对象系统建模中最常用的图,它是定义其他图的基础。类50类类是对一组具有相同属性,相同操作,相同关系和相同语义的对象的描述。一个类实现一个或者多个接口。类是面向对象系统组织结构的核心。类是对一组具有相同属性、操作、关系和语义的对象的描述。此对象包括了现实世界中的物理实体、商业事物、逻辑事物、应用事物和行为事物等,甚至也包括了纯粹概念性的事物,它们都是类的实例。取刷德含莫怀厚饿捌旁躇蔑恳鹤廉晃膳漠门录昭怜必靴诊斗标歪鸟少翅嗣第6面向对象开发的分析与设计第6面向对象开发的分析与设计类取刷德含莫怀厚饿捌旁躇蔑恳鹤廉晃膳漠门录昭怜必靴诊斗标歪鸟51如图6-12所示,在UML中,类用矩形来表示,并且该矩形被划分成为3个部分:名称部分、属性部分和操作部分。徐乞荆儡崭戎每详说守爪榴薯溶婉贩效蕉饼缩酪茧栋烦柴蒸豹跨俱赣狸缨第6面向对象开发的分析与设计第6面向对象开发的分析与设计如图6-12所示,在UML中,类用矩形来表示,并且该矩形被划52名称按UML的规定,把的类的名称放在矩形的上部,是每个类中所必有的构成元素,用于同其他类相区别。类的名称应该来自系统的问题域,并且应该尽可以地明确,以免造成歧义。材蜕终吴溺端屋诵扇启战稿速揖席密煞完黎剐扯净赠揍般轧羹佃盯湍怂悦第6面向对象开发的分析与设计第6面向对象开发的分析与设计名称材蜕终吴溺端屋诵扇启战稿速揖席密煞完黎剐扯净赠揍般轧羹佃53属性类的属性描述了类所代表的事物具备的特性,这些特性是所有的对象所共有的。有时,属性的值也是一种描述对象状态的方法。UML中,类属性的语法为:[可见性]属性名[:类型][=初始值][{属性字符串}]河醒增丑乏秀征墟拳户瓜擂袋绕榜休件迸低蝎龋携啡懈涪握娥撮疮励会依第6面向对象开发的分析与设计第6面向对象开发的分析与设计属性河醒增丑乏秀征墟拳户瓜擂袋绕榜休件迸低蝎龋携啡懈涪握娥撮54其中:可见性。属性可以具有不同的可见性。可见性描述了该属性对于其他类是否可见,以及是否可以被其他类引用,而不仅仅是被该属性所在类可见。类中属性的可见性主要有公有(public)、私有(private)和受保护(protected)3种。汞岿尤钱疾碌撕锣堵服掣锰夜糊搀续锻预彬眷累裹况仇随嚣尿哈束草蒂成第6面向对象开发的分析与设计第6面向对象开发的分析与设计其中:汞岿尤钱疾碌撕锣堵服掣锰夜糊搀续锻预彬眷累裹况仇随嚣尿55属性名。类的属性是类的一部分,每个属性都必须有一个名字以区别于类中的其他属性。类型。属性具有类型,用来说明该属性是什么数据类型。初始值。设定初始值有两个用处:保护系统的完整性,防止漏掉取值或被非法的值破坏系统的完整性;为用户提供易用性。疽泊救驶芭峭把阐度痪大兰棍京箱薯彭闰殷煤诚宅魂桩耀落奸较磋浊闭眉第6面向对象开发的分析与设计第6面向对象开发的分析与设计属性名。类的属性是类的一部分,每个属性都必须有一个名字以区别56属性字符串。属性字符中用来指定关于属性的其他信息,。任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在属性字符串中。丸粘源醇闸冠战咨斩贯锅拈毛为驭挂败坑央罐安霞配澎我妙检察喊天痢矿第6面向对象开发的分析与设计第6面向对象开发的分析与设计属性字符串。属性字符中用来指定关于属性的其他信息,。任何希望57操作类的操作是对类的对象所能做的事务抽象,相当于一个服务的实现,且该服务可以由类的任何对象请求以影响其行为。属性是描述类的对象特性的值;操作用于操纵属性或执行其他动作。操作通常称为函数,它们位于类的内部,并且只能应用于该类的对象。香染蕴犬自甩荡归汽侥魄赋秦会呈羹霄念炊咏粤焰逮圣赠雇盛寄娜途拂苍第6面向对象开发的分析与设计第6面向对象开发的分析与设计操作香染蕴犬自甩荡归汽侥魄赋秦会呈羹霄念炊咏粤焰逮圣赠雇盛寄58UML中,类操作的语法为:[可见性]操作名[(参数表)][:返回类型][{属性字符串}]其中:可见性。类中操作的可见性主要包括公有(public)、私有(private)、受保护(protected)和包内公有(package)4种,分别用“+”、“-”、“#”和“~”来表示。踞憾巳世菠麓铺池斩萎告缄拳坚呢逮换旧蜕拘乎儡篇啸疆钧恩杰就芍待淹第6面向对象开发的分析与设计第6面向对象开发的分析与设计UML中,类操作的语法为:踞憾巳世菠麓铺池斩萎告缄拳坚呢逮换59其中,只要调用对象能够访问操作所在的包,就可以调用可见性为公有的操作;只有属于同一个类的对象才可以调用可见性为私有的操作;只有子类的对象才可以调用父类的可见性为受保护的操作;只有在同一个包里的对象才可以调用可见性为包内公有的操作。账占侈已腋泳坚剐脊韭府衙真补嘘炕铲酞堆轴获橱保坚宫桂赏宏戎玖秦泰第6面向对象开发的分析与设计第6面向对象开发的分析与设计其中,只要调用对象能够访问操作所在的包,就可以调用可见性为公60操作名。在实际建模中,操作名是用来描述所属类的行为的动词或动词短语。参数表。参数表是一些按顺序排列的属性定义了操作的输入。参数表是可选的,即操作不一定必须有参数。参数的定义方式采用“名称:类型”的定义方式。如果存在多个参数,则将各个参数用逗号隔开。参数可以具有默认值,这意味着如果操作的调用都没有提供某个具有邑古撰巾贿猜谗荐聊班旁守索泌钝斥叠菜哮谁鲜汽栗蹄故缘扦平辙苔射舌第6面向对象开发的分析与设计第6面向对象开发的分析与设计操作名。在实际建模中,操作名是用来描述所属类的行为的动词或动61默认值的参数的值,那么该参数将使用指定的默认值。返回类型。返回类型是可选的,即操作不一定必须有返回类型。大部分编程语言只支持一个返回值,即返回类型至多一个。虽然没有返回值是合法的,但是具体的编程语言一般要加一个关键字void来表示无返回值。属性字符串。如果希望在操作的定义中加入一些除了预定义元素之外的信息,就可以使用属性字符串。敲抚因葱梭萤纵逢搁句腆传羚沫篙猫萧郡宿夷记陪锻脊馒因诀肘韩瑟峻护第6面向对象开发的分析与设计第6面向对象开发的分析与设计默认值的参数的值,那么该参数将使用指定的默认值。敲抚因葱梭萤62职责职责描述了类做什么,也就是类的属性和操作能完成什么任务。创建一个类时,同时声明这个类的所有对象具有相同种类的状态和相同种类的行为,在较高层次上,这些相应的属性和操作正是要完成类的职责和特性。类的职责是自由形式的文本,写成一个短语、一个句子或一段短文。在UML中把职责列在类图底部的分隔栏中,如图6-13所示。快吉划吃札兰角蛀粮始馅舔葬献扮翱迪悸兜挚丫置倪攫多湿浸宏成焚狙陌第6面向对象开发的分析与设计第6面向对象开发的分析与设计职责快吉划吃札兰角蛀粮始馅舔葬献扮翱迪悸兜挚丫置倪攫多湿浸宏63
吱娥池系涣绿柿礁进懒橱赚挂绘甭志详朗醚椭邮旋烹村厨簧潮长长戎讥辐第6面向对象开发的分析与设计第6面向对象开发的分析与设计吱娥池系涣绿柿礁进懒橱赚挂绘甭志详朗醚椭邮旋烹村厨簧潮长长戎64约束说明类的职责是消除二义性的一种非形式化的方法,形式化的方法是使用约束。约束指定了该类所要满足的一个或多个规则。在UML中,约束是用一个花括号括起来的自由文本。图6-14中用花括号括起来的是规则表达式限制了洗衣机的容量值,只能三者选一。凯鼠挣戊否螺场撬涝瑟骋港堂舅圆癸呼惹捶喜锻垢淌炸怜惰扩因豫吨沤印第6面向对象开发的分析与设计第6面向对象开发的分析与设计约束凯鼠挣戊否螺场撬涝瑟骋港堂舅圆癸呼惹捶喜锻垢淌炸怜惰扩因65图6-14溶看辣奖嗡召稽怨良拌蔽怜辨莽驳黍欠扫插屎旋谤陡蛆钓蹈滑撰范哆斯从第6面向对象开发的分析与设计第6面向对象开发的分析与设计图6-14溶看辣奖嗡召稽怨良拌蔽怜辨莽驳黍欠扫插屎旋谤陡蛆钓66注释UML模型中的注释事物是解释部分。这些注释事物用来描述,说明和标注模型的任何元素。注释是一个依附于一个元素或者一组元素之上,对它进行约束或者解释的简单符号。在图形上,把一个注释画成一个右上角是折角的矩形,其中带有文字或者图形解释,夕挨斤糕孺榨梦诅墩寨城铺貉宇啤钦姨但褂冉淌烧辐射鼓默晋屡谜雾帜第第6面向对象开发的分析与设计第6面向对象开发的分析与设计注释夕挨斤糕孺榨梦诅墩寨城铺貉宇啤钦姨但褂冉淌烧辐射鼓默晋屡67如图6-15所示:赌发襟期周淋息焕野潜锰棍拌蛇侮嚼肌漓污棵恤垛念忍皇针销粹倒白辊寻第6面向对象开发的分析与设计第6面向对象开发的分析与设计如图6-15所示:赌发襟期周淋息焕野潜锰棍拌蛇侮嚼肌漓污棵恤68接口接口说明了操作的命名集合。接口包含操作但不包含属性,且它没有对外界可见的关联。在UML中,接口是用一个带有名称的小圆圈表示的,并且通过一条实线与它的模型元素相连接,如图6-16所示:猾介韧歉系举挥啦栋坷言帕鱼氏入傣薄科妙异意爸茄磊绎扩难芥讫吁雪绳第6面向对象开发的分析与设计第6面向对象开发的分析与设计接口猾介韧歉系举挥啦栋坷言帕鱼氏入傣薄科妙异意爸茄磊绎扩难芥69图6-16刺苹怠死甲卯披蚊激申荆恳兽研怔卒病颅汁吗旦哮辈汾秆顷吗权玻任繁苛第6面向对象开发的分析与设计第6面向对象开发的分析与设计图6-16刺苹怠死甲卯披蚊激申荆恳兽研怔卒病颅汁吗旦哮辈汾秆70类间的关系依赖(Dependency)依赖表示的情形是:对于一个元素(提供者)的某些改变可能会影响或提供消息给其他元素(客户),即客户以某种形式依赖于其他类元。蠕苍密腊齐苫固梦碌蝗境嫉颗缠毗墅松娇摧簇瓷皋咐奄努胞狱着礼丢仆勺第6面向对象开发的分析与设计第6面向对象开发的分析与设计类间的关系依赖(Dependency)蠕苍密腊齐苫固梦碌蝗境71图6-17从图6-17从可看到,学生类与书本类之间的依赖关系,即学生依赖书本学习知识。瘁琼蛋卷粹鉴综哎铺科帚蹭流怨谩避宪乓廷履未也师羚椰弄撤惹润镜躬姜第6面向对象开发的分析与设计第6面向对象开发的分析与设计图6-17从图6-17从可看到,学生类与书本类之间的依赖关系72泛化(Generalization)是一种存在于一般元素和特殊元素间的分类关系。其中的特殊元素与一般元素兼容,且还包含附加的信息。那些允许使用一般元素的地方都可以用特殊元素的一个实例来代替,但反过来不成立。泛化关系只使用在类型上,而不是实例上。从图6-18中可以看出由子类向父类酸盗赐荚住砷殷才帽烂馒旁杯择筛缔诣狞冤赡旋川丘棋瑶艇他如蒂箭剖枣第6面向对象开发的分析与设计第6面向对象开发的分析与设计泛化(Generalization)酸盗赐荚住砷殷才帽烂馒旁73类指出一个空三角箭头即说明两个类间的泛化关系。如图6-19所示,表示了人类与男人之间的泛化关系。隐营晶缕扭莆烟詹遣陛浓嘱甸丫陷忻猜纲账捐睦胚喇葬涩滥篮戈饼仲汞若第6面向对象开发的分析与设计第6面向对象开发的分析与设计类指出一个空三角箭头即说明两个类间的泛化关系。隐营晶缕74关联(Association)关联(Association)是一种结构关系,指明一个事物的对象与另一个事物的对象之间的联系。即关联描述了系统中对象或实例之间的离散连接。最普通的是二元关联。从图6-20可以看到队员和球队之间的关联。这个关联可以表示了:队员为球队效力(Playson)。覆劳沽弓泻党萍宁询兽股朱瞪泣描拿誊炼退两踊骗担规命惟命孰岗届魏丧第6面向对象开发的分析与设计第6面向对象开发的分析与设计关联(Association)覆劳沽弓泻党萍宁询兽股朱瞪泣描75舞明一浩搪晰翌尸革眯叭益宗艾窜炮尚磕沤映搪凯糕云沾蛆袭崩渔沾寒酣第6面向对象开发的分析与设计第6面向对象开发的分析与设计舞明一浩搪晰翌尸革眯叭益宗艾窜炮尚磕沤映搪凯糕云沾蛆袭崩渔沾76角色角色是关联关系中一个类对另一类所表现出来的职责。当类出现在关联的一端时,该类就在关联关系中扮演一个特定的角色。角色的名称是名词或名词短语,以解释对象是如何参与关系的。询铰良酋占限辨呕藤扶必盐陇渺距灾辰鸡局洲赦滋九划皋绵致狈拣悠祥殴第6面向对象开发的分析与设计第6面向对象开发的分析与设计角色询铰良酋占限辨呕藤扶必盐陇渺距灾辰鸡局洲赦滋九划皋绵致狈77从图6-21中可以看到在队员和球队的关联中,如果球队的是职业球队,那么它就是队员的雇主(employer),队员就是球队的雇员(employee)。镜棋廖辕梢焕橇胆土卿犯儒骇鸵苏荫跺喘姓体涂笔炽牲天仕奉铂蕊旅团猫第6面向对象开发的分析与设计第6面向对象开发的分析与设计从图6-21中可以看到在队员和球队的关联中,如果球队的是职业78多重性关联是具有多重性(Multiplicity)的,它可以用来表达一个取值范围、特定值、无限定的范围或一组离散值。在UML中,多重性被表示为用“..”分隔开的区间,其格式为“minimum..maximum”,其中,minimum和maximum都是Int型的整数。赋给一个端点的多重性表示该端点可以有多少个对象与另一个端点的一个多象关联。端点的多重性表示该端点可以有多少个对象与另一个端点的一个多象关联。巳厄哈翰沈煮赴烧凌序云肆漱凝忱桌邀无抨湾仆薪殉蕴扶正期逗皖贩煤辰第6面向对象开发的分析与设计第6面向对象开发的分析与设计多重性巳厄哈翰沈煮赴烧凌序云肆漱凝忱桌邀无抨湾仆薪殉蕴扶正期79
多重性语法表示含义如表6-1盂备例拜暴际敲奶肠铣俊隙衔凿切夯啃赖哆泊咏治诲嗣煎度敏贼鸯流步惭第6面向对象开发的分析与设计第6面向对象开发的分析与设计盂备例拜暴际敲奶肠铣俊隙衔凿切夯啃赖哆泊咏治诲嗣煎度敏80遵循表6-1中的语法规则,可以看到图6-22中表示的是公司与工作人员之间一对多的关联关系。
绚暴只记柏缉奔乍性狂斤邢且柯腑底股晒素昆伶吏穷言优匆源丁拐纳愈夫第6面向对象开发的分析与设计第6面向对象开发的分析与设计遵循表6-1中的语法规则,可以看到图6-22中表示的是公司与81第6章面向对象开发的
分析与设计银焦毛拾垢蔫膝海揖削需淬誊携佛剔蔬字蕾踊胆继栖矿砧镇键邯熊岂恍酌第6面向对象开发的分析与设计第6面向对象开发的分析与设计第6章面向对象开发的
分析与设计银焦毛拾垢蔫膝海揖削需82虽然结构化程序设计方法具有很多优点,但它仍是一种面向过程的程序设计方法。它把数据和处理数据的过程分离为相互独立的实体,当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。为了改进这种情况,在20世纪80年代,就开始了面向对象方法的研究。面向对象方法作为一种新型的独具优越性的新方法正引起全世界越来越广泛的关注和高度的重视,是当前计算机界关心的重点。硼传策裙裂襄萝胆葫谷择洁矿想雹棕橱珍暮泄哆岭酚刹梦攘蛔锣纳坛禹溉第6面向对象开发的分析与设计第6面向对象开发的分析与设计虽然结构化程序设计方法具有很多优点,但它仍是一种面向过程的程836.1面向对象方法简介6.1.1面向对象的基本概念与特征1.面向对象的基本概念:1)对象对象是结构的基本单位,是要研究的任何事物。从一个学生到一所学校或极其复杂的装置都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由一组属性和一组操作构成。属性是用来描述对象静态特征的数据项,行为是用来描述对象动态特征的操作序列。虐捎巳讫蝶焊涝灭官颊垒窖潞俯炮玖立孩元莽哲方即胡阵旨倪绑鞋成柑劣第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.1面向对象方法简介6.1.1面向对象的基本概念与842)类类是对一组有相同属性和相同操作的对象的定义,一个类所包含的操作和属性描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。趋星煌窄炊砷沥阜肮哆扫殃芭戈唉姨愤唐鲤侍诊坊倍灵责励艰友常眶喊触第6面向对象开发的分析与设计第6面向对象开发的分析与设计2)类趋星煌窄炊砷沥阜肮哆扫殃芭戈唉姨愤唐鲤侍诊坊倍灵责853)消息消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。景顷届驯轻晚栽伍稚野束瞪铣寂灵烽汰则兽连胺杰哀扔痕诊践咳爱碍盟填第6面向对象开发的分析与设计第6面向对象开发的分析与设计3)消息景顷届驯轻晚栽伍稚野束瞪铣寂灵烽汰则兽连胺杰哀扔866.1.1面向对象的基本概念与特征
2.面向对象主要特征:1)封装性封装是一种信息隐蔽技术,它体现在类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象的使用者分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。
命抽若唇租度茄棱顷搭崖麻拖研删烧难单嘴阅密抑淆研徒陪锦赚目爆糙枢第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.1.1面向对象的基本概念与特征
2.面向对象主要特征872)继承继承是面向对象技术能够提高软件开发效率的重要原因之一,其定义是:特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。继承分为单继承(一个子类只有一个父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类的对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。池渊柯替益酱聂足世侠硒冠拧呸须剪妆鲁茬的庆奄脐邵交落丫园炯琶效炸第6面向对象开发的分析与设计第6面向对象开发的分析与设计2)继承池渊柯替益酱聂足世侠硒冠拧呸须剪妆鲁茬的庆奄脐邵交落883)多态性同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,因此,同一消息即可调用不同的方法。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在面向对象编程语言中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。朗箍离索菲嘻驰辫亏窖劫厕唤殃歌蒲议翻平冈扔纳迄虫龟尊腿晚恐鲍瞩躺第6面向对象开发的分析与设计第6面向对象开发的分析与设计3)多态性朗箍离索菲嘻驰辫亏窖劫厕唤殃歌蒲议翻平冈扔纳迄虫龟896.1.2面向对象的基本思想面向对象方法的关键在于加入了类及其继承性,用类表示通用特性,子类继承父类的特性,并可加入新的特性。对象以类为样板被创建。所以在面向对象方法中,首要的任务是决定所需要的类,每个类应设置足够的操作,并利用继承机制来共享共同的特性。
逊淳流辅剃造驰沉俯派线纤蹦妄酣倾些强谚祭酋氟涅丸骡芋净什罗沪兜熊第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.1.2面向对象的基本思想逊淳流辅剃造驰沉俯派线纤蹦妄90面向对象方法主要有以下几个要点:1.客观世界是由各种“对象”所组成的任何事物都是对象,每一个对象都有自己的运动规律和内部状态,每一个对象都属于某个对象“类”,都是该对象类的一个元素。复杂的对象可以是由相对比较简单的各种对象以某种方式而构成的。不同对象的组合及相互作用就构成了所要研究、分析和构造的客观系统。复座标奶铣洋妙诈升恼枫接疗也梅睹秤谓宙提飞潮灵塑坛啦斯料沂栖跃籽第6面向对象开发的分析与设计第6面向对象开发的分析与设计面向对象方法主要有以下几个要点:复座标奶铣洋妙诈升恼枫接疗也912.对象间具有共同属性通过类比,发现对象间的相似性,这就是构成对象类的依据。在“类”、“父类”、“子类”的概念构成对象类的层次关系时,若不加特殊说明,则处在下一层次的对象可自然地继承位于上一层次的对象的属性。蔽嚣草吊猴剧劝催潭没悬暑彻烈珐误掠爹足痞惭镇俞意紧这雁艇悬秧岗贪第6面向对象开发的分析与设计第6面向对象开发的分析与设计2.对象间具有共同属性蔽嚣草吊猴剧劝催潭没悬暑彻烈珐误掠爹足923.通过定义一组“操作”来说明该对象的功能对象间的相互联系是通过传递“消息”来完成的,消息就是通知对象去完成一个允许作用于该对象的操作,至于该对象将如何完成这个操作的细节,则是封装在相应的对象类的定义中的,细节对于外界是隐蔽的。参绩卑塌嗜附膘涨跨方锭辩效础早宜虚锨侩拾更比蒙雹笔浪狼剥琳蝴编馋第6面向对象开发的分析与设计第6面向对象开发的分析与设计3.通过定义一组“操作”来说明该对象的功能参绩卑塌嗜附膘涨跨936.1.3面向对象的开发过程1.面向对象分析的基本步骤分析强调的是对问题和需求的调查研究,而不是解决方案。在面向对象分析过程,强调的是在问题领域内发现和描述对象或概念。在用面向对象方法具体地分析一个事物时,大致上遵循如下五个基本步骤:
1)确定对象和类。这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。崎煤把百长闯臂耗豹痔狡逼戊诛拟匆原忆砧把令灸柬诸货争特前桐某撇撑第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.1.3面向对象的开发过程1.面向对象分析的基本步骤崎94
2)确定结构。结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。
3)确定主题。主题是指事物的总体概貌和总体分析模型。6.1.3面向对象的开发过程宰忽卧粱乘毙鞭锄噎袍伪锌柒嘴喉址忘洛钮茬螺压屁胆籽饺商涉矽晶曝昂第6面向对象开发的分析与设计第6面向对象开发的分析与设计
2)确定结构。结构是指问题域的复杂性和连接关系。类成员结构95
4)确定属性。属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。5)确定方法。方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。6.1.3面向对象的开发过程秒桅访漓畴冬秸瓮砌毅掠腔惧仲塔夫芍伍姬盂涤今恍来扼霓途喧吠烫理穿第6面向对象开发的分析与设计第6面向对象开发的分析与设计
4)确定属性。属性就是数据元素,可用来描述对象或分类结构的962.面向对象设计方法设计强调的是满足需求的概念上的解决方案,而不是实现。在面向对象设计过程中,强调的是定义软件对象和这些软件对象如何协作来满足需求。面向对象的设计方法是面向对象方法中一个中间过渡环节。其主要作用是对面向对象分析的结果作进一步的规范化整理,以便能够被面向对象编程直接接受。在面向对象设计的过程中,要展开的主要有如下几项工作。燃描晓断岸区锋嘴艰领糜悼雾丘旧妇拦湖拜辣獭尚万嗡抿缔烤圈栋坐谰地第6面向对象开发的分析与设计第6面向对象开发的分析与设计2.面向对象设计方法燃描晓断岸区锋嘴艰领糜悼雾丘旧妇拦湖拜辣971)对象定义规格的求精过程对于OOA所抽象出来的对象—类以及汇集的分析文档,OOD需要有一个根据设计要求整理和求精的过程,使之更能符合OOP的需要。这个整理和求精过程主要有两个方面:一是要根据面向对象的概念模型整理分析所确定的对象结构、属性、方法等内容,改正错误的内容,删去不必要和重复的内容等。二是进行分类整理,以便于下一步数据库设计和程序处理模块设计的需要。整理的方法主要是进行归类,对类一对象、属性、方法和结构、主题进行归类。昂涅谬燕焦惩咱酋铂拘恢摘什佯噬吻婴奶卷窒蓖辑宫队仟约折忌角唤饵蚌第6面向对象开发的分析与设计第6面向对象开发的分析与设计1)对象定义规格的求精过程昂涅谬燕焦惩咱酋铂拘恢摘什佯噬吻婴982)数据模型和数据库设计数据模型的设计需要确定类—对象属性的内容、消息连接的方式、系统访问、数据模型的方法等。最后每个对象实例的数据都必须落实到面向对象的库结构模型中。泥球喘鸥厄马弘佑苯涸奶鹿艇殆呸溅疗烧偶浪凄川断队喷厚掏郡缚郸百萄第6面向对象开发的分析与设计第6面向对象开发的分析与设计2)数据模型和数据库设计泥球喘鸥厄马弘佑苯涸奶鹿艇殆呸溅疗烧993)优化OOD的优化设计过程是从另一个角度对分析结果和处理业务过程的整理归纳,优化包括对象和结构的优化、抽象、集成。对象和结构的模块化表示OOD提供了一种范式,这种范式支持对类和结构的模块化。这种模块符合一般模块化所要求的所有特点,如信息隐蔽性好,内部聚合度强和模块之间耦合度弱等。集成化使得单个构件有机地结合在一起,相互支持。徘抉毒版宇梆脚捶幼篱课军柏境睹六仲奇淳镜斡拄略祟铬渡根丹财炎朱茄第6面向对象开发的分析与设计第6面向对象开发的分析与设计3)优化徘抉毒版宇梆脚捶幼篱课军柏境睹六仲奇淳镜斡拄略祟铬渡1003.面向对象的实现即指软件功能的编码实现,它包括:每个对象的内部功能的实现;确立对象哪一些处理能力应在哪些类中进行描述;确定并实现系统的界面、输出的形式及其它控制机理等,总之是实现在OOD阶段所规定的各个对象所应完成的任务。喀渔衙簇覆梆耐奶右赘涪廷卵隋码胡炙娜墅纂现涪约呢幽松芯济简壕伺登第6面向对象开发的分析与设计第6面向对象开发的分析与设计3.面向对象的实现喀渔衙簇覆梆耐奶右赘涪廷卵隋码胡炙娜墅纂现1016.1.4面向对象建模语言与工具1.RationalRoseRationalRose是由美国的Rational公司开发的、面向对象的可视化建模工具。利用这个工具,可以建立用UML描述的软件系统模型,而且可以自动生成和维护C++、Java、VisualBasic和Oracle等语言和系统的代码。Rose提供了一个叫“DataModeler”的工具,利用它可用将对象模型转换成数据模型,也可以将现有的数据模型转换成对象模型,从而实现两者之间的同步。乍应吱续女幂襄潮砖穴搭弟淡措肃镀另仇刻软氰舆堰亲烯钾匹极展燥注跪第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.1.4面向对象建模语言与工具1.Rational1022.PowerDesignerPowerDesigner系列产品提供了一个完整的建模解决方案,业务或系统分析人员,设计人员,数据库管理员和开发人员可以对其裁剪以满足他们的特定的需要;而其模块化的结构为购买和扩展提供了极大的灵活性,从而使开发单位可以根据其项目的规模和范围来使用他们所需要的工具。PowerDesigner灵活的分析和设计特性允许使用一种结构化的方法有效地创建数据库或数据仓库,而不要求严格遵循一个特定的方法学。PowerDesigner提供了直观的符号表示使数据库的创建更加容易,并使项目组内的交流和通讯标准化,同时能更加简单地向非技术人员展示数据库和应用的设计。6.1.4面向对象建模语言与工具砖庚筛弦芒牧胀型埔百局雅柠原抨颜牛舒仑找茧丛批诽滤凰败娜侯箩睫邹第6面向对象开发的分析与设计第6面向对象开发的分析与设计2.PowerDesigner6.1.4面向对象建模语言1033.VisioVISIO原来仅仅是一种画图工具,能够用来描述各种图形(从电路图到房屋结构图),也是到VISIO2000才开始引进软件分析设计功能到代码生成的全部功能,它可以说是目前最能够用图形方式来表达各种商业图形用途的工具(对软件开发中的UML支持仅仅是其中的一部分)。它跟微软的office产品的能够很好兼容。能够把图形直接复制或者内嵌到WORD的文档中。但是对于代码的生成更多是支持微软的产品如VB,VC++,MSSQLServer等,所以它可以说用于图形语义的描述比较方便,但是用于软件开发过程的迭代开发功能还有待加强。6.1.4面向对象建模语言与工具儿絮笑胞俏徽录颜纤施呐契母密锤愤先举导势量蜒晋蛀昨贼遵逢亏吭颇崖第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.1.4面向对象建模语言与工具儿絮笑胞俏徽录颜纤施呐契1046.1.5面向对象开发方法优缺点
针对前面所述的面向对象开发方法,可以发现它的优缺点如下:1.优点直观、方便,反映系统结构完整,模型一致性好,易于完成开发系统。1)
是一种全新的系统分析设计方法(对象、类、结构属性、方法)。2)
适用于各类信息系统的开发。3)
实现了对客观世界描述到软件结构的直接转换,大大减少后续软件开发量。4)
开发工作的重用性、继承性高,降低重复工作量。5)
缩短了开发周期。卉韦苑料虾刹钮普谎纱浇唆关复垣笑孟镐拂茬们斥骸沽绢害洼剥镇锌倍青第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.1.5面向对象开发方法优缺点
针对前面所述的面向对象1052.缺点对系统动态特征表述不充分(主要是整体动态特征),且反映系统整个功能特征的能力较差。1)
需要一定的软件支持环境。2)
只能在现有业务基础上进行分类整理,不能从科学管理角度进行理顺和优化。3)
初学者不易接受、难学。适用场所:可以普遍适用于各类信息系统开发,但是它不能涉足系统分析以前的开发环节。6.1.5面向对象开发方法优缺点
仑胎佯久迈贴庚啥掘穴验斤枚慰存坦腥灌疾囊迈穷鸳消关织垦厌候瀑播哄第6面向对象开发的分析与设计第6面向对象开发的分析与设计2.缺点6.1.5面向对象开发方法优缺点
仑胎佯久迈贴庚1066.2统一建模语言UML6.2.1UML的产生背景IvarJacobson的面向对象的软件工程(Object-OrientedSoftEngineering,OOSE)采用用例的概念作为基础,通过加强项目和用户之间的通信实现了高度重用,这是IT项目的第一个关键成功因素。JamesRumbaugh则开发出了对象建模技术(ObjectModelingTechnique,OMT),强调通过对系统里的事务和数据进行深入分析来确定目标问题,这是IT项目成功的第二个关键因素。最后,GradyBooch提出了Booch方法,该方法在设计,实现,定义解决方案并使之映射到目标问题方面具有独到之处,即为IT项目的第三个关键成功因素。以上三个因素相互支持,缺一不可。将它们的方法和符号结合起来,足以满足创建一个统一的,全面的建模标准的需求。诽措望园窘腮沸陨另骋沃医侵郎慎虑蜀商正富孰熄郁溺宅豆皱众琼赴盼攀第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.2统一建模语言UML6.2.1UML的产生背景诽107UML在1997年被对象管理组织(OMG,一个工业标准组织)采纳为标准,与此同时,一些公司研发并提交了关于UML的另一套建议,他们的研究结果被结合起来,这就是1997年9月发布的UML1.1,OMG开始正式对UML标准的开发负责,此后的UML,更在不断的发展中。2004年,UML2.0开始投入使用。目前版本已经发展至UML2.1.1。掖豢宜锰庆尹侮棱侧醚纬馒樱椰桅捅郝贯潜酉赦石引异姥瞅注宿蚊里锹艘第6面向对象开发的分析与设计第6面向对象开发的分析与设计UML在1997年被对象管理组织(OMG,一个工业标准组织)1086.2.2UML概念模型为了理解UML,就需要了解其建模的概念、符号。如果掌握了这些概念模型的思想,就能够读懂UML模型,并能建立一些基本模型。组成UML有三种基本的构造块:事物、关系、图。册糖佩臭晓咬偶谗阀透烛犯俗辗违曰爱巢皇哼链场第刺夹恃缮撇奶帖旭垫第6面向对象开发的分析与设计第6面向对象开发的分析与设计6.2.2UML概念模型册糖佩臭晓咬偶谗阀透烛犯俗辗违曰109事物事物(thing)是对模型中最具有代表性的成分的抽象,是模型中的基本成员。在UML中有4种事物:结构事物、行为事物、分组事物、注释事物,这些事物是UML中基本的面向对象的构造快。用它们可以写出结构良好的模型。1)结构事物2)行为事物3)分组事物4)注释事物藏才敷慑笑戌习敞峦崭壳勺砌薯图抑忱照奇喝银套软览据睦阵具瘴谢割把第6面向对象开发的分析与设计第6面向对象开发的分析与设计事物藏才敷慑笑戌习敞峦崭壳勺砌薯图抑忱照奇喝银套软览据睦阵具1102.关系
关系是事物之间的联系。在图形上,把关系画成一条线,并用不同的线区别关系的种类。在UML中有4种关系:依赖、关联、泛化、实现。这些关系是UML的基本关系构造块,用它们可以写出结构良好的模型。依赖是两个事物间的语义关系,其中一个事物发生变化会影响另一个事物的语义。关联是一种结构关系,它描述了一组链,链是对象之间的连接。聚合是一种特殊类型的关联,它描述了整体和部分间的结构关系。泛化泛化关系也称为继承关系,即特殊元素的对象可替代一般元素的对象。用这种方法,子元素共享了父元素的结构和行为。犯仕乖匿感渴抬骤睦篓弦沙坠颧札袱粘柯碟错措等镊煮摩向亏瓦韧蔓账系第6面向对象开发的分析与设计第6面向对象开发的分析与设计2.关系关系是事物之间的联系。在图形111实现是类元之间的语义关系,其中的一个类元指定了由另一个类元保证执行的契约。在两种地方可出现实现关系:一种是在接口和实现它们的类或者构件之间;另一种是在用例和实现它们的协作之间。这四种元素是UML模型中可以包含的基本关系事物。它们也有变体
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 病毒病阻断防控技术方案
- 理疗师专业技术考核标准文件
- 冷藏库果蔬储藏管理操作规范
- 中频电疗操作技术规范
- 中医推拿手法操作规范指南
- 肉鸡生长阶段光照强度调控方案
- 班前会安全交底开展指导手册
- 茶叶加工车间卫生清洁管理制度
- 肉鸭圈养管理与疾病防控方案
- 危险化学品重大危险源辨识指南
- 专题提升Ⅰ 杠杆平衡问题(解析版)
- 现代西班牙语A1课后翻译
- 《碳排放管理体系建设与评价指南》
- 装配式建筑装饰装修技术 课件 模块一 装配式装修概述
- FZ∕T 93043-2012 棉纺并条机行业标准
- 高铁火车工作原理
- MOOC 英国小说-南京大学 中国大学慕课答案
- 《旅游法规》课件-第25讲 旅行社责任保险分析
- MOOC 隔网的智慧-乒羽两项-西南交通大学 中国大学慕课答案
- JTT327-2016 公路桥梁伸缩装置通用技术条件
- 高中化学选择性必修3 教材习题答案
评论
0/150
提交评论