软件工程第10章 面向对象设计导入分析是提取和整理用户需求,并建立问题域精确模型的过程。设计则是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。从面向对象分析(OOA)到面向对象设计(OOD),是一个逐渐扩充模型的过程。或者说,面向对象设计就是用面向对象观点建立求解域模型的过程。面向对象方法学在概念和表示方法上的一致性,保证了在各项开发活动之间的平滑(无缝)过渡。提纲设计类中的服务设计任务管理子系统设计数据管理子系统设计问题域子系统设计人机交互子系统系统分解设计优化启发规则软件重用设计的准则10.1 面向对象设计的准则权衡了各种因素,从而使得系统在其整个生命周期中的总开销最小的设计优秀设计抽象信息隐藏弱耦合强内聚模块化可重用123465(1)模块化模块化是把程序划分为独立命名且可以独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。对象就是模块。对象是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。(2)抽象类实际上是一种抽象数据类型。它对外开放的公共接口构成了类的规格说明(即协议),这种接口规定了外界可以使用的合法操作符,利用这些操作符可以对类实例中包含的数据进行操作。使用者无须知道这些操作符的实现算法和类中数据元素的具体表示方法,就可以通过这些操作符使用类中定义的数据。(3)信息隐藏信息隐藏通过对象的封装性实现。类结构分离了接口与实现,从而支持了信息隐藏。对于类的用户来说,属性的表示方法和操作的实现算法都应该是隐藏的。(4)弱耦合耦合主要指不同对象之间相互关联的紧密程度。弱耦合是优秀设计的一个重要标准,因为这有助于使得系统中某一部分的变化对其他部分的影响降到最低程度。在理想情况下,对某一部分的理解、测试或修改,无须涉及系统的其他部分。对象不可能是完全孤立的,当两个对象必须相互联系相互依赖时,应该通过类的协议(即公共接口)实现耦合,而不应该依赖于类的具体实现细节。(4)弱耦合对象之间的耦合通过消息连接来实现交互耦合尽可能松散:尽量降低消息连接的复杂程度。减少对象发送(或接收)的消息数。交互耦合继承耦合尽可能紧密:在设计时应该使特殊类尽量多继承并使用其一般化类的属性和服务。一般化类与特殊类之间耦合的一种形式继承耦合(5)强内聚内聚衡量一个模块内各个元素彼此结合的紧密程度:(1) 服务内聚:一个服务应该完成一个且仅完成一个功能。(2) 类内聚:类的属性和服务应该全都是完成该类对象的任务所必需的,其中不包含无用的属性或服务。如果某个类有多个用途,通常应该把它分解成多个专用的类。(3) 一般-特殊内聚:设计出的一般-特殊结构,应该符合多数人的概念,更准确地说,这种结构应该是对相应的领域知识的正确抽取。(6)可重用软件重用是提高软件开发生产率和目标系统质量的重要途径。重用基本上从设计阶段开始。重用有两方面的含义: 一是尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统时创建的类);二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。提纲设计类中的服务设计任务管理子系统设计数据管理子系统设计问题域子系统设计人机交互子系统系统分解设计优化启发规则软件重用设计的准则10.2 启发规则一般-特殊结构深度适当设计简单的类使用简单的协议使用简单的服务设计结果清晰易懂设计变动减至最少(1)设计结果应该清晰易懂人们不会重用那些他们不理解的设计:用词一致。应该使名字与它所代表的事物一致,不同类中相似服务的名字应该相同。使用已有的协议。如果开发同一软件的其他设计人员已经建立了类的协议,或者在所使用的类库中已有相应的协议,则应该使用这些已有的协议。减少消息模式的数目。如果已有标准的消息协议,设计人员应该遵守这些协议。如果确需自己建立消息协议,则应该尽量减少消息模式的数目。避免模糊的定义,应该从类名可以较容易地推想出它的用途。(2)一般-特殊结构的深度应适当应该使类等级中包含的层次数适当。一般说来,在一个中等规模(大约包含100个类)的系统中,类等级层次数应保持为7±2。不应该仅仅从方便编码的角度出发随意创建派生类,应该使一般-特殊结构与领域知识或常识保持一致。(3)设计简单的类如果一个类的定义不超过一页纸(或两屏),则使用这个类是比较容易的。避免包含过多的属性。有明确的定义。为了使类的定义明确,分配给每个类的任务应该简单,最好能用一两个简单语句描述它的任务。尽量简化对象之间的合作关系。不要提供太多服务。(4)使用简单的协议一般说来,消息中的参数不要超过3个。经验表明,通过复杂消息相互关联的对象是紧耦合的,对一个对象的修改往往导致其他对象的修改。(5)使用简单的服务面向对象设计出来的类中的服务通常都很小,一般只有3~5行源程序语句
您可能关注的文档
- (软件工程)第6章实现(第二堂课编码风格).ppt
- (软件工程)第6章实现(第三堂课不同集成测试策略的比较).ppt
- (软件工程)第6章实现(第四堂课路径覆盖).ppt
- (软件工程)第6章实现(第五堂课调试).ppt
- (软件工程)第7章维护(第一堂课软件维护的常识).ppt
- (软件工程)第8章面向对象方法学引论(第二堂课面向对象建模).ppt
- (软件工程)第8章面向对象方法学引论(第三堂课用例建模).ppt
- (软件工程)第8章面向对象方法学引论(第一堂课导入).ppt
- (软件工程)第9章面向对象方分析(第二堂课进一步完善).ppt
- (软件工程)第9章面向对象方分析(第三堂课建立功能模型).ppt
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 雷克萨斯-Lexus NX-产品使用说明书-NX200-ZGZ10L-AWXLPC2-NX200NX200t_OM78064C_01-1412-001.pdf VIP
- 小学语文五年级第二学期第二单元整体作业设计.docx
- 外研版小学英语(三年级起点)三年级上册Module2-Unit1同步检测.doc VIP
- 2025年河南省平顶山市中考生物试卷(含答案).pdf
- 【TD产业联盟】全球5G_6G产业发展报告(2024-2025).pdf VIP
- 乡镇卫生院年休假制度.docx VIP
- 职业技术教育教学管理新制度学分制.doc VIP
- 健康生活小常识100条.docx VIP
- 职业学校学分制实施细则.docx
- AP微观经济学 2010年真题 附答案和评分标准 AP Microeconomics 2010 Real Exam with Answers and Scoring Guidelines.pdf VIP
原创力文档

文档评论(0)