《软件工程导论第11章.ppt》由会员分享,可在线阅读,更多相关《软件工程导论第11章.ppt(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第11章章 面向对象设计面向对象设计11.1 面向面向对象象设计的准的准则 1.模模块化化 面面向向对象象的的软件件开开发模模式式,支支持持了了系系统模模块化化的的原原则:对象象就就是是模模块。它它把把数数据据结构构和和操操作作(方法)(方法)紧密地密地结合在一起构成模合在一起构成模块。2.抽象抽象 类实际上是一种抽象数据上是一种抽象数据类型,它型,它对外开放外开放的公共接口构成了的公共接口构成了类的的规格格说明(明(协议),),这种接口种接口规定了外界可以使用的合法操作符,利定了外界可以使用的合法操作符,利用用这些操作符可以些操作符可以对类的的实例中包含的数据例中包含的数据进行操作。行操作
2、。3.信息隐蔽信息隐蔽 在面向对象方法中,信息隐蔽通过对象的封在面向对象方法中,信息隐蔽通过对象的封装性实现:类结构分离了类的接口与类的实现,装性实现:类结构分离了类的接口与类的实现,从而支持了信息隐蔽。从而支持了信息隐蔽。4.弱耦合弱耦合 弱弱的的耦耦合合可可以以提提高高软件件模模块的的独独立立性性,避避免免某某一一部部分分模模块发生生变化化对其其它它模模块有有较大大的的影影响。响。一般来一般来说,对象象间的耦合有两大的耦合有两大类:A交交互互耦耦合合:对象象间的的耦耦合合通通过信信息息连接接来来实现。应使交互耦合尽量松散。使交互耦合尽量松散。B继承偶合承偶合:与交互耦合相反,:与交互耦合相
3、反,应该提高提高继承耦合的程度。因承耦合的程度。因为通通过继承关系承关系结合起合起来的基来的基类和派生和派生类,结合得越合得越紧密越好。密越好。5.强内聚内聚面向面向对象象设计中存在三种内聚:中存在三种内聚:A服服务内内聚聚:一一个个服服务应该完完成成一一个个且且完完成成一一个功能。个功能。B类内内聚聚:一一个个类应该只只有有一一个个用用途途,它它的的属属性和服性和服务应该是高内聚的。是高内聚的。C一般一般特殊内聚:即基特殊内聚:即基类派生派生类的内聚。的内聚。6.可重用可重用 使使用用已已经经存存在在的的类类(包包括括开开发发环环境境提提供供的的类类库库,及及以以往往开开发发相相似似系系统统
4、时时创创建建的的类类),可以提高软件重用性,提高软件生产率。可以提高软件重用性,提高软件生产率。人人们在在面面向向对象象方方法法中中也也积累累了了一一些些经验,总结出几条启出几条启发规则:1.设计结果果应该清晰易懂;清晰易懂;1)用)用词一致;一致;2)使用已有的)使用已有的协议;3)减少消息模式的数目;)减少消息模式的数目;4)避免模糊的定)避免模糊的定义。11.2 启发规则启发规则 2.一般一般特殊特殊结构的深度构的深度应适当适当中中等等规模模的的系系统中中,类等等级层次次数数应保保持持为72。不是必要情况,不。不是必要情况,不应该随意随意创建派生建派生类;3.设计简单的的类:设计小小而而
5、简单的的类,便便于于开开发和管理;和管理;1)避免包含)避免包含过多的属性;多的属性;2)有明确的定)有明确的定义;3)尽量)尽量简化化对象之象之间的合作关系;的合作关系;4)不要提供太多服)不要提供太多服务。4.使使用用简单的的协议:设计简单的的类接接口口,发送送的消息中参数要少。的消息中参数要少。5.使使用用简单的的服服务:编写写实现每每一一个个服服务时,避免复避免复杂的的语句和句和结构;构;6.把把设计变动减至最小。减至最小。11.3 软件重用软件重用11.3.1 概述概述 1.重用重用 重用的三个重用的三个层次:次:1)知)知识重用;重用;2)方法和)方法和标准的重用;准的重用;3)软
6、件成分的重用。件成分的重用。2.软件成分的重用件成分的重用级别:1)代)代码重用重用 a.源代源代码剪剪贴;b.源代源代码包含;包含;c.继承;承;2)设计结果重用果重用 3)分析)分析结果重用果重用 3.典型的可重用典型的可重用软件成分件成分 1)项目目计划;划;2)成本)成本计划;划;3)体系)体系结构;构;4)需求模型和)需求模型和规格格说明;明;5)设计;6)源代)源代码;7)用)用户文档和技文档和技术文档;文档;8)用)用户界面;界面;9)数据;)数据;10)测试用例。用例。11.3.2 类构件类构件1.可重用可重用软构件构件应具具备的特点的特点 1)模)模块独立性独立性强 2)具有
7、高度可塑性)具有高度可塑性 3)接口清晰、)接口清晰、简明、可靠明、可靠2.类构件的重用方式构件的重用方式 1)实例重用例重用 2)继承重用承重用 3)多)多态重用重用1、可以使用适当的构造函数,按照需要创建、可以使用适当的构造函数,按照需要创建类的实例。然后向所创建的实例发送适当类的实例。然后向所创建的实例发送适当的消息,启动相应的服务,完成需要完成的消息,启动相应的服务,完成需要完成的工作。的工作。2、可以用几个简单的对象作为类的成员,创、可以用几个简单的对象作为类的成员,创建出一个更复杂的类。建出一个更复杂的类。实例重用实例重用1818继承重用继承重用1 1、为提高提高继承重用的效果,关
8、承重用的效果,关键是是设计一个合理的、一个合理的、具有一定深度的具有一定深度的类构件构件继承承层次次结构。构。2 2、这样做有下述两个好做有下述两个好处:每个子每个子类在在继承父承父类的属性和服的属性和服务的基的基础上,只加入上,只加入少量新属性和新服少量新属性和新服务。降低了每个降低了每个类构件的接口复构件的接口复杂度度表表现出一个清晰的出一个清晰的进化化过程,提高了每个子程,提高了每个子类的可理解性的可理解性为软件开件开发人人员提供了更多可重用的提供了更多可重用的类构件构件为多多态重用奠定了良好基重用奠定了良好基础。1919多态重用多态重用1 1、使、使对象的象的对外接口更加一般化,从而降
9、低了消息外接口更加一般化,从而降低了消息连接的复接的复杂程度。程度。2 2、提供、提供一种一种简便可靠的便可靠的软构件构件组合机制。合机制。3 3、设计类时,应注意以下可能影响重用性的操作:注意以下可能影响重用性的操作:与表示方法有关的操作。例如,不同与表示方法有关的操作。例如,不同实例的比例的比较、显示、擦除等等。示、擦除等等。与数据与数据结构、数据大小等有关的操作。构、数据大小等有关的操作。与外部与外部设备有关的操作。例如,有关的操作。例如,设备控制。控制。实现算法在将来可能会改算法在将来可能会改进(或改(或改变)的核心操作)的核心操作11.3.3 软件重用的效益软件重用的效益1.质量:每
10、一次重用,都会量:每一次重用,都会发现错误并清除,并清除,构件构件质量也随之改善。量也随之改善。2.生生产率:每一次重用,都会减少重用部分率:每一次重用,都会减少重用部分的工作,的工作,软件生件生产率也随之提高。率也随之提高。3.成本:成本:重用所重用所带来的来的净成本成本C=Cs-Cr-Cd(Cs是是项目从目从头开开发时所需要的成本;所需要的成本;Cr是与重用相是与重用相关关联的成本;的成本;Cd是交付是交付给客客户的的软件的件的实际成成本。本。11.4 系统分解系统分解类与对象层类与对象层人机交人机交互部分互部分问题域问题域部分部分任务管任务管理部分理部分数据管数据管理部分理部分主题层主题
11、层结构层结构层属性层属性层服务层服务层图图11.2 典型的面向对象设计模型典型的面向对象设计模型1、子系统之间的两种交互方式、子系统之间的两种交互方式A.客户客户供应商关系供应商关系B.平等伙伴关系平等伙伴关系2、组织系统的两种方案、组织系统的两种方案A.层次组织:下层为上层提供服务层次组织:下层为上层提供服务封闭式:每层子系统仅仅使用其直接下层提供服务封闭式:每层子系统仅仅使用其直接下层提供服务开放式:可以调用下层任何子系统开放式:可以调用下层任何子系统B.块状组织:子系统相互独立,弱耦合块状组织:子系统相互独立,弱耦合11.5 设计问题域子系统设计问题域子系统 在在设计问题域部分域部分时,
12、仅需要从需要从实现的角度的角度对问题域模型(域模型(对象模型、象模型、动态模型、功能模型)模型、功能模型)作一些作一些补充、修改,主要是增添、合并或分解充、修改,主要是增添、合并或分解类与与对象、属性和服象、属性和服务,调整整继承关系等。承关系等。1.调整需求整需求2.重用已有的重用已有的类3.组合合问题域的域的类4.增添基增添基类以定以定义公共函数集合公共函数集合5.调整整继承承层次次 1)使用多重)使用多重继承机制承机制 2)使用)使用单继承机制承机制252526266.ATM系系统实例例11.6 设计人机交互子系统设计人机交互子系统 在在面面向向对象象分分析析中中,已已经对用用户界界面面
13、需需求求作作了了初初步步分分析析,在在面面向向对象象设计过程程中中,要要对系系统人人机机交交互互部部分分进行行详细设计,其其中中包包括括指指定定窗窗口口和和报表的形式、表的形式、设计命令命令层次等等。次等等。设计人机交互子系人机交互子系统的策略:的策略:1)分)分类用用户;2)描述用)描述用户;3)设计命令命令层次;次;4)设计人机交互人机交互类。11.7 设计任务管理子系统设计任务管理子系统 任任务可可视作作进程(程(Process)1.分析并分析并发性性 基于基于动态模型分析并模型分析并发性,如果性,如果对象象间不存在交互,不存在交互,或不同或不同时接受事件,接受事件,则是并是并发的。的。
14、并并发任任务可以在不同的可以在不同的处理器上理器上实现,也可以在,也可以在单个个处理器上利用多任理器上利用多任务操作系操作系统实现。2.设计任任务管理子系管理子系统 1)确定事件)确定事件驱动型任型任务:主要完成通信工作:主要完成通信工作 工作工作过程:睡眠程:睡眠等待来自数据等待来自数据线的中断的中断任任务唤醒、接收数据醒、接收数据通知相通知相应对象象继续睡眠睡眠 2)确定)确定时钟驱动型任型任务 每隔一定每隔一定时间触触发执行某些任行某些任务。3)确定)确定优先任先任务4)确定关)确定关键任任务5)确定)确定协调任任务 当同当同时运行的任运行的任务较多多时(3个以上),一般个以上),一般设
15、计协调任任务,会增加系,会增加系统开开销,但有利于封,但有利于封装不同任装不同任务间的的协调控制。控制。6)尽量减少任)尽量减少任务数数7)确定)确定资源需求源需求 计算系算系统载荷(荷(单位位时间处理理业务数),估数),估算所需算所需CPU性能。性能。11.8 设计数据管理子系统设计数据管理子系统11.8.1 选择数据存数据存储管理模式管理模式 1.文件管理系文件管理系统 2.关系数据关系数据库管理系管理系统 3.面向面向对象数据象数据库管理系管理系统11.8.2 设计数据管理子系数据管理子系统 1.设计数据格式数据格式 2.设计相相应的服的服务11.8.3 ATM系统实例系统实例 采用成熟
16、的商品化关系数据库。根据数据库范式设计,保持数据采用成熟的商品化关系数据库。根据数据库范式设计,保持数据一致性、完整性。一致性、完整性。处理并发事务时,每个事务作为一个不可分割的批操作来处理,处理并发事务时,每个事务作为一个不可分割的批操作来处理,由事务封锁帐户,直至事务结束。由事务封锁帐户,直至事务结束。11.9 设计类中的服务设计类中的服务11.9.1 确定确定类中中应有的服有的服务11.9.2 设计实现服服务的方法的方法 1.设计实现服服务的算法的算法 1)算法复)算法复杂度;度;2)容易理解、容易)容易理解、容易实现;3)容易修改;)容易修改;2.选择数据数据结构构 3.定定义内部内部
17、类和内部操作和内部操作373711.10 设计关联设计关联 1、关联关系反映对象之间相互依赖、相互作、关联关系反映对象之间相互依赖、相互作用的关系。用的关系。2、在面向对象设计过程中,设计人员必须确、在面向对象设计过程中,设计人员必须确定实现关联的具体策略。定实现关联的具体策略。关联的遍历关联的遍历实现单向关联实现单向关联实现双向关联实现双向关联关联对象的实现关联对象的实现38381、关联的遍历、关联的遍历 1)单向遍历:实现简单)单向遍历:实现简单2)双向遍历:实现麻烦)双向遍历:实现麻烦39392、实现单向关联、实现单向关联1)用指针可以方便地实现单向关联。)用指针可以方便地实现单向关联。
18、2)如果关联的阶是一元的,则实现关联的指)如果关联的阶是一元的,则实现关联的指针是一个简单指针;如果阶是多元的,则针是一个简单指针;如果阶是多元的,则需要用一个指针集合实现关联。需要用一个指针集合实现关联。40403、实现双向关联、实现双向关联 实现双向关联有下列三种方法:实现双向关联有下列三种方法:1.只用属性实现一个方向的关联,当需要反向遍只用属性实现一个方向的关联,当需要反向遍历时就执行一次正向查找。历时就执行一次正向查找。2.两个方向的关联都用属性实现,这种方法能实两个方向的关联都用属性实现,这种方法能实现快速访问。现快速访问。3.用独立的关联对象实现双向关联。关联对象不用独立的关联对
19、象实现双向关联。关联对象不属于相互关联的任何一个类,它是独立的关联属于相互关联的任何一个类,它是独立的关联类的实例类的实例。414142424、关联对象的实现、关联对象的实现 关关联对象的象的实现方法取决于关方法取决于关联的的阶数:数:一一对一关一关联:关关联对象可以与参与关象可以与参与关联的任一个的任一个对象合并。象合并。一一对多关多关联:关关联对象可以与象可以与“多多”端端对象合并。象合并。多多对多关多关联:通常使用一个独立的关通常使用一个独立的关联类来保存描述关来保存描述关联性性质的信的信息,息,这个个类的每个的每个实例例标示一条具体的关示一条具体的关联链及及该链的属性。的属性。4343
20、11.11设计优化设计优化 1、确定优先级、确定优先级 2、提高效率的几项技术、提高效率的几项技术1)增加冗余关联以提高访问效率)增加冗余关联以提高访问效率2)调整查询次序)调整查询次序3)保留派生属性)保留派生属性 3、调整继承关系、调整继承关系 1)抽象与具体)抽象与具体2)为提高继承程度而修改类定义)为提高继承程度而修改类定义3)利用委托实现行为共享)利用委托实现行为共享练习题练习题填空填空题:1、大型、复大型、复杂系系统的的对象通常由下述象通常由下述5个个层次次组成:(成:()、)、类与与对象象层、(、()、()、()和()和()。)。2、软件重用是提高件重用是提高软件(件()和目)和
21、目标系系统()的重要)的重要途径,它基本上始于途径,它基本上始于设计。其中。其中软件成分重用可划分成以下件成分重用可划分成以下3个个级别即代即代码重用、重用、设计成果重用和分析成果重用和分析结果重用。果重用。3、面向、面向对象象设计的的6个准个准则:(:()、()、()、()、()、弱)、弱耦合、(耦合、()和()和()。)。4、一般来、一般来说,对象之象之间的耦合分的耦合分为两大两大类:(:()和()和()。)。5、在面向、在面向对象象设计中存在三种内聚:(中存在三种内聚:()、()、()和()和()。)。6、通、通过积极的极的软件重用能件重用能够获得可得可观的商的商业效益,(效益,()、开
22、)、开发生生产率和(率和()都得到了改善。)都得到了改善。7、大多数系、大多数系统的面向的面向对象象设计模型,在模型,在逻辑上都由上都由4大部分大部分组成,成,它它们分分别是(是()、()、()、()、()和()和()。)。名名词解解释:1、软件重用件重用2、优秀秀设计简述述题:1、简述面向述面向对象方法学的象方法学的6条启条启发原原则。2、简述述软件重用的件重用的3个个层次。次。3、简述述软件成分重用的件成分重用的3个个级别。4、简述述类构建重用的构建重用的3种方式。种方式。5、简述述软件系件系统中子系中子系统之之间的两种交互方式。的两种交互方式。6、简述述组织软件系件系统的两种方案。的两种方案。7、P288.第第1、2、3题