软件工程面向对象设计lyh

上传人:枫** 文档编号:568824554 上传时间:2024-07-27 格式:PPT 页数:110 大小:560KB
返回 下载 相关 举报
软件工程面向对象设计lyh_第1页
第1页 / 共110页
软件工程面向对象设计lyh_第2页
第2页 / 共110页
软件工程面向对象设计lyh_第3页
第3页 / 共110页
软件工程面向对象设计lyh_第4页
第4页 / 共110页
软件工程面向对象设计lyh_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《软件工程面向对象设计lyh》由会员分享,可在线阅读,更多相关《软件工程面向对象设计lyh(110页珍藏版)》请在金锄头文库上搜索。

1、 第六章第六章 面向对象设计面向对象设计训希参供卷京袱竞乡尼悦湃酝瘪忧函讫医涂庆韩瞬琼弗弱涩燕盘嗣池僚耕软件工程面向对象设计lyh软件工程面向对象设计lyh传统方法学概述传统方法学概述 传统方法学存在的问题传统方法学存在的问题 生产率提高的幅度远远不能满足需要 软件重用程度很低 软件仍然很难维护 软件往往不能真正满足用户需要 竟盈火涤点食躲危兔孪堕唇忙桌段办罗墓揽拭硬麓决锑苯鹏薄地敦识谊枯软件工程面向对象设计lyh软件工程面向对象设计lyh出现问题的原因出现问题的原因 僵化的瀑布模型*某些类型的系统需求是模糊的*项目参与者之间存在通信鸿沟*预先定义的需求可能是过时的 结构化技术的缺点 *用这种

2、技术开发出的软件,其稳定性、可修改性和可重用性都比较差。*结构化分析、设计技术的本质是功能分析。从代表目标系统整体功能的单个处理着手,自顶向下不断把复杂的处理分解为子处理,层层分解下去,直至仅剩下若干个容易实现的子处理为止。腆拖感惹双塞剪肇娇捡宅翁啮稠适默享南反掠水拂腊缓失右掠套垂缀理透软件工程面向对象设计lyh软件工程面向对象设计lyh功能与数据分离的软件设计结构与人类的现实世界环境很不一样,和人的自然思维也就很不一致,因此对现实世界的认识与编程之间存在着一道很深的理解上的鸿沟。 系统是围绕着如何实现一定的行为来进行的,当系统行为易变,需要常常修改时,修改极为困难。 在系统中模块之间的控制作

3、用有重要影响时,也就是说,实际的控制发生的根源来自分散的各个模块之中时,由于在“好的模块结构”中的模块间的控制作用只能通过上下之间的调用关系来进行,造成信息传递路径过长,效率低,易受干扰,甚至出错。自顶向下功能分解的分析方法极大地限制了软件的可重用性。 任缎渴凯谊鹅责擦深敦讫使带亏贡打岿槛瓣哟绥梳决屎港首石僳氧浪餐脏软件工程面向对象设计lyh软件工程面向对象设计lyh面向对象思想最初起源于20世纪60年代末的simula语言。面向对象方法的基本要点首次在simula语言中得到了表达和实现。80年代,位于美国加州的Xerox研究中心推出smalltalk语言及其程序设计环境,使得面向对象程序设计

4、方法得到比较完善的实现,掀起了面向对象研究的高潮。到80年代中后期,面向对象的软件设计和程序设计方法已发展成为一种成熟有效的软件开发方法。相比而言,面向对象的分析技术发展得比较滞后。 面向对象方法学概述面向对象方法学概述 助齿弥罚峰环纬辜磅铸丢羌嫉坚聂劲节阅锻喂键烛慕名福拓预瘩快蓟剐募软件工程面向对象设计lyh软件工程面向对象设计lyh“面向对象”(Object-Oriented)是针对“面向过程”一词提出的,是从本质上区别于传统的结构化方法的一种新方法,新思路。OO技术的基本原理是:按照问题域的基本事物实现自然分割,按人们通常的思维方式建立问题域的模型,设计尽可能直接自然表现问题求解的软件系

5、统。为此,OO技术引入了对象(object)概念来表现事物,用消息(message)传递建立事物间的联系。用类(class)和继承(inheritance)作为适应人们一般思维方式的描述模型。用方法(method)表示作用在对象上的各种操作。 面向对象方法学概述面向对象方法学概述 式魁沫金怔造键圆韩腾挠父广唱可荡妖宝泥通豁摄刽捡按幅渭东朝晚备滦软件工程面向对象设计lyh软件工程面向对象设计lyh建立在对象、消息、类、继承和方法等概念基础上的面向对象软件的基本特征是对象的封装性和继承性。通过封装可以将对象的定义与对象的实现分开。这样,无论是对象功能的完善扩充,还是对象实现的修改,影响仅限于该对象

6、内部,保证了面向对象软件的可构造性和易维护性。 通过继承可以表达类与类之间的联系,大大减少了重复定义,同时也使系统的结构更加清晰、易于理解和维护。 香挚震素据解友奥糠嘲勾猎婿致狰保疆砸正辕咆谦滞缸的漓督贺喝模涌缮软件工程面向对象设计lyh软件工程面向对象设计lyh6.1 6.1 面向对象设计概述面向对象设计概述6.2 6.2 系统设计系统设计6.3 6.3 对象设计对象设计6.4 6.4 领域对象设计领域对象设计教学内容:教学内容:频牡阀盘躲狸肆蝎湖裹苇减疗饶浮掘枣膳积以静汁硅侠讫妓斗干咱详炉汞软件工程面向对象设计lyh软件工程面向对象设计lyh 在第五章讲述了软件设计的几条基本原理,这些原理

7、在进行面在第五章讲述了软件设计的几条基本原理,这些原理在进行面向对象设计时仍然成立,但是增加了一些与面向对象方法密切相关向对象设计时仍然成立,但是增加了一些与面向对象方法密切相关的新特点,从而具体化为下列的面向对象设计准则:的新特点,从而具体化为下列的面向对象设计准则: 模块化模块化对象就是模块;对象就是模块; 抽象抽象类实际上是一种抽象数据类型;类实际上是一种抽象数据类型; 信息隐蔽信息隐蔽通过对象的封装性实现;通过对象的封装性实现; 弱耦合弱耦合主要指不同对象之间相互关联的紧密程度;主要指不同对象之间相互关联的紧密程度; 强内聚强内聚设计中使用的一个构件内的各个元素,对完成一设计中使用的一

8、个构件内的各个元素,对完成一个定义明确的目的所做出的贡献程度;个定义明确的目的所做出的贡献程度; 可重用可重用尽量使用已有的类,确实需要创建新类,则在设尽量使用已有的类,确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性;计这些新类的协议时,应该考虑将来的可重复使用性;皆御躺屑滇戎恫梳然蟹索踢懦绵法扯枕镶羽痊钉继绍轰知侗健蒙训酪织偿软件工程面向对象设计lyh软件工程面向对象设计lyh面向对象设计面向对象设计分析是提取和整理用户需求,并建立问题与精确模型的过程。设计则是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。面向对象设计就是用面向对象观点建立

9、求解域模型的过程。悄攘利虚抒草歉滨澡酞憎御搅肄俩丁蘸庸傍肌黄嫩诊沿费炔窿颠绵哎疮阶软件工程面向对象设计lyh软件工程面向对象设计lyh OOA与OOD的本质: OOA是一个分类活动,即分析问题力图确定在开发是一个分类活动,即分析问题力图确定在开发解决方案时可应用的对象解决方案时可应用的对象类,同时确定对象关系和行为。类,同时确定对象关系和行为。 OOD使得软件工程师能够确定从类中导出的使得软件工程师能够确定从类中导出的对象,对象,以及这些对象的相互关联,此外,以及这些对象的相互关联,此外,OOD描述了:对象间的描述了:对象间的关系如何达到;关系如何达到; 行为如何实现;对象间通信如何实现。行为

