欢迎来到天天文库
浏览记录
ID:38470048
大小:991.05 KB
页数:45页
时间:2019-06-13
《软件工程导论第11章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第11章面向对象设计11.1面向对象设计的准则1.模块化面向对象的软件开发模式,支持了系统模块化的原则:对象就是模块。它把数据结构和操作(方法)紧密地结合在一起构成模块。2.抽象类实际上是一种抽象数据类型,它对外开放的公共接口构成了类的规格说明(协议),这种接口规定了外界可以使用的合法操作符,利用这些操作符可以对类的实例中包含的数据进行操作。3.信息隐蔽在面向对象方法中,信息隐蔽通过对象的封装性实现:类结构分离了类的接口与类的实现,从而支持了信息隐蔽。4.弱耦合弱的耦合可以提高软件模块的独立性,避免某一部分模块发生变化对其它模块有较大的影响。一般来说,对象间的耦合有两
2、大类:A.交互耦合:对象间的耦合通过信息连接来实现。应使交互耦合尽量松散。B.继承偶合:与交互耦合相反,应该提高继承耦合的程度。因为通过继承关系结合起来的基类和派生类,结合得越紧密越好。5.强内聚面向对象设计中存在三种内聚:A.服务内聚:一个服务应该完成一个且完成一个功能。B.类内聚:一个类应该只有一个用途,它的属性和服务应该是高内聚的。C.一般—特殊内聚:即基类—派生类的内聚。6.可重用使用已经存在的类(包括开发环境提供的类库,及以往开发相似系统时创建的类),可以提高软件重用性,提高软件生产率。人们在面向对象方法中也积累了一些经验,总结出几条启发规则:1.设计结果应
3、该清晰易懂;1)用词一致;2)使用已有的协议;3)减少消息模式的数目;4)避免模糊的定义。11.2启发规则2.一般—特殊结构的深度应适当中等规模的系统中,类等级层次数应保持为7±2。不是必要情况,不应该随意创建派生类;3.设计简单的类:设计小而简单的类,便于开发和管理;1)避免包含过多的属性;2)有明确的定义;3)尽量简化对象之间的合作关系;4)不要提供太多服务。4.使用简单的协议:设计简单的类接口,发送的消息中参数要少。5.使用简单的服务:编写实现每一个服务时,避免复杂的语句和结构;6.把设计变动减至最小。11.3软件重用11.3.1概述1.重用重用的三个层次:1)
4、知识重用;2)方法和标准的重用;3)软件成分的重用。2.软件成分的重用级别:1)代码重用a.源代码剪贴;b.源代码包含;c.继承;2)设计结果重用3)分析结果重用3.典型的可重用软件成分1)项目计划;2)成本计划;3)体系结构;4)需求模型和规格说明;5)设计;6)源代码;7)用户文档和技术文档;8)用户界面;9)数据;10)测试用例。11.3.2类构件1.可重用软构件应具备的特点1)模块独立性强2)具有高度可塑性3)接口清晰、简明、可靠2.类构件的重用方式1)实例重用2)继承重用3)多态重用1、可以使用适当的构造函数,按照需要创建类的实例。然后向所创建的实例发送适当
5、的消息,启动相应的服务,完成需要完成的工作。2、可以用几个简单的对象作为类的成员,创建出一个更复杂的类。实例重用18继承重用1、为提高继承重用的效果,关键是设计一个合理的、具有一定深度的类构件继承层次结构。2、这样做有下述两个好处:每个子类在继承父类的属性和服务的基础上,只加入少量新属性和新服务。降低了每个类构件的接口复杂度表现出一个清晰的进化过程,提高了每个子类的可理解性为软件开发人员提供了更多可重用的类构件为多态重用奠定了良好基础。19多态重用1、使对象的对外接口更加一般化,从而降低了消息连接的复杂程度。2、提供一种简便可靠的软构件组合机制。3、设计类时,应注意以
6、下可能影响重用性的操作:与表示方法有关的操作。例如,不同实例的比较、显示、擦除等等。与数据结构、数据大小等有关的操作。与外部设备有关的操作。例如,设备控制。实现算法在将来可能会改进(或改变)的核心操作11.3.3软件重用的效益质量:每一次重用,都会发现错误并清除,构件质量也随之改善。生产率:每一次重用,都会减少重用部分的工作,软件生产率也随之提高。成本:重用所带来的净成本C=Cs-Cr-Cd(Cs是项目从头开发时所需要的成本;Cr是与重用相关联的成本;Cd是交付给客户的软件的实际成本。11.4系统分解类与对象层人机交互部分问题域部分任务管理部分数据管理部分主题层结构层
7、属性层服务层图11.2典型的面向对象设计模型1、子系统之间的两种交互方式客户—供应商关系平等伙伴关系2、组织系统的两种方案层次组织:下层为上层提供服务封闭式:每层子系统仅仅使用其直接下层提供服务开放式:可以调用下层任何子系统块状组织:子系统相互独立,弱耦合11.5设计问题域子系统在设计问题域部分时,仅需要从实现的角度对问题域模型(对象模型、动态模型、功能模型)作一些补充、修改,主要是增添、合并或分解类与对象、属性和服务,调整继承关系等。1.调整需求2.重用已有的类3.组合问题域的类4.增添基类以定义公共函数集合5.调整继承层次1)使用多重继承机制2)
此文档下载收益归作者所有