版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第11章 面向对象设计11.1 面向对象设计的准则 1. 模块化 面向对象的软件开发模式,支持了系统模块化的原则:对象就是模块。它把数据结构和操作(方法)紧密地结合在一起构成模块。2. 抽象 类实际上是一种抽象数据类型,它对外开放的公共接口构成了类的规格说明(协议),这种接口规定了外界可以使用的合法操作符,利用这些操作符可以对类的实例中包含的数据进行操作。 3. 信息隐蔽 在面向对象方法中,信息隐蔽通过对象的封装性实现:类结构分离了类的接口与类的实现,从而支持了信息隐蔽。 4. 弱耦合 弱的耦合可以提高软件模块的独立性,避免某一部分模块发生变化对其它模块有较大的影响。一般来说,对象间的耦合有两
2、大类: A交互耦合:对象间的耦合通过信息连接来实现。应使交互耦合尽量松散。 B继承偶合:与交互耦合相反,应该提高继承耦合的程度。因为通过继承关系结合起来的基类和派生类,结合得越紧密越好。5. 强内聚面向对象设计中存在三种内聚: A服务内聚:一个服务应该完成一个且完成一个功能。 B类内聚:一个类应该只有一个用途,它的属性和服务应该是高内聚的。 C一般特殊内聚:即基类派生类的内聚。 6. 可重用 使用已经存在的类(包括开发环境提供的类库,及以往开发相似系统时创建的类),可以提高软件重用性,提高软件生产率。 人们在面向对象方法中也积累了一些经验,总结出几条启发规则: 1. 设计结果应该清晰易懂; 1
3、)用词一致; 2)使用已有的协议; 3)减少消息模式的数目; 4)避免模糊的定义。11.2 启发规则 2. 一般特殊结构的深度应适当:中等规模的系统中,类等级层次数应保持为72。不是必要情况,不应该随意创建派生类;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.4 系统分解类与对象层人机交互部分问题域部分任务管理部分数据管理部分主题层结构层属性层服务层图11.2 典型的面向对象设计模型11.5 设计问题域子系统 在设计问题域部分时,仅需要从实现的角度对问题域模型(对象模
5、型、动态模型、功能模型)作一些补充、修改,主要是增添、合并或分解类与对象、属性和服务,调整继承关系等。1. 调整需求2. 重用已有的类3. 组合问题域的类4. 增添基类以定义公共函数集合5. 调整继承层次 1)使用多重继承机制 2)使用单继承机制6. ATM系统实例11.6 设计人机交互子系统 在面向对象分析中,已经对用户界面需求作了初步分析,在面向对象设计过程中,要对系统人机交互部分进行详细设计,其中包括指定窗口和报表的形式、设计命令层次等等。 设计人机交互子系统的策略: 1)分类用户; 2)描述用户; 3)设计命令层次; 4)设计人机交互类。11.7 设计任务管理子系统 任务可视作进程(P
6、rocess)1. 分析并发性 基于动态模型分析并发性,如果对象间不存在交互,或不同时接受事件,则是并发的。 并发任务可以在不同的处理器上实现,也可以在单个处理器上利用多任务操作系统实现。2. 设计任务管理子系统 1)确定事件驱动型任务:主要完成通信工作 工作过程:睡眠等待来自数据线的中断任务唤醒、接收数据通知相应对象继续睡眠 2)确定时钟驱动型任务 每隔一定时间触发执行某些任务。 3)确定优先任务4)确定关键任务5)确定协调任务 当同时运行的任务较多时(3个以上),一般设计协调任务,会增加系统开销,但有利于封装不同任务间的协调控制。6)尽量减少任务数7)确定资源需求 计算系统载荷(单位时间处
7、理业务数),估算所需CPU性能。11.8 设计数据管理子系统11.8.1 选择数据存储管理模式 1. 文件管理系统 2. 关系数据库管理系统 3. 面向对象数据库管理系统11.8.2 设计数据管理子系统 1. 设计数据格式 2. 设计相应的服务11.8.3 ATM系统实例 采用成熟的商品化关系数据库。根据数据库范式设计,保持数据一致性、完整性。 处理并发事务时,每个事务作为一个不可分割的批操作来处理,由事务封锁帐户,直至事务结束。11.9 设计类中的服务11.10 设计关联11.11 设计优化第12章 面向对象实现12.1.1 面向对象语言的优点 使用面向对象语言时,编译程序可以自动把面向对象
8、概念映射到目标程序中。 使用非面向对象语言编写面向对象程序,则必须由程序员自己把面向对象概念映射到程序中。 1980年的smalltalk-80发展了Simula-67的对象和类的概念,并引入了方法、消息、元类及协议等概念,所以有人将smalltalk80称为第一个面向对象语言。 但是,使面向对象广泛流行的是C+。12.1.2 面向对象语言的技术特点选择面向对象语言时应考虑的技术特点: 1. 支持类与对象概念的机制 2. 实现整体部分(聚集)结构的机制 3. 实现一般特殊(泛化)结构的机制 4. 实现属性和服务的机制 5. 类型检查6. 类库7. 效率8. 持久保存对象9. 参数化类10. 开
9、发环境12.1.3 选择面向对象语言 1. 将来能否占主导地位 2. 可重用性 3. 类库和开发环境 4. 其他因素 有否提供技术支持?提供开发人员什么开发平台?对及其性能的需求?集成已有软件的容易程度。 12.2 程序设计风格12.2.1 提高可重用性12.2.2 提高可扩充性12.2.3 提高健壮性12.3 测试策略12.3.1 面向对象的单元测试基类:操作A:X子类:操作A1:XA2:XA3:X有必要在每个子类中测试操作 X 不孤立地测试单个操作(函数),而是把操作作为类的一部分进行测试。12.3.2 面向对象的集成测试 两种不同的测试策略: 1)基于线程的测试(thread based
10、 testing) 将响应系统的一个输入或一个事件所需要的哪些类集成起来测试。 2)基于使用的测试(use based testing) 先测试独立类,再测试使用独立类的下一层次的类(依赖类),重复直至完毕。12.3.3 面向对象的确认测试 主要是根据动态模型和描述系统行为的脚本来设计确认测试用例。12.4 设计测试用例12.4.1 测试类的方法1. 随机测试 ATM系统中account(帐户)类的操作有:Open(打开)、Setup(建立)、Deposit(存款)、Withdraw(取款)、Balance(余额)、Summarize(清单)、CreditLimit(透支限额)、Close(关
11、闭)。 可以随机地产生一系列不同的操作序列:测试用例1:Open.Setup.Deposit.Balance.Summarize.Withdraw.Close测试用例2: Open.Setup.Withdraw.Deposit.Balance.CreditLimit.Close2. 划分测试(类似于等价类划分)1)基于状态的划分 改变Account类状态的操作: deposit, withdraw; 不改变Account类状态的操作: balance, summarize, creditLimit 测试用例: 1.open.setup.deposit.deposit.withdraw.with
12、draw.close; 2.open.setup.balance.summarize.creditLimit.close;2)基于属性的划分 根据类操作使用的属性来划分操作。 例,按属性Balance分可三类: 使用Balance的操作; 修改Balance的操作; 不使用也不修改balance的操作。3)基于功能的划分 依据类操作完成的功能来划分类操作。 例,初始化操作:open,setup 计算操作:deposit,withdraw 查询操作:balance, summarize, creditLimit 3. 基于故障的测试 一般依靠经验和直觉,类似于错误推测测试法。12.4.2 集成测试方法 测试类协作可以使用随机测试方法、划分测试方法、行为测试等。 1. 多类测试 p3022. 从动态模型导出测试用例EmptyacctsetupacctworkingacctnonworkingacctdeadacctopenSetup acctDeposit(initial)closeWithdraw (final)depositwithdrawBalanceCreditAcct InfoAccount类的状态转换图应使Account类实例遍历所有允许的状态转换:测试用例1: open. setupacct. deposit(initial).
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年艺术欣赏测试题及答案
- 深度解析(2026)《GBT 30231-2013鼠类防制操作规程 村庄》
- 2026年体育单招面试试题及答案
- 期中后教师大会上校长讲话:汇六股心力、推四个动作、破一道围墙-不加课不加压靠协作把成绩提上来
- 深度解析(2026)《GBT 29835.2-2013系统与软件效率 第2部分:度量方法》
- 深度解析(2026)《GBT 29792-2013静电复印(打印)设备用显影磁辊》
- 深度解析(2026)《GBT 29671-2013化妆品中苯酚磺酸锌的测定 高效液相色谱法》
- 《GBT 7897-2008钢丝网水泥用砂浆力学性能试验方法》(2026年)合规红线与避坑实操手册
- 《GBT 4111-2013混凝土砌块和砖试验方法》(2026年)合规红线与避坑实操手册
- 《GBT 590-2008船用法兰铸铁截止阀》(2026年)合规红线与避坑实操手册
- 2025年水务公司笔试题及答案
- 2026江西省福利彩票发行中心及市级销售机构招聘编外人员14人备考题库及1套完整答案详解
- 初中英语语法完形填空阅读理解满分技巧大全
- 2026第二届全国红旗杯班组长大赛考试备考核心试题库500题
- 地铁泄密案例分析
- 工厂质量事故分析整改手册
- 2026年企业破产债权申报实务培训课件与债权确认指南
- GB/T 4982-2025真空技术夹紧型快卸连接器尺寸
- 雨课堂学堂在线学堂云《国学通论(吉大 )》单元测试考核答案
- 科研助理聘用协议书
- 2025年生物会考成都真题及答案
评论
0/150
提交评论