第九章面向对象设计
第9章 面向对象设计
引言
9.1 面向对象设计的概念 面向对象设计强调定义软件对象,并且使这些软件 对象相互协作来满足用户需求。 面向对象分析和设计的界限是模糊的,从面向对象 分析到面向对象设计是一个逐渐扩充模型的过程。 分析的结果通过细化直接生成设计结果,在设计过 程中逐步加深对需求的理解,从而进一步完善需求 分析的结果。 分析和设计活动是一个反复迭代的过程。 面向对象方法学在概念和表示方法上的一致性,保 证了各个开发阶段之间的平滑性。
面向对象设计首先要进行高层设计: 确定系统的总体结构和风格,构造系统的物理 模型,将系统划分成不同的子系统。 中层设计:对每个用例进行设计,规划实现用 例功能的关键类,确定类之间的关系。 进行底层设计:对每个类进行详细设计,设计 类的属性和操作,优化类之间的关系。 补充实现非功能性需求所需要的类。
面向对象设计与结构化设计的过程和方法完 全不同,要设计出高质量的软件系统,记住: 对接口进行设计 发现变化并且封装它 先考虑聚合然后考虑继承
强内聚 类内聚——设计类的原则是一个类的属性和 操作全部都是完成某个任务所必须的,其中 不包括无用的属性和操作。 例如设计一个平衡二叉树类,该类的目的就是 要解决平衡二叉树的访问,其中所有的属性和 操作都与解决这个问题相关,其他无关的属性 和操作在这里都是垃圾,应该清除。
弱耦合 在面向对象设计中,耦合主要指不同对象之 间相互关联的程度。如果一个对象过多地依 赖于其它对象来完成自己的工作,则不仅使 该对象的可理解性下降,而且还会增加测试、 修改的难度,同时降低了类的可重用性和可 移植性。 对象不可能是完全孤立的,当两个对象必须 相互联系时,应该通过类的公共接口实现耦 合,不应该依赖于类的具体实现细节。
耦合(续) 交互耦合——如果对象之间的耦合是通过消 息连接来实现的,则这种耦合就是交互耦合。 在设计时应该尽量减少对象之间发送的消息 数和消息中的参数个数,降低消息连接的复 杂程度。
耦合(续) 继承耦合——继承耦合是一般化类与特殊化 类之间的一种关联形式,设计时应该适当使 用这种耦合。在设计时要特别认真分析一般 化类与特殊化类之间继承关系,如果抽象层 次不合理,可能会造成对特殊化类的修改影 响到一般化类,使得系统的稳定性降低。另 外,在设计时特殊化类应该尽可能多地继承 和使用一般化类的属性和服务,充分利用继 承的优势。
可
重用性 软件重用是从设计阶段开始的,所有的设计工作都 是为了使系统完成预期的任务,为了提高工作效率、 减少错误、降低成本,就要充分考虑软件元素的重 用性。重用性有两个方面的含义: 尽量使用已有的类,包括开发环境提供的类库和已有的 相似的类; 如果确实需要创建新类,则在设计这些新类时考虑将来 的可重用性。
设计一个可重用的软件比设计一个普通软件的代价 要高,但是随着这些软件被重用次数的增加,分摊 到它的设计和实现成本就会降低。
框架 框架是一组可用于不同应用的类的集合。框 架中的类通常是一些抽象类并且相互有联系, 可以通过继承的方式使用这些类。例如, Java应用程序接口(API)就是一个成功的 框架包,为众多的应用提供服务,但一个应 用程序通常只需要其中的部分服务,可以采 用继承或聚合的方式将应用包与框架包关联 在一起来获得需要的服务。一般不会直接去 修改框架的类,而是通过继承或聚合为应用 创建合适的GUI类。
面向对象设计的活动 系统构架设计 用例设计 类设计 数据库设计 用户界面设计。
9.2 构架设计 构架设计的目的是要勾画出系统的总体结构, 这项工作由经验丰富的构架设计师主持完成。 该活动以用例模型、分析模型为输入。 输出:物理结构、子系统及其接口、概要的 设计类。
构架工程师
子系统 用例模型 概要 接口 补充需求 构 架 设 计 设计类
分析模型
构架描述 分析模型的说明
系统构架设计模型和实施模型
第1步:构造系统的物理模型 首先用UML的配置图描述系统的物理构架 将需求分析阶段捕获的系统功能分配到这些 物理节点上。 配置图上可以显示计算节点的拓扑结构、硬 件设备配置、通信路径、各个节点上运行的 系统软件配置、应用软件配置。 一个图书馆信息管理系统的物理模型如图示
中国网通
中国电信
DDN
路由器
DDNDMZ区
链路负载均衡器
DNS服 务器 分交换机 WEB服 务器
防火墙
内部用户区主交换机 分交换机 分交换机 流量分配器 内部用 户1 内部用 户n
网闸 数据库 服务器 应用服 务器
内部用 户2
分交换机
用户学习/测试区应用服务 器1
数据库服 务器
数据库服 务器
应用服务 器2
共享磁盘阵列
应用服务 器3
网闸隔离区
图有4个区:DMZ区的两个服务器主要是用于运行集团网站。 内部用户区是为集团内部局域网用户服务的。 用户学习和测试区有两个目的,一是为使用系统的初级用户有 一个实际操练的环境,学习系统的应用环境与真实系统完全一 样,只是数据库
的数据都是练习数据;第二个目的是为了新版 本正式上线前提供一个测试环境,因为业务系统在使用过程中 经常会有变更,很容易引入错误和问题,为了确保业务的正确 执行,需要对系统的新版本进行大量逼真的运行测试。 网闸隔离区内部署了正式系统,三台应用服务器负责全国所有 的用户业务,它们的负载均衡由流量分配器实现;两台数据库 服务器做双机热备;物理网闸实现内外网的隔离;为了兼顾使 用网通和电信线路的用户,分别设计了两条线路,并由链路负 载均衡器调整线路的负载,有效地保证了全国不同地区的用户 顺利使用该系统。
第2步 设计子系统 对于一个复杂的软件系统来说,将其分解成 若干个子系统,子系统内还可以继续划分子 系统或包,这种自顶向下、逐步细化的组织 结构非常符合人类分析问题的思路。 每个子系统与其它子系统之间应该定义接口, 在接口上说明交互信息,注意这时还不要描 述子系统的内部实现。
1)划分各个子系统的方式:按照功能划分,将 相似的功能组织在一个子系统中;按照系统 的物理布局划分,将在同一个物理区域内的 软件组织为一个子系统;按照软件层次划分 子系统,软件层次通常可划分为用户界面层、 专用软件层、通用软件层、中间层和数据层, 具体的表达方式见图。
…… 此处隐藏:1149字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [资格考试]石油钻采专业设备项目可行性研究报告编
- [资格考试]2012-2013学年度第二学期麻风病防治知
- [资格考试]道路勘测设计 绪论
- [资格考试]控烟戒烟知识培训资料
- [资格考试]建设工程安全生产管理(三类人员安全员
- [资格考试]photoshop制作茶叶包装盒步骤平面效果
- [资格考试]授课进度计划表封面(09-10下施工)
- [资格考试]麦肯锡卓越工作方法读后感
- [资格考试]2007年广西区农村信用社招聘考试试题
- [资格考试]软件实施工程师笔试题
- [资格考试]2014年初三数学复习专练第一章 数与式(
- [资格考试]中国糯玉米汁饮料市场发展概况及投资战
- [资格考试]塑钢门窗安装((专项方案)15)
- [资格考试]初中数学答题卡模板2
- [资格考试]2015-2020年中国效率手册行业市场调查
- [资格考试]华北电力大学学习实践活动领导小组办公
- [资格考试]溃疡性结肠炎研究的新进展
- [资格考试]人教版高中语文1—5册(必修)背诵篇目名
- [资格考试]ISO9001-2018质量管理体系最新版标准
- [资格考试]论文之希尔顿酒店集团进入中国的战略研
- 全国中小学生转学申请表
- 《奇迹暖暖》17-支2文学少女小满(9)公
- 2019-2020学年八年级地理下册 第六章
- 2005年高考试题——英语(天津卷)
- 无纺布耐磨测试方法及标准
- 建筑工程施工劳动力安排计划
- (目录)中国中央空调行业市场深度调研分
- 中国期货价格期限结构模型实证分析
- AutoCAD 2016基础教程第2章 AutoCAD基
- 2014-2015学年西城初三期末数学试题及
- 机械加工工艺基础(完整版)
- 归因理论在管理中的应用[1]0
- 突破瓶颈 实现医院可持续发展
- 2014年南京师范大学商学院决策学招生目
- 现浇箱梁支架预压报告
- Excel_2010函数图表入门与实战
- 人教版新课标初中数学 13.1 轴对称 (
- Visual Basic 6.0程序设计教程电子教案
- 2010北京助理工程师考试复习《建筑施工
- 国外5大医疗互联网模式分析