10、如何实现;对象间通信如何实现。 脓炭鹃誉零醒阑靶暮瞒命弃荡侠蘸援铲瞅敌溉哨玩粉撼市蓬松痴溺钒籽脖软件工程面向对象设计lyh软件工程面向对象设计lyh从从OOA到到OOD 逐渐扩充模型的过程逐渐扩充模型的过程 OOD分为两个阶段分为两个阶段:F 高层设计高层设计(系统设计)(系统设计)F 低层设计低层设计(对象(对象设计设计)羞峦樊尽播或鬼窝肿噬艇萝蜒灸鸡俩浦昭蛾耙狄诬档结总盖榆铃割舌淆恕软件工程面向对象设计lyh软件工程面向对象设计lyh6.1 面向对象设计概述面向对象设计概述 OOD则主要考虑则主要考虑“如何实现如何实现”的问题,因而这的问题,因而这一阶段注意的焦点从问题空间转移到解空间。一

11、阶段注意的焦点从问题空间转移到解空间。着重完成各种不同层次的模块设计。着重完成各种不同层次的模块设计。炔嫁痈奖钱淮碱蜜粪哭遥各档剂犊彤谚胞脏墟剑焰蕉僚健毛扦敦智倪政案软件工程面向对象设计lyh软件工程面向对象设计lyh1.面向对象设计的任务面向对象设计的任务 系统设计系统设计 对象设计对象设计 消息设计消息设计 复审设计模型复审设计模型蜡居幸绦肄碱肺砌霄隘眼彭壬淄动峡白匠音琼积葫汤肯掩窑最陵仍漳哦句软件工程面向对象设计lyh软件工程面向对象设计lyh系统设计系统设计主要完成系统整体结构的设计,包括将子系统分配到处理器和任务,选择实现数据管理、界面支持和任务管理的设计策略,为系统设计合适的控制机

12、制等。对象设计对象设计,对OOA模型中的类对象模型具体化、详细化。消息设计消息设计使用对象间的协作和对象关系模型,设计出消息模型。复审设计模型复审设计模型,对设计模型进行复审,并伴随着附加的OOA活动。和传统的结构化设计一样,面向对象设计也是将分析阶段所建立的分和传统的结构化设计一样,面向对象设计也是将分析阶段所建立的分析模型转变为软件设计模型。析模型转变为软件设计模型。缘醉舆氏脸挡柠笨翼遣寝舱女峨冒贡绸峦碉沈月域礁垂研赚褥鸥妒肩皿盎软件工程面向对象设计lyh软件工程面向对象设计lyh分析模型使用实例,使用实例,处于OOA模型核心的是“使用实例”(Use Case ),简称“用例”。获得软件的

13、需求后,软件分析员既可据此创建一组“场景”(Scenario),每个场景包含一个使用实例。从这些用例出发,进一步抽取和定义OOA模型的3种模型,即类类- -对象模型对象模型,描述系统所涉及的全部类-对象,每个类-对象都通过属性、操作和写作者来进行进一步描述;对象对象- -关系模型关系模型,描述对象之间的静态关系,同时定义了系统中所有重要的消息路径,它也可以具体化到对象的属性、操作和协作者;对象对象- -行为模型行为模型,描述了系统的动态行为,即对湘杂特定的状态下如何反映外界的事件。对象对象对象对象- - - -关关关关系模型系模型系模型系模型类类类类/ /对对对对象象象象 模型模型模型模型对象

14、对象对象对象- - - -行为模行为模行为模行为模型型型型使用实例使用实例使用实例使用实例(Use Case)(Use Case)(Use Case)(Use Case)操作、操作、操作、操作、属性、属性、属性、属性、协作者协作者协作者协作者燃界任燎践赊衫橇伺钢姆鹰泳盒敏旱债泥低洲铡么寿著询较穿章澜壹棍杖软件工程面向对象设计lyh软件工程面向对象设计lyh设计模型定义成了一个金字塔层次结构。自低而设计模型定义成了一个金字塔层次结构。自低而上分别为:上分别为:子系统层子系统层:包含每个子系统的表示包含每个子系统的表示类和对象层类和对象层:包含类层次和每个对象的设计表示包含类层次和每个对象的设计表

15、示消息层消息层:包含使得每个对象能够和其协作者通信的细节,包含使得每个对象能够和其协作者通信的细节,建立建立 系统的外部和内部接口系统的外部和内部接口责任层责任层:包含针对每个对象的所有属性和操作的数据结包含针对每个对象的所有属性和操作的数据结构和算法的设计构和算法的设计设计模型模型灶革排胃档纸庇墩促蛹业妙代柴煎黍必影控力元粤循铂啮貌艳光侥拓减涨软件工程面向对象设计lyh软件工程面向对象设计lyh将分析模型转换为设计模型将分析模型转换为设计模型使用使用实例实例对象关对象关对象关对象关系模型系模型系模型系模型索引卡索引卡索引卡索引卡片片片片对象对象对象对象- - - -行为模型行为模型行为模型行

16、为模型协作者协作者协作者协作者子子 系系 统统 设设 计计类及对象设计类及对象设计消息设计消息设计责任设计责任设计OO分析模型OO设计模型属属性性性性操操操操作作作作隐雄赌滨匠羽沮春蔽视荤疆涤强执亥捎蹭年剿屈天渍俐赁渐祈莲蔬纶香斋软件工程面向对象设计lyh软件工程面向对象设计lyh6.2 系统设计系统设计1. 系统设计过程系统设计过程 根据根据Rumbaugh对对OMT方法的定义,系统设计主要方法的定义,系统设计主要由以下步骤组成:由以下步骤组成:划分子系统;划分子系统;确定需要并发运行的子系统并为他们分配处理器;确定需要并发运行的子系统并为他们分配处理器;描述子系统之间的通信;描述子系统之间

17、的通信;确定系统资源的管理和控制;确定系统资源的管理和控制;确定人机交互构件;确定人机交互构件;选择实现数据管理和任务管理的基本策略。选择实现数据管理和任务管理的基本策略。农凰漱酚额块辑做御角刮蹦讲玄荫廷断需役卵铁薄和看黎棠埔锭宾赐恫思软件工程面向对象设计lyh软件工程面向对象设计lyh 目前流行的目前流行的OOD方法方法概述概述Rumbaugh方法方法(简称简称OMT)Rumbaugh的的OOD过程概述:过程概述:进行系统设计进行系统设计进行对象设计进行对象设计实现在系统设计中定义的控制机制实现在系统设计中定义的控制机制调整类结构以加强继承性调整类结构以加强继承性设计消息序列以实现对象关系(

18、关联)设计消息序列以实现对象关系(关联)包装类和对象为模块包装类和对象为模块衬软降垂妙思陇打馅签德萝兼铁宁接哄蒸抑也仕凿洋娶戏苏秦靛渣觅寞臀软件工程面向对象设计lyh软件工程面向对象设计lyh子系统设计过程中必须定义四种重要的设计结构问题域问题域直接负责实现客户需求的子系统直接负责实现客户需求的子系统人机交互人机交互实现用户界面的子系统(包括可复用的实现用户界面的子系统(包括可复用的GUI子系统)子系统)任务管理任务管理负责控制和协调并发任务的子系统,任务可负责控制和协调并发任务的子系统,任务可能被包装在一个子系统中或不同的子系统间;能被包装在一个子系统中或不同的子系统间;数据管理数据管理负责

19、对象的存储和检索的子系统负责对象的存储和检索的子系统 茂变吹椎推菱骆纤粹逗缄锗谴尊埠诵倘光阳宰顾胁端罕伐庙姿躲嘎吊躬锻软件工程面向对象设计lyh软件工程面向对象设计lyh 系统分解:系统分解:子系统既不是一个对象也不是一个功能,而是类、关子系统既不是一个对象也不是一个功能,而是类、关联、操作、事件和约束的内聚集合。联、操作、事件和约束的内聚集合。定义子系统遵循的标准:定义子系统遵循的标准:子系统应有良好的接口子系统应有良好的接口除少数除少数“通信类通信类”,子系统中的类应只和该子系统中,子系统中的类应只和该子系统中的其它类协作的其它类协作子系统数目不应太多子系统数目不应太多可在子系统内划分以降

20、低复杂性可在子系统内划分以降低复杂性划分划分分析模型分析模型子系统子系统跳埃莫嵌献彬昼沫侦蹋向亩阂孟巍江涣露练狮粮比两退选稚凯署篱吸泉瞄软件工程面向对象设计lyh软件工程面向对象设计lyh客户端客户端子系统子系统服务器端服务器端子系统子系统请求请求子系统间通信子系统间通信子系统间协作的模型子系统间协作的模型辊芹患酸帝窃雪销悉淑滨桶售朽箩铝喂对态队蓟婚片袄组纷伶屠度辙芒杆软件工程面向对象设计lyh软件工程面向对象设计lyh 目前流行的目前流行的OOD方法方法概述概述Coad-Yourdon方法方法Coad-Yourdon的的OOD过程概述:过程概述:问题域部分问题域部分人机交互部分人机交互部分任

21、务管理部分任务管理部分数据管理部分数据管理部分抖献苑惯椰羚赛仍韧溯聂裕娘拷堆苯诧瓤缴犁茄叹箭筒衅雹阶止肩波银寐软件工程面向对象设计lyh软件工程面向对象设计lyh2. 子系统设计子系统设计划分子系统(划分子系统(P128P128例例6.16.1)处理并发操作(处理并发操作(P129P129例例6.26.2)描述子系统间通信(描述子系统间通信(P130P130图图6.46.4)资源管理构件资源管理构件超碎净覆铲昌焚桃闯瞄拢治恿渍纠愚奥贡机岩否峙柠充庇诌龄鹰洞英慧彦软件工程面向对象设计lyh软件工程面向对象设计lyh3. 人机交互设计人机交互设计 虽然好的人机交互部分不可能挽救一个功能很差的虽然好

22、的人机交互部分不可能挽救一个功能很差的软件软件, , 但性能很差的人机交互部分将使一个功能很强的但性能很差的人机交互部分将使一个功能很强的产品变的不可接受产品变的不可接受! !睬诸驹汞军勤沧主夯祁镜附虏癌岔拐倍姜赘轿柬惶祷肿果巍病撅愤静漠吃软件工程面向对象设计lyh软件工程面向对象设计lyh 人机交互设计人机交互设计 人人-机交互部分的设计结果,将对用户情绪和工作效率机交互部分的设计结果,将对用户情绪和工作效率产生重要影响。产生重要影响。 人人-机界面设计得好,则会使系统对用户产生吸引力,机界面设计得好,则会使系统对用户产生吸引力,用户在使用系统的过程中会感到兴奋,能够激发用户用户在使用系统的

23、过程中会感到兴奋,能够激发用户的创造力,提高工作效率;的创造力,提高工作效率; 相反,人相反,人-机界面设计得不好,用户在使用过程中就会机界面设计得不好,用户在使用过程中就会感到不方便,不习惯,甚至会产生厌烦和恼怒的情绪。感到不方便,不习惯,甚至会产生厌烦和恼怒的情绪。停起跪政乍恼砧冻甘耀捕茫倚岳园职嚏酮汰矫辩场渺陨茂蜘稽醚旁皱仲抽软件工程面向对象设计lyh软件工程面向对象设计lyh设计人设计人-机交互界面的准则:机交互界面的准则:一致性一致性减少步骤减少步骤及时提供反馈信息及时提供反馈信息提供撤销命令提供撤销命令无须记忆无须记忆易学易学富有吸引力富有吸引力绰驯抱猫澄尘迪纽任宴敷溢捍瓢囤郎示迎

24、租可属阻影兢蚌低卫嵌猫灶每晕软件工程面向对象设计lyh软件工程面向对象设计lyh设计人设计人-机交互系统的策略:机交互系统的策略:分类用户分类用户按技能水平分类(新手按技能水平分类(新手/初级初级/中级中级/高级)高级)按职务分类(总经理按职务分类(总经理/经理经理/职员)职员)按所属集团分类(职员按所属集团分类(职员/顾客顾客)描述用户描述用户用户类型用户类型使用系统欲达到的目的使用系统欲达到的目的特征(年龄、性别、受教育程度、限制因素等)特征(年龄、性别、受教育程度、限制因素等)关键的成功因素(需求、爱好、习惯等)关键的成功因素(需求、爱好、习惯等)技能水平技能水平齿娠瞧瞅城臣应要岩陡螟死

25、瓦术炎绽中透挠临压柯夯缴胳做多篆志橱尾毙软件工程面向对象设计lyh软件工程面向对象设计lyh设计人设计人-机交互系统的策略:机交互系统的策略:设计命令层次设计命令层次研究现有的人研究现有的人-机交互含义和准则机交互含义和准则确定初始的命令层次确定初始的命令层次精华命令层次精华命令层次设计人设计人-机交互类机交互类人人-机交互类与使用的操作系统及编程语言密切相关。机交互类与使用的操作系统及编程语言密切相关。 例如:例如:windows环境下运行的环境下运行的Visual C+语言提供了语言提供了MFC类库,设计人类库,设计人-机交互类时,往往仅需从机交互类时,往往仅需从MFC类库中类库中选用一些

26、适用的雷,然后从这些类派生符合自己需要的类选用一些适用的雷,然后从这些类派生符合自己需要的类就可以了。就可以了。 络侥节平痴蓝趴乘蕉刷屈都淖淮烈逸隔有蛀弛贯盂鸿容罐且模韵牵溢矫艺软件工程面向对象设计lyh软件工程面向对象设计lyh传感器图形项目传感器控制系统人机交互部分设计举例传感器控制系统人机交互部分设计举例调用项目传感器状况窗口显示菜单调用菜单活动传感器项目调用项目传感器报警窗口显示菜单调用菜单活动位置传感器报警项目调用项目传感器窗口坐标剃稗林妹郸霄吃辩棕蛛湛挡酌狰绰或芽蕴往高抖克哈坤转毋喀赡曙甩烧洪软件工程面向对象设计lyh软件工程面向对象设计lyh4. 任务管理设计任务管理设计 削抽勺

27、挨澜赦锗正尊政亲麻擞婿函百舟示咱狼冲哗六咙鱼茶裙烦戮畅为虾软件工程面向对象设计lyh软件工程面向对象设计lyh1.1.为什么要有任务管理部分为什么要有任务管理部分 虽然从概念上说,不同对象可以并发地工作,但是,在实际系虽然从概念上说,不同对象可以并发地工作,但是,在实际系统中,许多对象之间往往存在相互依赖关系。此外,在实际使统中,许多对象之间往往存在相互依赖关系。此外,在实际使用的硬件中,可能仅由一个处理器支持多个对象。因此,设计用的硬件中,可能仅由一个处理器支持多个对象。因此,设计工作的一项重要内容就是,确定哪些是必须同时动作的对象,工作的一项重要内容就是,确定哪些是必须同时动作的对象,哪些

28、是相互排斥的对象。哪些是相互排斥的对象。 一是由于在多用户、多任务或多线程操作在系统上开发应用一是由于在多用户、多任务或多线程操作在系统上开发应用程序的需要;程序的需要; 二是在通过任务描述目标软件系统中各子系统间的通信和协二是在通过任务描述目标软件系统中各子系统间的通信和协同时,引入任务概念能简化某些应用的设计和编码。同时,引入任务概念能简化某些应用的设计和编码。唬探败裁靡域寄芥筹罢彻奏廖邑啪绳闸星巩指摄憨究莹卓左车罚薄乙衔寻软件工程面向对象设计lyh软件工程面向对象设计lyh分析并发性分析并发性 通过面向对象分析建立起来的动态模型,是分析并发通过面向对象分析建立起来的动态模型,是分析并发性

29、的主要依据。如果两个对象彼此间不存在交互,或性的主要依据。如果两个对象彼此间不存在交互,或者它们同时接受事件,则这两个对象在本质上是并发者它们同时接受事件,则这两个对象在本质上是并发的。通过检查各个对象的状态图及它们之间交换的事的。通过检查各个对象的状态图及它们之间交换的事件,能够把若干个非并发的对象归并到一条控制线中。件,能够把若干个非并发的对象归并到一条控制线中。 所谓控制线,是一条遍及状态图集合的路径,在这条所谓控制线,是一条遍及状态图集合的路径,在这条路经商每次只有一个对象是活动的。在计算机系统中路经商每次只有一个对象是活动的。在计算机系统中用任务(用任务(task)实现控制线,一般认

30、为是进程)实现控制线,一般认为是进程(process)的别名。通常把多个任务的并发执行称)的别名。通常把多个任务的并发执行称为多个任务。为多个任务。 吁约气您诣张遵将情炔间藻殃镜核茂耀竿磊磨靴部浑杯疏铡逸寻撞码平巳软件工程面向对象设计lyh软件工程面向对象设计lyh怎样设计任务管理部分怎样设计任务管理部分确定事件驱动型任务确定事件驱动型任务确定时钟驱动型任务确定时钟驱动型任务确定优先任务确定优先任务确定关键任务确定关键任务确定协调任务确定协调任务尽量减少任务数尽量减少任务数确定资源需求确定资源需求婚捏蓑厅赫竞首沥投叛耐欢亥麓朵靡据毖化领阐徒恢娜稳部伟皂没容肯性软件工程面向对象设计lyh软件工程

31、面向对象设计lyh传感器控制系统任务管理部分设计举例传感器控制系统任务管理部分设计举例任务协调器任务协调器协调协调任务任务名字名字描述描述优先级优先级服务服务协调协调通信通信初始化初始化开始开始准备好准备好结束结束10,m差寓坯妥乡略忘蔗纽洛石纬投薄烹勒党固氏羽侍泞搪逞进蠢暴吟测壕渔炳软件工程面向对象设计lyh软件工程面向对象设计lyh传感器任务描述举例传感器任务描述举例任务任务1 1名字:名字: 传感器读出。传感器读出。描述:描述: 该任务在需要脉冲调幅时负责读该任务在需要脉冲调幅时负责读 出传感器。出传感器。包含:包含: 传感器传感器. .样本。样本。优先级优先级: :中等。中等。协调:协

32、调: 时钟驱动,时钟驱动,100ms的时间间隔。的时间间隔。通信:通信: 从输入线(传感器)得到值,从输入线(传感器)得到值, 给雷达邮箱发送值。给雷达邮箱发送值。仅酪臀哎汾渤辱媚敌寿甩磨骄傈钢著涝孰种像驭渡编患铬纺彩蓟棵啡播掩软件工程面向对象设计lyh软件工程面向对象设计lyh5. 数据管理设计数据管理设计 数据管理部分提供了数据在数据管系统中存储和检索数据管理部分提供了数据在数据管系统中存储和检索对象的基本结构,它分离了数据管理方案的影响对象的基本结构,它分离了数据管理方案的影响 ( (不不管该方案是普通文件、关系型数据库、面向对象数据管该方案是普通文件、关系型数据库、面向对象数据库或其它

33、方式。库或其它方式。) ) 虱惜斥林皖僳渊稗艾慰恐尹古镭韭象乖熙佣沸纶煞吾揪皆历恍俯红砚伙改软件工程面向对象设计lyh软件工程面向对象设计lyh 如何设计数据管理部分如何设计数据管理部分 ( (1)1)设计数据设计数据格式格式(2)(2)相应服务的设计相应服务的设计尽农算氧口限靠搂浦暴擦壮盗泳怯匝歼烹锹询圣趴苫介惺邪议梗翱挚岩捡软件工程面向对象设计lyh软件工程面向对象设计lyh设计数据格式:设计数据格式:文件系统文件系统关系数据库管理系统关系数据库管理系统面向对象数据库管理系统面向对象数据库管理系统撕藉相麓汪愧羞丘矮漠嚏视酪位姥江歪嚷遮赚众聋径嘎酮间氨爹褥几圆写软件工程面向对象设计lyh软件

34、工程面向对象设计lyh文件管理系统文件管理系统 文件管理系统是操作系统的一个组成部分,使用文件管理系统是操作系统的一个组成部分,使用它长期保存数据具有它长期保存数据具有成本低成本低和和简单简单等特点。等特点。但是,文件操作的级别低,为提供适当的抽象级但是,文件操作的级别低,为提供适当的抽象级别还必须编写额外的代码。别还必须编写额外的代码。此外,不同操作系统的文件管理系统往往有明显此外,不同操作系统的文件管理系统往往有明显差异。差异。 嗜涛仰付乐刃芜炕嚼世崎瘩府侯揉溃肠鸥游厨斋秤氯如宰挣官阴捡亨势儒软件工程面向对象设计lyh软件工程面向对象设计lyh关系数据库管理系统关系数据库管理系统 主要优点

35、:主要优点:提供了各种最基本的数据管理功能(例如,中提供了各种最基本的数据管理功能(例如,中断恢复,多用户共享,多应用共享,完整性,断恢复,多用户共享,多应用共享,完整性,事务支持等)。事务支持等)。为多种应用提供了一致的接口。为多种应用提供了一致的接口。标准化的语言(大多数商品化关系数据库管理标准化的语言(大多数商品化关系数据库管理系统都使用系统都使用SQL语言)。语言)。地棱惮狂圭浪俗侩判寓鸵衔杠栅溉阂寐矿蚌褥珐市非稿峦弹觅摆轩孟妨身软件工程面向对象设计lyh软件工程面向对象设计lyh关系数据库管理系统关系数据库管理系统通常都相当复杂,具体缺点:通常都相当复杂,具体缺点:运行开销大:运行开

36、销大:即使只完成简单的事务,也需要较长的时间。即使只完成简单的事务,也需要较长的时间。不能满足高级应用的需求:不能满足高级应用的需求:关系数据库管理系统很难用在数据类型丰富或操作关系数据库管理系统很难用在数据类型丰富或操作不标准的应用中。不标准的应用中。与程序设计语言的连接不自然:与程序设计语言的连接不自然:SQL语言支持面向集合的操作,是一种非过程性语语言支持面向集合的操作,是一种非过程性语言;然而大多数程序设计语言本质上却是过程性的,言;然而大多数程序设计语言本质上却是过程性的,每次只能处理一个记录。每次只能处理一个记录。麦挚费宪营演一浑赖擎滑濒娟拨垃瑞溜本刘批诵号温鸵抒雏析帕穴智铃搁软件

37、工程面向对象设计lyh软件工程面向对象设计lyh面向对象数据库管理系统面向对象数据库管理系统 面向对象数据库管理系统是一种新技术,面向对象数据库管理系统是一种新技术,主要有两种设计途径:主要有两种设计途径:扩展的关系数据库管理系统:扩展的关系数据库管理系统:在关系数据库的基础上,增加了抽象数据类型和继在关系数据库的基础上,增加了抽象数据类型和继承机制,此外还增加了创建及管理类和对象的通用承机制,此外还增加了创建及管理类和对象的通用服务。服务。扩展的面向对象程序设计语言:扩展的面向对象程序设计语言:扩充了面向对象程序设计语言的语法和功能,增加扩充了面向对象程序设计语言的语法和功能,增加了在数据库

38、中存储和管理对象的机制。了在数据库中存储和管理对象的机制。谬袱蝴揭塑碴逸逮痹冷鞭灿监妹窄您幌躁躲横菊划诣贸蛀觉夹填赃椭命怯软件工程面向对象设计lyh软件工程面向对象设计lyh设计数据管理子系统设计数据管理子系统 设计数据格式设计数据格式文件系统文件系统关系数据库管理系统关系数据库管理系统面向对象数据库管理系统面向对象数据库管理系统设计相应的服务设计相应的服务文件系统文件系统关系数据库管理系统关系数据库管理系统面向对象数据库管理系统面向对象数据库管理系统椽妹涂蚜轰轿绝嗽泛利馅申惟蚁肘菲昼扮含螺耽少斗慢妆康栖涡裸禽铝局软件工程面向对象设计lyh软件工程面向对象设计lyh设计数据格式设计数据格式 文

39、件系统文件系统定义第一范式表:定义第一范式表:列出每个类的属性表;列出每个类的属性表;把属性表规范成第一范式,从而得到第一范式表的把属性表规范成第一范式,从而得到第一范式表的定义。定义。为每个第一范式表定义一个文件。为每个第一范式表定义一个文件。测量性能和需要的存储容量。测量性能和需要的存储容量。修改原设计的第一范式,以满足性能和存储需修改原设计的第一范式,以满足性能和存储需求。求。您袍曾花需谚祝捎婶年箭芽孜辉念逢搔吵田肠越漓小派厂爸沿褂闯善慑泣软件工程面向对象设计lyh软件工程面向对象设计lyh设计数据格式设计数据格式关系数据库管理系统关系数据库管理系统定义第三范式表:定义第三范式表:列出每

40、个类的属性表;列出每个类的属性表;把属性表规范成第三范式,从而得出第三范式表的把属性表规范成第三范式,从而得出第三范式表的定义。定义。为每个第三范式表定义一个数据库表。为每个第三范式表定义一个数据库表。测量性能和需要的存储容量。测量性能和需要的存储容量。修改先前设计的第三范式,以满足性能和存储修改先前设计的第三范式,以满足性能和存储需求。需求。匹戴杖徐兴尧疲琵醉滤雄榨性逞粪辣蜕圭于眠勾闻投知瘦狸韩耳揣磁浇拳软件工程面向对象设计lyh软件工程面向对象设计lyh设计数据格式设计数据格式面向对象数据库管理系统面向对象数据库管理系统扩展的关系数据库途径:扩展的关系数据库途径:使用与关系数据库管理系统相

41、同的方法。使用与关系数据库管理系统相同的方法。扩展的面向对象程序设计语言途径:扩展的面向对象程序设计语言途径:不需要规范化属性的步骤,因为数据库管理系统本不需要规范化属性的步骤,因为数据库管理系统本身具有把对象值映射成存储值的功能。身具有把对象值映射成存储值的功能。 贬寒详疵眷岗艺钾驱颜馆暂夯深墨践芹兢诸剪纽捞栽痴脱厦娄优宪已岛腋软件工程面向对象设计lyh软件工程面向对象设计lyh设计相应的服务设计相应的服务 如果某个类的对象需要存储起来,则在这个类中如果某个类的对象需要存储起来,则在这个类中增加一个属性和服务,用于完成存储对象自身的增加一个属性和服务,用于完成存储对象自身的工作。工作。应该把

42、为此目的增加的属性和服务作为应该把为此目的增加的属性和服务作为“隐含隐含”的属的属性和服务,即无须在面向对象设计模型的属性和服务性和服务,即无须在面向对象设计模型的属性和服务层中显式地表示它们,仅需在关于类层中显式地表示它们,仅需在关于类&对象的文档对象的文档中描述它们。中描述它们。用于用于“存储自己存储自己”的属性和服务,在问题域子系的属性和服务,在问题域子系统和数据管理子系统之间构成一座必要的桥梁。统和数据管理子系统之间构成一座必要的桥梁。这样设计之后,对象将知道怎样存储自己。这样设计之后,对象将知道怎样存储自己。霉岸讣辱塌俺杆湾法楚贱迷望豪蛛秃钒州膨舅婴诵扁犊赢涧夫沼贤梅奔恤软件工程面向

43、对象设计lyh软件工程面向对象设计lyh设计相应的服务设计相应的服务文件系统文件系统被存储的对象需要知道打开哪个(些)文件,被存储的对象需要知道打开哪个(些)文件,怎样把文件定位到正确的记录上,怎样检索出怎样把文件定位到正确的记录上,怎样检索出旧值,以及怎样用现有值更新它们。旧值,以及怎样用现有值更新它们。此外,定义一个此外,定义一个ObjectServer(对象服务器)(对象服务器)类,并创建它的实例。该类提供下列服务:类,并创建它的实例。该类提供下列服务:通知对象保存自身;通知对象保存自身;检索已存储的对象,以便把这些对象提供给其他子检索已存储的对象,以便把这些对象提供给其他子系统使用。系

44、统使用。告唉锚肪誊澈狐盲哮另箩部甘姚粳蕾闺冀双央症街芜喉炙联隐烈枢靴弓召软件工程面向对象设计lyh软件工程面向对象设计lyh设计相应的服务设计相应的服务关系数据库管理系统关系数据库管理系统被存储的对象,应该知道访问哪些数据库表,被存储的对象,应该知道访问哪些数据库表,怎样访问所需要的行,怎样检索出旧值,以及怎样访问所需要的行,怎样检索出旧值,以及怎样用现有值更新它们。怎样用现有值更新它们。此外,定义一个此外,定义一个ObjectServer类,并声明它的类,并声明它的对象。该类提供下列服务:对象。该类提供下列服务:通知对象保存自身;通知对象保存自身;检索已存储的对象,以便由其他子系统使用这些对

45、检索已存储的对象,以便由其他子系统使用这些对象。象。赶蔽食结齿沂叫耪钉橱丝投娟散混蓬叉竞汝蛾寸按谍矾祷业保蒸晤掉瓶阑软件工程面向对象设计lyh软件工程面向对象设计lyh设计相应的服务设计相应的服务面向对象数据库管理系统面向对象数据库管理系统扩展的关系数据库途径:扩展的关系数据库途径:与使用关系数据库管理系统时方法相同。与使用关系数据库管理系统时方法相同。扩展的面向对象程序设计语言途径:扩展的面向对象程序设计语言途径:无须增加服务,这种数据库管理系统已经给每个对无须增加服务,这种数据库管理系统已经给每个对象提供了象提供了“存储自己存储自己”的行为。的行为。只需给需要长期保存的对象加个标记,然后由

46、面向只需给需要长期保存的对象加个标记,然后由面向对象数据库管理系统负责存储和恢复这类对象。对象数据库管理系统负责存储和恢复这类对象。长抠逗掌泳续加趁俏誉绽悉型碾晒戈芥传茸膀酵藉羹堑烷花寥借估相铜污软件工程面向对象设计lyh软件工程面向对象设计lyh例子例子 (ATM系统)系统)因为必须保持数据的一致性和完整性,而因为必须保持数据的一致性和完整性,而且常常有多个并发事务同时访问这些数据,且常常有多个并发事务同时访问这些数据,因此,采用成熟的商品化关系数据库管理因此,采用成熟的商品化关系数据库管理系统存储数据。系统存储数据。应该把每个事务作为一个不可分割的批操应该把每个事务作为一个不可分割的批操作

47、来处理,由事务封锁账户直到该事务结作来处理,由事务封锁账户直到该事务结束为止。束为止。长侵例微拢侍唉秧咏搀之谨柯液峡创蹄杀馈乡盎热误纬凝鲜豺竖肃锭次巩软件工程面向对象设计lyh软件工程面向对象设计lyh例子例子 (ATM系统)系统)在这个例子中,需要存储的对象主要是账在这个例子中,需要存储的对象主要是账户类的对象。户类的对象。为了支持数据管理子系统的实现,账户类为了支持数据管理子系统的实现,账户类对象必须知道自己是怎样存储的,有两种对象必须知道自己是怎样存储的,有两种方法可以达到这个目的:方法可以达到这个目的:每个对象自己保存自己每个对象自己保存自己由数据管理子系统负责存储对象由数据管理子系统

48、负责存储对象运徒垒吏木亦碰堆沁戊培雕贬缅彦梢蔡木邓悟启砧褒狸霓滤腿欠剪哄夺彪软件工程面向对象设计lyh软件工程面向对象设计lyh例子例子 (ATM系统)系统)应该定义一个数据管理类应该定义一个数据管理类ObjectServer,并声明它的对象。并声明它的对象。这个类提供下列服务:这个类提供下列服务:通知对象保存自身或保存需长期存储的对象的通知对象保存自身或保存需长期存储的对象的状态;状态;检索已存储的对象并使之检索已存储的对象并使之“复活复活”。柿权筐慨郁罐兔薛烩覆罕陷一追弗腆循侈纠苦嚎骑幅铭背绿民畔泣脯循震软件工程面向对象设计lyh软件工程面向对象设计lyh设计类中的服务设计类中的服务 设计

49、类中的服务是面向对象设计的一项重设计类中的服务是面向对象设计的一项重要工作内容。要工作内容。确定类中应有的服务确定类中应有的服务设计实现服务的方法设计实现服务的方法仿汹撼塌家憎塞瞒膝浮嵌魁荣磁春旬夸身呆损眯尔遮邑募届赠蝴诛班辰靴软件工程面向对象设计lyh软件工程面向对象设计lyh确定类中应有的服务确定类中应有的服务 需要综合考虑面向对象的分析模型,才能需要综合考虑面向对象的分析模型,才能正确确定类中应有的服务。正确确定类中应有的服务。对象模型对象模型动态模型动态模型功能模型功能模型碎碰驾絮久末成饼萄翼栅杆箩一印尾诗罕滁或蒙琳怜右息肿立摧农淋涎懊软件工程面向对象设计lyh软件工程面向对象设计ly

50、h确定类中应有的服务确定类中应有的服务对象模型:对象模型:通常只在每个类中列出很少几个最核心的服通常只在每个类中列出很少几个最核心的服务。务。动态模型:动态模型:一张状态图描绘了一个对象的生命周期,图一张状态图描绘了一个对象的生命周期,图中的状态转换是执行对象服务的结果。中的状态转换是执行对象服务的结果。对象的许多服务都与对象接收到的事件密切对象的许多服务都与对象接收到的事件密切相关。对象的动作既与事件有关,也与对象相关。对象的动作既与事件有关,也与对象的状态有关。的状态有关。染聋恶早埂夹冗敖芯民辈屋佰叁泡滁困肢枉均创缴素濒箔淹卑既脐钟棍肛软件工程面向对象设计lyh软件工程面向对象设计lyh确

51、定类中应有的服务确定类中应有的服务动态模型:动态模型:事件表现为消息,接收消息的对象必然有由消事件表现为消息,接收消息的对象必然有由消息选择符指定的服务,该服务改变对象状态息选择符指定的服务,该服务改变对象状态(修改相应的属性值),并完成对象应做的动(修改相应的属性值),并完成对象应做的动作。作。一个对象在不同状态可以接受同样事件,而且一个对象在不同状态可以接受同样事件,而且在不同状态接收到同样事件时其行为不同,则在不同状态接收到同样事件时其行为不同,则实现服务的算法中需要有一个依赖于状态的实现服务的算法中需要有一个依赖于状态的DO-CASE型控制结构。型控制结构。粤从迢囚赵惋丫涨擎掌匈址陀迄

52、诛坛足穆眯矾迄磐牢品言窒钻峡框习拒斋软件工程面向对象设计lyh软件工程面向对象设计lyh确定类中应有的服务确定类中应有的服务功能模型:功能模型:数据流图中的某些处理可能与对象提供的服务数据流图中的某些处理可能与对象提供的服务相对应。相对应。下列规则有助于确定对象的操作,即应该在该下列规则有助于确定对象的操作,即应该在该对象所属的类中定义相应的服务:对象所属的类中定义相应的服务:如果某个处理的功能是从输入流中抽取一个值,则如果某个处理的功能是从输入流中抽取一个值,则该输入流对象应该定义一个相应的服务。该输入流对象应该定义一个相应的服务。如果某个处理从多个输入流得出输出值,则该输出如果某个处理从多

53、个输入流得出输出值,则该输出类对象应该定义一个相应的服务。类对象应该定义一个相应的服务。言要胸渊崎羊餐泄纸辞哟府植舟挞削扒沈韧粮润盏遵棍惨伐叛管姐篡山驹软件工程面向对象设计lyh软件工程面向对象设计lyh确定类中应有的服务确定类中应有的服务如果某个处理具有类型相同的输入流和输出流,而如果某个处理具有类型相同的输入流和输出流,而且输出流实质上是输入流的另一种形式,则该输入且输出流实质上是输入流的另一种形式,则该输入输出流对象应该定义一个相应的服务。输出流对象应该定义一个相应的服务。如果某个处理把对输入流处理的结果输出给数据存如果某个处理把对输入流处理的结果输出给数据存储或动作对象,则该数据存储或

54、动作对象应该定义储或动作对象,则该数据存储或动作对象应该定义一个相应的服务。一个相应的服务。主堰漾上荫晓湖鼎栅撇戌啃二碰卷染呐恭藏唱逾粪头玖痞素筒偷帕灭梨郸软件工程面向对象设计lyh软件工程面向对象设计lyh确定类中应有的服务确定类中应有的服务功能模型:功能模型:当一个处理涉及多个对象时,通常在起主要作当一个处理涉及多个对象时,通常在起主要作用的对象类中定义这个服务。用的对象类中定义这个服务。下面两条规则有助于确定处理的归属:下面两条规则有助于确定处理的归属:如果处理影响或修改了一个对象,则最好在这个对如果处理影响或修改了一个对象,则最好在这个对象类(而不是触发者)中定义相应的服务。象类(而不

55、是触发者)中定义相应的服务。考察处理涉及的对象类及这些类之间的关联,从中考察处理涉及的对象类及这些类之间的关联,从中找出处于中心地位的类。如果其他类和关联围绕这找出处于中心地位的类。如果其他类和关联围绕这个中心类构成星形,则最好在这个中心类中定义相个中心类构成星形,则最好在这个中心类中定义相应的服务。应的服务。 雇敏桐奥痔猾其哮杀炯担抢剩配撤睡片粮挝忍怖珊盂身普阜狂缘赢逛萍哄软件工程面向对象设计lyh软件工程面向对象设计lyh设计实现服务的方法设计实现服务的方法 在面向对象设计过程中还应该进一步设计在面向对象设计过程中还应该进一步设计实现服务的方法,主要应该完成以下几项实现服务的方法,主要应该

56、完成以下几项工作:工作:设计实现服务的算法设计实现服务的算法选择数据结构选择数据结构定义内部类和内部操作定义内部类和内部操作袭剖灰懂囚轨拷沥夸涤笆吴复沮贵蚤馋苗泊钮咖氏色沿顺金典塘掘龚墩遭软件工程面向对象设计lyh软件工程面向对象设计lyh设计实现服务的算法设计实现服务的算法 应该考虑下列几个因素:应该考虑下列几个因素:算法复杂度算法复杂度通常选用复杂度较低的算法,但也不要过分追求高通常选用复杂度较低的算法,但也不要过分追求高效率,应以能满足用户需求为准。效率,应以能满足用户需求为准。容易理解与容易实现容易理解与容易实现容易理解与容易实现的要求往往与高效率有矛盾,容易理解与容易实现的要求往往与

57、高效率有矛盾,设计者应该对这两个因素适当折衷。设计者应该对这两个因素适当折衷。易修改易修改应该尽可能预测将来可能做的修改,并在设计时预应该尽可能预测将来可能做的修改,并在设计时预先做些准备。先做些准备。 咨臀锈装藩碟匣博胯豫纽陕腐坎炙绎尔陌苛晓副圣氰譬袭糖神恩涯贿茧告软件工程面向对象设计lyh软件工程面向对象设计lyh选择数据结构选择数据结构在分析阶段,仅需考虑系统中需要的信息在分析阶段,仅需考虑系统中需要的信息的逻辑结构。的逻辑结构。在面向对象设计过程中,则需要选择能够在面向对象设计过程中,则需要选择能够方便、有效地实现算法的物理数据结构。方便、有效地实现算法的物理数据结构。 咕享硝蹋昨忻雷

58、问羌宽吞肪凶健搏噬主泄足剪拎冷彪母蕊长科卒刺俺柒煮软件工程面向对象设计lyh软件工程面向对象设计lyh定义内部类和内部操作定义内部类和内部操作 在面向对象设计过程中,可能需要增添一些在需在面向对象设计过程中,可能需要增添一些在需求陈述中没有提到的类。求陈述中没有提到的类。主要用来存放在执行算法过程中所得出的某些中间结主要用来存放在执行算法过程中所得出的某些中间结果。果。此外,复杂操作往往可以用简单对象上的更低层此外,复杂操作往往可以用简单对象上的更低层操作来定义。操作来定义。因此,在分解高层操作时常常引入新的低层操作。因此,在分解高层操作时常常引入新的低层操作。在面向对象设计过程中应该定义这些

59、新增加的低层操在面向对象设计过程中应该定义这些新增加的低层操作。作。古老涡吗淄晶餐虎波蓝避敝驭笛同肩逃螺浚茅慷掺傍梯服次绘掩斤沏菌瘩软件工程面向对象设计lyh软件工程面向对象设计lyh设设 计计 关关 联联 关联关系反映对象之间相互依赖、相互作关联关系反映对象之间相互依赖、相互作用的关系。用的关系。在面向对象设计过程中,设计人员必须确在面向对象设计过程中,设计人员必须确定实现关联的具体策略。定实现关联的具体策略。关联的遍历关联的遍历实现单向关联实现单向关联实现双向关联实现双向关联链属性的实现链属性的实现粉狙拜丧蔷鸯钳毗较藉纂曼笋辉玛蜕闯糖瞥捎鲸狱婴背蛔倔扰依赌挟建琼软件工程面向对象设计lyh软

60、件工程面向对象设计lyh关联的遍历关联的遍历 在应用系统中,使用关联有两种可能的方在应用系统中,使用关联有两种可能的方式:式:单向遍历:单向遍历:实现简单实现简单双向遍历:双向遍历:实现麻烦实现麻烦侨伺镰蜡央决障侈血贵榴绣侥翰啃坊猫刻捷委洞鳖苞哭话几雁挎塞拨佣侠软件工程面向对象设计lyh软件工程面向对象设计lyh实现单向关联实现单向关联用指针可以方便地实现单向关联。用指针可以方便地实现单向关联。如果关联的阶是一元的,则实现关联的指针是一如果关联的阶是一元的,则实现关联的指针是一个简单指针;如果阶是多元的,则需要用一个指个简单指针;如果阶是多元的,则需要用一个指针集合实现关联。针集合实现关联。

61、权荔篡疾僵痰妖棠字哟幅陵溯夷氢壶玲郭叛胚椰早庄咱亨臣街颠奢吠西擒软件工程面向对象设计lyh软件工程面向对象设计lyh实现双向关联实现双向关联 实现双向关联有下列三种方法:实现双向关联有下列三种方法:1.只用属性实现一个方向的关联,当需要反向遍历时就只用属性实现一个方向的关联,当需要反向遍历时就执行一次正向查找。执行一次正向查找。 2.两个方向的关联都用属性实现,这种方法能实现快速两个方向的关联都用属性实现,这种方法能实现快速访问。访问。须袭舞淹捕建般弦投傣三邱胖剪涧御幕粘鹃蚁掩躬功渗疫陀厢邦辐浅蔓叠软件工程面向对象设计lyh软件工程面向对象设计lyh实现双向关联实现双向关联实现双向关联有下列三

62、种方法:实现双向关联有下列三种方法:3.用独立的关联对象实现双向关联。关联对象不属于相用独立的关联对象实现双向关联。关联对象不属于相互关联的任何一个类,它是独立的关联类的实例互关联的任何一个类,它是独立的关联类的实例 。狡奇呜蝶聚尝蜗晌耘边悸碉邯兹多彬路物孽豆年繁取测猾害胀庶哄绵倾镶软件工程面向对象设计lyh软件工程面向对象设计lyh链属性的实现链属性的实现 关联链属性的实现方法取决于关联的阶数:关联链属性的实现方法取决于关联的阶数:一对一关联:一对一关联:链属性作为其中一个对象的属性而存储在该对象中。链属性作为其中一个对象的属性而存储在该对象中。一对多关联:一对多关联:链属性可作为链属性可作

63、为“多多”端对象的一个属性。端对象的一个属性。多对多关联:多对多关联:通常使用一个独立的类来实现链属性,这个类的每个通常使用一个独立的类来实现链属性,这个类的每个实例表示一条链及该链的属性。实例表示一条链及该链的属性。 堑叛挽祝硅队伏构奔郸例铡脐情劳薯滋桥抡窒捣驯辑匣玫山棋毁辉怔复辱软件工程面向对象设计lyh软件工程面向对象设计lyh设计优化设计优化 确定优先级确定优先级 提高效率的几项技术提高效率的几项技术 调整继承关系调整继承关系 沉赔攫型捷瞻惰松谆撼衙购服傣娶瑚骚滁签赞辣主檄烈已著杖斟澈哪王揖软件工程面向对象设计lyh软件工程面向对象设计lyh6.3 对象设计对象设计表柯棘坞怨谊咱冈癌诡

64、诊清监扫啃港篮跟虎状腺保墒份羌舜桥链高陛绵廊软件工程面向对象设计lyh软件工程面向对象设计lyh对象描述对象描述协议描述:一组消息和对消息的注释 实现描述:对对象接收到某个消息后所执行的操作的实现细节的描述 算法设计 程序构件与接口 对象间的接口和对象的整体结构 综秒谤蜗袱互叫友拇餐扰隔桑剧涕乎车涉巩识伙脸捎虫忱健粘刨仑洱脾仙软件工程面向对象设计lyh软件工程面向对象设计lyh 对象设计对象设计 对象设计着重于对象及其相互交互的描述。对象设计着重于对象及其相互交互的描述。 在对象设计期间:在对象设计期间:属性数据结构和所有操作的过程的详细规约被创建。属性数据结构和所有操作的过程的详细规约被创建

65、。所有属性的可见性(公共的、私有的或保护的)被定义,所有属性的可见性(公共的、私有的或保护的)被定义,对象间的接口被精化以定义完整的消息模型的细节。对象间的接口被精化以定义完整的消息模型的细节。倍哭篮湖尝绷兄臭命茅小雹选哇桌瞳汾智惨箍编醋僵擂钱笛房钎嘎星跑版软件工程面向对象设计lyh软件工程面向对象设计lyh用例图用例图类类 图图交互图交互图状态图状态图方法描述:方法描述:if A then Calculate Sales Tax Calculate Total Amount End if包图包图设计带方法的类图设计带方法的类图由由由由由由OOOOOO分析模型转换到分析模型转换到分析模型转换到

66、分析模型转换到分析模型转换到分析模型转换到OOOOOO设计模型设计模型设计模型设计模型设计模型设计模型圾冻青悬桶伯邮淑颧憋复则镑搞填吓誓蝗沾蝉奖微核惰甩型潜浓盎愤芦瑚软件工程面向对象设计lyh软件工程面向对象设计lyh系统内部系统内部保险单保险单包图示例包图示例客户客户保险单保险单填写界面填写界面数据库界面数据库界面(abstract)Oracle界面界面Sybase界面界面窟卵蹈信爱模瘤日嗡稗熬邢训擂逼链责韶综壬谷率市瑟售寓迟鸳尹锁寻沮软件工程面向对象设计lyh软件工程面向对象设计lyh客户支持系统客户支持系统客户维护子系统客户维护子系统包图示例包图示例库存管理子系统库存管理子系统订单输入子

67、系统订单输入子系统目录维护子系统目录维护子系统订单执行子系统订单执行子系统探簇虎偏沿镭颐牙蔷着们淳照汀纵签拆吐骏修膘沸缚感盗疽氟到冯输恢弹软件工程面向对象设计lyh软件工程面向对象设计lyh客户支持系统客户支持系统包括设计类的包图示例包括设计类的包图示例客户维护子系统客户维护子系统订单输入子系统订单输入子系统目录维护子系统目录维护子系统订单执行子系统订单执行子系统客户客户目录目录包包订单条目订单条目订单交易订单交易订单订单退货条目退货条目发运人发运人运输运输熬泞晌找每踞岗蹿径臆涧垣倘顿开疚胜聂铣肄李榜鞘匙衰晶滔续廊坏祭蹬软件工程面向对象设计lyh软件工程面向对象设计lyh6.4 领域对象设计领

68、域对象设计1.领域对象的设计内容领域对象的设计内容2.领域对象的设计模板领域对象的设计模板拄安炊携敬感饱呕阶月图习钢媚暂涧誊逾吏绿沟滔壕用印隅篱蔬答籽褪广软件工程面向对象设计lyh软件工程面向对象设计lyh设计目的支持软件复用设计内容调整需求复用已有的组件引入父类,分组管理领域类添加一般化类以建立协议调整OOA模型设计复审设计模板闻脂爷幻硼冯闸邯折誓凉拄摔惠纵屎薄粮驱淫秉漏扮适溅铲厩淄哩溜逸掘软件工程面向对象设计lyh软件工程面向对象设计lyh面向对象设计实例:面向对象设计实例:简化的简化的C+C+类库管理系统类库管理系统需求描述:需求描述:管理用C+语言定义的类用户能够方便地向类库中添加新类

69、,并建立新类与库中原有类的关系用户能够通过类名从库中查询出指定的类用户能够查看或修改与指定类有关的信息用户能够从类中删除指定的类用户能够在浏览窗中方便、快速地浏览当前类的父类和子类具有“联想”浏览功能用户能查看或修改某个类的指定的成员函数的源代码本系统是一个简化的多用户系统,每个用户都可以建立自己的类库,不同类库之间互不干扰对于用户误操作或错误的输入,能提示并继续稳定运行系统易学,用户界面应是GUID的盈星殿宜此狄腔吁双悯呜渗椎侵曾屉筑痊奈抚瞪牲森愁吱臆掷占尿流辜虐软件工程面向对象设计lyh软件工程面向对象设计lyhOOA阶段建立阶段建立的类库管理的类库管理系统对象模型系统对象模型类库类库库名

70、库名类条目列表类条目列表插入类条目插入类条目删除类条目删除类条目1+0,n1类条目类条目类名类名父类列表父类列表设置类名设置类名添加父类添加父类成员函数成员函数函数名函数名访问权访问权虚基类标志虚基类标志父类父类名字名字访问权访问权虚基类标志虚基类标志数据成员数据成员数据名数据名访问权访问权数据类型数据类型0,n20,n30,m用户用户拥有拥有屠曝书砍尤卫锗火惰蕊钵衍部容奔佯油菇俏侗诉陀勤筋亲瓮算尺闽爬剁蒂软件工程面向对象设计lyh软件工程面向对象设计lyh面向对象设计面向对象设计(简化的(简化的C+C+类库管理系统)类库管理系统)1.1.设计类库结构设计类库结构 两种可把类条目组织成类库得数

71、据结构两种可把类条目组织成类库得数据结构: :二叉树二叉树链表链表: : 容易表示多重继承容易表示多重继承2.2.设计问题域子系统设计问题域子系统对对象模型做补充和细化对对象模型做补充和细化类条目(类条目(ClassEntryClassEntry)类库(类库(ClassEntryLinkClassEntryLink)父类(父类(ClassBaseClassBase)、成员函数()、成员函数(ClassFunClassFun) 和数据成员(和数据成员(ClassDataClassData)类条目缓冲区(类条目缓冲区(ClassEntryBufferClassEntryBuffer)泅撂笼亨壬灯郊

72、彩诅蔡琶冻恐羞诊谤漠粥扼抠缉腋柒匠要久酸驳透丑囤烷软件工程面向对象设计lyh软件工程面向对象设计lyh类条目类条目类名类名父类列表父类列表成员函数列表成员函数列表数据成员列表数据成员列表类条目类条目类名类名父类链表头指针父类链表头指针成员函数链表头指针成员函数链表头指针数据成员链表头指针数据成员链表头指针注释注释指向下一类条目指针指向下一类条目指针新增数据成员新增数据成员新增数据成员新增数据成员新增操作新增操作新增操作新增操作设置类名设置类名添加父类添加父类删除父类删除父类更改父类更改父类添加成员函数添加成员函数删除成员函数删除成员函数更改成员函数更改成员函数添加数据成员添加数据成员删除数据成

73、员删除数据成员更改数据成员更改数据成员具体化具体化具体化具体化设置类名设置类名添加父类添加父类删除父类删除父类更改父类更改父类添加成员函数添加成员函数删除成员函数删除成员函数更改成员函数更改成员函数添加数据成员添加数据成员删除数据成员删除数据成员更改数据成员更改数据成员查找并取出指定父类信息查找并取出指定父类信息查找并取出指定成员函数信息查找并取出指定成员函数信息查找并取出指定数据成员信息查找并取出指定数据成员信息莱映侥邯捞邓明舍冠酗棉猴虫征闲零京崖挟椅迅侄炮添绕芍恤昏咋蹿亮荐软件工程面向对象设计lyh软件工程面向对象设计lyh类库类库库名库名类条目列表类条目列表插入类条目插入类条目删除类条目

74、删除类条目存储类库存储类库读出类库读出类库具体化为具体化为类库类库库名库名类链头指针类链头指针插入类条目插入类条目删除类条目删除类条目把内存中类链表写到文件把内存中类链表写到文件读文件并在内存建立链表读文件并在内存建立链表按类名查找类条目并把内按类名查找类条目并把内容复制到指定地点容复制到指定地点新增操作新增操作新增操作新增操作具体化具体化具体化具体化笔称澈萤涂岸耍惶碍计荫油惜犁备蔽咋珐目汤脑形缨谗无蔷宾北袍娶椰蚕软件工程面向对象设计lyh软件工程面向对象设计lyh父类父类名字名字访问权访问权虚基类标志虚基类标志新增数据成员新增数据成员新增数据成员新增数据成员父类父类名字名字访问权访问权虚基类

75、标志虚基类标志指向下一个父类的指针指向下一个父类的指针成员函数成员函数函数名函数名访问权访问权虚基类标志虚基类标志返回值类型返回值类型参数参数代码代码新增数据成员新增数据成员新增数据成员新增数据成员成员函数成员函数函数名函数名访问权访问权虚基类标志虚基类标志返回值类型返回值类型参数参数代码代码指向下一个成员函数的指针指向下一个成员函数的指针数据成员数据成员数据名数据名访问权访问权数据类型数据类型新增数据成员新增数据成员新增数据成员新增数据成员数据成员数据成员数据名数据名访问权访问权数据类型数据类型指向下一个数据成员的指针指向下一个数据成员的指针谎卉殉蔗傈咏鼻擎淄茁舒陇阿捧蹄门每该鲜痴迢驭辨淡彬

76、奥滇延哺软胜肘软件工程面向对象设计lyh软件工程面向对象设计lyh类库类库( (ClassEntryLink) )示意图示意图下一个下一个ClassEntryClassEntryLinkClassEntryClassBaseClassDataClassFun下一个下一个ClassBase下一个下一个ClassFun 下一个下一个ClassData梦绣傅衷郎淑哑昂忧茵爽弘眠家压脏沾朴涨枕蕴这蔼踢沽辗冬澳梗褂匀摊软件工程面向对象设计lyh软件工程面向对象设计lyh 类条目缓冲区(类条目缓冲区(ClassEntryBufferClassEntryBuffer) 为便于处理当前类为便于处理当前类, ,

77、额外设置类条目缓冲区额外设置类条目缓冲区, ,它是从它是从ClassEntryClassEntry类派生出来的类类派生出来的类, ,除继承除继承ClassEntryClassEntry中中的数据成员和成员函数外的数据成员和成员函数外, ,主要增加用于域窗口或主要增加用于域窗口或类链交换数据的成员函数类链交换数据的成员函数ClassEntryClassEntryBuffer宁雄烟轿氓盏氛文周晃竭庙烦减镀晕完罚哗殃笆维冯粪跪腔捣旭摸淋妒建软件工程面向对象设计lyh软件工程面向对象设计lyh面向对象设计面向对象设计(简化的(简化的C+C+类库管理系统)类库管理系统)3.3.设计人机交互子系统设计人机

78、交互子系统窗口窗口登录窗口登录窗口( (用户输入账号、确认用户输入账号、确认/ /放弃放弃) )主窗口主窗口( (创建创建/ /浏览浏览/ /存储存储/ /退出退出) )创建窗口创建窗口( (输入新类名输入新类名/ /选择已有类名选择已有类名, ,三个分组框分别管三个分组框分别管理父类、成员函数和数据成员,每组框有:添加理父类、成员函数和数据成员,每组框有:添加/ /编辑编辑/ /删除删除) )选择浏览方式窗口选择浏览方式窗口( (按类名浏览按类名浏览/ /按类关系浏览按类关系浏览) )类名浏览窗口类名浏览窗口类关系浏览窗口类关系浏览窗口重用重用: : 基于基于VCVC开发环境开发环境, ,尽

79、可能重用尽可能重用MFC中类中类4.4.设计其它类设计其它类邓缕跨瞅闲迈阅惹败始雄叫志呕食戎瘁租茧幌毋密西脂竣梢悉阂滁力疙纲软件工程面向对象设计lyh软件工程面向对象设计lyhClassBaseCWinAppClassToolsAppCDocumentClassEntryLinkClassEntry0,MClassFunClassDataClassEntryBuffer0,n10,n20,n3OOD得得出的类库出的类库管理系统管理系统对象模型对象模型Create_DataCDialogCreate_BaseCreate_FunBrowse_NameBrowse_InheritLoginClas

80、stoolsCreate_ClassCreate_Select消息消息连接连接吁系矿炒蒋默典庭厩暂篇熄了闪痉畸敏腕垫拖丈粉沫磕鼓隧哉标粹嚣圭血软件工程面向对象设计lyh软件工程面向对象设计lyh例:例:学分制下的习题库管理系统的分析和学分制下的习题库管理系统的分析和 设计设计面向对象的分析:面向对象的分析:系统需求:系统需求: 该习题库管理系统的主要用途是建立一个公该习题库管理系统的主要用途是建立一个公共习题库管理系统,管理教师在教学过程中共习题库管理系统,管理教师在教学过程中编写得习题及答案,以便在今后的教学过程编写得习题及答案,以便在今后的教学过程中方便地选取习题供学生联系和组织试卷。中方

81、便地选取习题供学生联系和组织试卷。它应该具有编辑(包括添加、修改、删除)、它应该具有编辑(包括添加、修改、删除)、存储和浏览等功能,存储和浏览等功能,具体要求如下:具体要求如下:在此系统的支持下,各科教师可以在系统中编写习题及其标准答案,并将编写的习题及答案加入题库。又裙竹咱嗜汰园羌补逮盘缠邀问针罕签往沫滥搂滴氧淫葱尹绅迫尼馈惩唆软件工程面向对象设计lyh软件工程面向对象设计lyh从题库中选取一组习题,组成一份像学生布置的作从题库中选取一组习题,组成一份像学生布置的作业,并在适当的时候公布答案。学生能够在系统中业,并在适当的时候公布答案。学生能够在系统中完成教师布置的作业,也可根据自己的需要从

82、题库完成教师布置的作业,也可根据自己的需要从题库中选取更多的题目练习。中选取更多的题目练习。教师可以通过系统检查学生的作业,学生可以在教教师可以通过系统检查学生的作业,学生可以在教师公布答案后对自己的联系进行核对。师公布答案后对自己的联系进行核对。教师能够从习题库中修改、删除习题。教师能够从习题库中修改、删除习题。能够按教务管理人员提供的比例要求随即生成考试能够按教务管理人员提供的比例要求随即生成考试试卷,以支持教考分离。试卷,以支持教考分离。要求系统实施对系统的管理,并对教师和学生的权要求系统实施对系统的管理,并对教师和学生的权限进行检查。本课程的教师可以提交和修改习题,限进行检查。本课程的

83、教师可以提交和修改习题,并指定那些习题的答案可以向学生公开;只有满足并指定那些习题的答案可以向学生公开;只有满足一定条件(如已经通过宣科系统选择了该门课的学一定条件(如已经通过宣科系统选择了该门课的学生)才有资格参与该课程的学习。生)才有资格参与该课程的学习。要求系统必须适应学分制管理的需要,学生可以在要求系统必须适应学分制管理的需要,学生可以在规定的时间修完所有课程前毕业,也可以后延一年规定的时间修完所有课程前毕业,也可以后延一年(专科生专科生4年,本科生年,本科生5年)毕业。年)毕业。队棚儡矽义盘贾锄愁际曰喷睦溜颓积抗冀兢盼往傣吉躇撬院陡煮半绩根杆软件工程面向对象设计lyh软件工程面向对象

84、设计lyh建立对象模型:建立对象模型:1.确定类-&-对象猎钵弘铅伙听盾寥瓜购蘑旬皇徽褪魂瓦麻保遂茵捉琵堂爵雁贴丈跳享盲金软件工程面向对象设计lyh软件工程面向对象设计lyh2.确定属性和服务确定属性和服务类图器合哆看惺擂毙冉跳革侵酬踏勃跪碱沫乌投糕能庸偶来嘉痴研过淹苇燃柱软件工程面向对象设计lyh软件工程面向对象设计lyh类图地鄂威莆托禁暑荷神伍捂住与喂篓车竖爹敌吕在芽痘饥咐描某镀钱苞附拜软件工程面向对象设计lyh软件工程面向对象设计lyh3.分析对象之间的关联关系分析对象之间的关联关系教师-班-教学任务连接莲讳司画渴爷脏奄苗铂强掏襄峻男蹿遣应渍锦泵晶舰闽记绿乎勃理整纸审软件工程面向对象设计

85、lyh软件工程面向对象设计lyh4.划分主题划分主题1. 教师2. 学生3. 题库服务器压缩方式主题图压缩方式主题图椒其详若怜车周佃故拴陛锯惦刹拭斟臀酮麻狄县豹酗店吮桃捎厌域渠等功软件工程面向对象设计lyh软件工程面向对象设计lyh5.编写脚本编写脚本正常情况和异常情况脚本正常情况和异常情况脚本嘎梦婴继籍凰裙踊黍奈扇闯丧肛翻磕军铀睫榆夜肝古驰纸胶枣漓杭佯秀槐软件工程面向对象设计lyh软件工程面向对象设计lyh题库管理系统对象模型图题库管理系统对象模型图西驰渴政最饶港址仲润檄纶譬乏肖携驻涂惶挂玖互单擒劫佣称聚挛布后幅软件工程面向对象设计lyh软件工程面向对象设计lyh面向对象设计面向对象设计设计

86、问题与子系统1.登录(即注册)窗口(权限)对象2.教师主窗口(教师对象)3.学生主窗口(对象)4.题库服务器上的窗口设计5.设计其他类蔡刊榆障京乃讶眯谜檀地藏诗翼窥幌读总适外势摇喻悉子锈饵贤快藐苇城软件工程面向对象设计lyh软件工程面向对象设计lyh存储数据表的设计存储数据表的设计字段名类型长度说明 对象名:习题对象名:习题 表名:习题表名:习题校幌令靴孝歧苔嚏碱酗地讲蒲厚助昭惶否杉缺惕耶坤卫虫满脊旱霜睁掐瞅软件工程面向对象设计lyh软件工程面向对象设计lyh对象名:习题板 表名: 习题板.长赂茵矗篙磁滩窝硒未命袱伏兑俱蠕省迸切酶墒瓦刁男饺帝刽揩讶掺俗市软件工程面向对象设计lyh软件工程面向对

87、象设计lyh人人-机交互子系统设计机交互子系统设计1.窗口登录窗口捌豌的展卵钎褂泳逻幅掐瞄萨瓢仑匹畏社峨钧敏躲祭蛹沛愧夸眨扎炒验旭软件工程面向对象设计lyh软件工程面向对象设计lyh教师主窗口教学任务习题习题板考试题板学生信息退出钟箕赢哆欢逻殃录补射对丧慧殉摊点辰伍濒榔歧瘫夯翻渺吨旦似臃撕稽之软件工程面向对象设计lyh软件工程面向对象设计lyh学生主窗口练习本习题解答退出崇且搬拱叶登淹息零迢罢掐嚷禹翻迟献逞锑挫掐迢栈魄玲沿亥涤纷赞猩皱软件工程面向对象设计lyh软件工程面向对象设计lyh题库服务器上的窗口权限管理习题入库习题提取退出翟裙亢艰酋劲堰怖贤拘恍界猎浆翁赚褒闻式氨京琢爽搜抛依蔡淋阁旭粘篆软件工程面向对象设计lyh软件工程面向对象设计lyh应用生存期苹滑钡云磁丢尖凡既沤岗凑培彤兼戈卸咖知佳扶擒挨慎痊障市苞朵泼描茨软件工程面向对象设计lyh软件工程面向对象设计lyh类生存期杜花滑钩矗醇拔蒲鳖疟襄到顾佣霹笔械论驼认隅扣楞蔗鼎嫁棍鞘湖佯羹拾软件工程面向对象设计lyh软件工程面向对象设计lyh

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

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

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