《第11章面向对象设计.ppt》由会员分享,可在线阅读,更多相关《第11章面向对象设计.ppt(32页珍藏版)》请在三一文库上搜索。
1、第11章 面向对象设计,主要内容(1/2),11.1 面向对象设计的准则 11.2 启发规则 11.3 软件重用 11.4 系统分解 11.5 设计问题域子系统 11.6 设计人机交互子系统 11.7 设计任务管理子系统 11.8 设计数据管理子系统,11.9 设计类中的服务 11.10 设计关联 11.11 设计优化,主要内容(2/2),目的与要求,一般了解:系统分解;设计类中的服务;设计关联和设计优化。 重点掌握:面向对象设计的概念和准则;软件重用的概念及提高重用性的方法;问题域子系统、人-机交互子系统、任务管理子系统和数据管理子系统的设计方法和步骤。,重点与难点,面向对象设计的概念和准则
2、 。,11.1 面向对象设计的准则 1. 模块化 面向对象的软件开发模式,支持了系统模块化的原则:对象就是模块。它把数据结构和操作(方法)紧密地结合在一起构成模块。,2. 抽象 类实际上是一种抽象数据类型,它对外开放的公共接口构成了类的规格说明(协议),这种接口规定了外界可以使用的合法操作符,利用这些操作符可以对类的实例中包含的数据进行操作。,3. 信息隐蔽 在面向对象方法中,信息隐蔽通过对象的封装性实现:类结构分离了类的接口与类的实现,从而支持了信息隐蔽。,4. 弱耦合 弱的耦合可以提高软件模块的独立性,避免某一部分模块发生变化对其它模块有较大的影响。,一般来说,对象间的耦合有两大类: A交
3、互耦合:对象间的耦合通过信息连接来实现。应使交互耦合尽量松散。 B继承偶合:与交互耦合相反,应该提高继承耦合的程度。因为通过继承关系结合起来的基类和派生类,结合得越紧密越好。,5. 强内聚 面向对象设计中存在三种内聚: A服务内聚:一个服务应该完成一个且完成一个功能。 B类内聚:一个类应该只有一个用途,它的属性和服务应该是高内聚的。 C一般特殊内聚:即基类派生类的内聚。,6. 可重用 使用已经存在的类(包括开发环境提供的类库,及以往开发相似系统时创建的类),可以提高软件重用性,提高软件生产率。,人们在面向对象方法中也积累了一些经验,总结出几条启发规则: 1. 设计结果应该清晰易懂; 1)用词一
4、致; 2)使用已有的协议; 3)减少消息模式的数目; 4)避免模糊的定义。,11.2 启发规则,2. 一般特殊结构的深度应适当:中等规模的系统中,类等级层次数应保持为72。不是必要情况,不应该随意创建派生类;,3. 设计简单的类:设计小而简单的类,便于开发和管理; 1)避免包含过多的属性; 2)有明确的定义; 3)尽量简化对象之间的合作关系; 4)不要提供太多服务。,4. 使用简单的协议:设计简单的类接口,发送的消息中参数要少。 5. 使用简单的服务:编写实现每一个服务时,避免复杂的语句和结构; 6. 把设计变动减至最小。,11.3 软件重用,11.3.1 概述 1. 重用 重用的三个层次:
5、1)知识重用; 2)方法和标准的重用; 3)软件成分的重用。,2. 软件成分的重用级别: 1)代码重用 a. 源代码剪贴; b. 源代码包含; c. 继承; 2)设计结果重用 3)分析结果重用,3. 典型的可重用软件成分 1)项目计划; 2)成本计划; 3)体系结构; 4)需求模型和规格说明; 5)设计; 6)源代码; 7)用户文档和技术文档;8)用户界面; 9)数据; 10)测试用例。,11.4 系统分解,11.5 设计问题域子系统,在设计问题域部分时,仅需要从实现的角度对问题域模型(对象模型、动态模型、功能模型)作一些补充、修改,主要是增添、合并或分解类与对象、属性和服务,调整继承关系等。
6、,1. 调整需求 2. 重用已有的类 3. 组合问题域的类 4. 增添基类以定义公共函数集合 5. 调整继承层次 1)使用多重继承机制 2)使用单继承机制,6. ATM系统实例,11.6 设计人机交互子系统,在面向对象分析中,已经对用户界面需求作了初步分析,在面向对象设计过程中,要对系统人机交互部分进行详细设计,其中包括指定窗口和报表的形式、设计命令层次等等。,设计人机交互子系统的策略: 1)分类用户; 2)描述用户; 3)设计命令层次; 4)设计人机交互类。,11.7 设计任务管理子系统,任务可视作进程(Process) 1. 分析并发性 基于动态模型分析并发性,如果对象间不存在交互,或不同
7、时接受事件,则是并发的。 并发任务可以在不同的处理器上实现,也可以在单个处理器上利用多任务操作系统实现。,2. 设计任务管理子系统 1)确定事件驱动型任务:主要完成通信工作 工作过程:睡眠等待来自数据线的中断任务唤醒、接收数据通知相应对象继续睡眠 2)确定时钟驱动型任务 每隔一定时间触发执行某些任务。 3)确定优先任务,4)确定关键任务 5)确定协调任务 当同时运行的任务较多时(3个以上),一般设计协调任务,会增加系统开销,但有利于封装不同任务间的协调控制。 6)尽量减少任务数 7)确定资源需求 计算系统载荷(单位时间处理业务数),估算所需CPU性能。,11.8 设计数据管理子系统,11.8.1 选择数据存储管理模式 1. 文件管理系统 2. 关系数据库管理系统 3. 面向对象数据库管理系统,11.8.2 设计数据管理子系统 1. 设计数据格式 2. 设计相应的服务,11.8.3 ATM系统实例,采用成熟的商品化关系数据库。根据数据库范式设计,保持数据一致性、完整性。 处理并发事务时,每个事务作为一个不可分割的批操作来处理,由事务封锁帐户,直至事务结束。,11.9 设计类中的服务,11.9.1 确定类中应有的服务 11.9.2 设计实现服务的方法 1. 设计实现服务的算法 1)算法复杂度; 2)容易理解、容易实现; 3)容易修改; 2. 选择数据结构 3. 定义内部类和内部操作,
链接地址:https://www.31doc.com/p-3123665.html