软件工程导论课件之第11章 面向对象设计(第五版)(张海藩编著)
张海藩《软件工程导论》(第6版)(章节题库 第11章 面向对象设计)【圣才出品】

第11章面向对象设计一、选择题1.()是不需要接收消息就能主动执行的服务。
A.内部服务B.外部服务C.内嵌服务D.上层服务【答案】B【解析】主动服务是不需要接收消息就能主动执行的服务,它在程序实现中是一个主动的程序成分,而外部服务属于主动服务,所以答案选B项。
2.火车是一种陆上交通工具,火车和陆上交通工具之间的关系是()关系。
A.组装B.整体与部分C.has aD.一般与具体【答案】D【解析】火车是一种陆上交通工具,而陆上交通工具不一定是火车,还可以是汽车、自行车等,说明火车是陆上交通工具的具体化,而陆上交通工具是火车的一般化,所以它们之间的关系是一般与具体的关系。
3.()只供对象内部的其他服务使用,不对外提供。
A.外部服务B.内部服务C.内嵌服务D.上层服务【答案】B【解析】对象的服务分为外部服务和内部服务两种,其中,内部服务只供内部的其它服务使用,不对外提供,外部服务只供对象外部的其它服务使用,不对内提供。
4.对象标识是分配给每个对象的永久性标识(又称作“柄”),它不符合下述条件()。
A.在一定的范围或领域(例如一个应用系统)中是唯一的B.与对象实例的特征、状态及分类(可能是动态的)无关C.在对象存在期间保持一致D.在对象存在之后保持一致【答案】D【解析】对象标识符合如下几个条件:①在一定的范围或领域中是唯一的;②与对象实例的特征、状态及分类无关;③在对象期间保持一致。
5.对象或者类的整体行为(例如响应消息)的某些规则所不能适应的(对象或类的)()。
A.状况B.情态C.条件D.问题【答案】D【解析】对象或者类的整体行为(例如响应消息)的某些规则所能适应的(对象或类的)状况、情况、条件、形式或生存周期阶段。
二、填空题1.对象的服务可分为_____、_____。
【答案】外部服务;内部服务2._____不同取值所构成的组合都可看作对象的一种新的状态。
【答案】对象的每个属性3.如果在一个服务中包括了多项可独立定义的功能,则它是_____,应尝试把它分解为多个服务。
软件工程导论(全)张海藩PPT课件

与方法。
张
主要内容包括:软件工程概述、软件生存周期及软件
海 藩
需求分析、软件设计方法、软件测试技术等。 通过本课程的学习,使学生能真正的从中了解软件开
发的整个过程。为了让学生真正得以实践,结合实际软件
开发项目,让学生从问题定义开始,经过可行性研究、需
求分析、概要设计、详细设计、编码直到最后要对自己开
软制品
张
(软体)
海
藩
软件是计算机系统中与硬件相互依存的另一部分。 它包括程序、数据及其相关文档的完整集合。
2020/8/1
软
件 工
2、软件特点
程
导
. 软件是一种逻辑实体,而不是具体的物理实体
. 软件的生产与硬件不同
. 在软件的运行和使用期间,没有硬件那样的机械
张
磨损,老化问题
海
藩
失
磨合
修改点 失
实际曲线
张 海 藩
具和软件库,软件开发人员训练有素,都强 烈渴望去编写很酷的软件,可以在几天的时 间里编写出一个相当复杂的软件。但为什么 有一些软件能够得到用户的喜欢,而另一些
则不能?为什么有些软件能够在市场上成功
,而有些则受到冷落?由此可见,开发软件
并不一定难,难就难在如何开发有用的软件。
微软凌小宁博士
2020/8/1
支持管理: 标准检验程序 库管理程序
2020/8/1
软
件 工
2、按软件的规模进行划分
程 导
按开发软件所需的 人力、时间以及完成的
源代码行数。
张 海
类别
参加人数
研制期限 产品规模(源代码行数)
藩
微型
1
1-4周
约500行
软件工程导论第五版全套课件

第1章软件工程学概述1.1软件危机1.1.1软件危机的介绍1.1.2产生软件危机的原因图1.1引入同一变动付出的代价随时间变化的趋势1.1.3消除软件危机的途径1.2软件工程1.2.1软件工程的介绍1. 软件工程关注于大型程序的构造2. 软件工程的中心课题是控制复杂性3. 软件经常变化4. 开发软件的效率非常重要5. 和谐地合作是开发软件的关键6. 软件必须有效地支持它的用户7. 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品2软件工程导论(第五版) 1.2.2软件工程的基本原理1. 用分阶段的生命周期计划严格管理2. 坚持进行阶段评审3. 实行严格的产品控制4. 采用现代程序设计技术5. 结果应能清楚地审查6. 开发小组的人员应该少而精7. 承认不断改进软件工程实践的必要性1.2.3软件工程方法学1. 传统方法学2. 面向对象方法学1.3软件生命周期1. 问题定义2. 可行性研究3. 需求分析4. 总体设计5. 详细设计6. 编码和单元测试7. 综合测试8. 软件维护软件工程导论(第五版) 3 1.4软件过程1.4.1瀑布模型图1.2传统的瀑布模型1. 阶段间具有顺序性和依赖性2. 推迟实现的观点3. 质量保证的观点4软件工程导论(第五版)图1.3实际的瀑布模型1.4.2快速原型模型图1.4快速原型模型软件工程导论(第五版) 5 1.4.3增量模型图1.5增量模型图1.6风险更大的增量模型6软件工程导论(第五版) 1.4.4螺旋模型图1.7简化的螺旋模型软件工程导论(第五版) 7图1.8完整的螺旋模型8软件工程导论(第五版) 1.4.5喷泉模型图1.9喷泉模型1.4.6 Rational统一过程1. 最佳实践2. RUP软件开发生命周期软件工程导论(第五版) 9图1.10 RUP软件开发生命周期1.4.7敏捷过程与极限编程1. 敏捷过程2. 极限编程图1.11 XP项目的整体开发过程10软件工程导论(第五版)图1.12 XP迭代开发过程1.4.8微软过程1. 微软过程准则2. 微软软件生命周期图1.13微软软件生命周期阶段划分和主要里程碑3. 微软过程模型图1.14微软过程的生命周期模型1.5小结习题11. 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?2. 假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?3. 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?4. 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。
软件工程导论课件(全)张海藩

类别
参加人数
研制期限
产品规模(源代码行数)
微型 小型 中型 大型 甚大型 极大型
1 1 2-5 5-20 100-1000 2000-5000
1-4周 1-6周 1-2年 2-3年 4-5年 5-10年
约500行 约2000行 5000-50000行 5万-10万行 100万行 1000万行
2016/9/9
2016/9/9
原型模型(Prototype Model)
原型:是指模拟某种产品的原始模型
快速分析 和设计 加工 原型 原型 客户 评价原型 建造 原型
1、原型系统仅包括未来系统的 主要功能,以及系统的重要 接口。 2、为了尽快向用户提供原型, 开发原型系统时应尽量使用 能缩短开发周期的语言和工 具。
技术可行性分析方法--- 数学模型和优化技术、 概率和统计、排队论、控制论等方法。
2016/9/9
1、系统概述 2、可行性分析
可行性 论证报告
3、拟订具 (系流程图与系统结构图)
1、系统流程图: 是用来描述系统物理模型的一种传统工具。
C
ACD 的层次结构
2016/9/9
作 业
请画出学生成绩管理系统的 ACD 图
2016/9/9
第3 章 软件需求分析
软件需求分析是软件开发早期的一个重要阶段。它 在问题定义和可行性研究阶段之后进行。需求分析的基 本任务是软件人员和用户一起完全弄清用户对系统的确 切要求。这是关系到软件开发成败的关键步骤,也是整 个系统开发的基础。 软件需求分析阶段要求用 需求规格说明书(SRS) 来表达用户对系统的要求。规格说明书可用文字方式表 示,也可用图形表示。 本章将介绍需求分析的任务、步骤、需求分析方法 (面向数据流图分析方法、面向对象的分析方法)。
《软件工程导论》张海潘_第五版_清华_课后答案PPT课件

护士 护士
社会、政策允许的可行性
2-2 为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员键入系统,如果是存款,系
统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息
an.c 利息
2.3
打印利息
值
d清a单 ai
w. 某航空公司拟开发一个机票预定系统。旅行社把预订机票的旅客信息(姓名、性别…等)输入进该系统,系统 ww 为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统核对无误即印 网 出机票给旅客。
源
旅客
取票通知 账单/票款
网 检验信 源息
检验信 息过程
重试信息
资
SC 图
件 用户执行模块 课
案
答 读用户命令
命令处理
题
习
案系统设置
现用/非现用
密码处理
答 控制器
系统
控制器
爱
读系统 数据
建立配 置文件
读 密码
用文件 比较密码
密码输出 控制器
机票预订系统(参见习题 2 第 3 题)
显示信息 与状态
产生 无效信息
6
更新日志
日志
日志
7 产生病情 要求
报告
课件 事样务
数据 数据
案
D1 患者日志
答
6.数据定义 1、顺序 + 2、选择〔 | 〕3、重复
题 – 定货系统 P39 习 – 习题 2 第 5 题 P44 案 2-1 应该从哪些方面研究目标系统的可行性?
软件工程导论张海藩PPT课件

A[I]=A[I]+A[T]; A[T]=A[I]-A[T]; A[I]=A[I]-A[T];
WORK=A[T]; A[T]=A[I]; A[I]=WORK;
第22页/共125页
例7:简单直接
for (i=1; i<=n; i++) for (j=1; j<=n; j++) V[i][j]=(i/j)*(j/i)
与机器码一样长
特殊情
C、C++等
数据库查询语言 4GL 程序生成器
图形语言
利用类英语的语句和命令 一条语句相当于5-10条机器码
要规定详细的算法过程
与自然语言接近 一条语句相当于30-50条机器码
非过程化问题定义 运行开销大,效率低
高级
第4页/共125页
选择语言的理想标准: • 为了使程序容易测试和维护以减少软件的总成本,所选用的高级语言应该有理想
的模块化机制,以及可读性好的控制结构和数据结构; • 为了便于调试和提高软件可靠性,语言特点应该使编译程序能够尽可能多地发现
程序中的错误; • 为了降低软件开发和维护的成本,选用的高级语言应该有良好的独立编译机制。
第5页/共125页
主要的实用标准: • 系统用户的要求 • 可以使用的编译程序 • 可以得到的软件工具 • 工程规模 • 程序员的知识 • 软件可移植性要求 • 软件的应用领域
例5:一行一条语句
FOR I:=1 TO N-1 DO BEGIN T:=I; FOR J:=I+1 TO N DO IF A[J]<A[T] THEN T:=J; IF T<>I THEN BEGIN WORK:=A[T]; A[T]:=A[I]; A[I]:=WORK; END END;
高级软件工程(第十一章) 面向对象设计方法PPT课件

➢协调边界类和实体类之间的消息及消息发送的 顺序。
12
续
➢控制类作为完成用例任务的责任承担者,协调 、控制其他类共同完成用例规定的功能或行为 。对于比较复杂的用例,控制类通常并不处理 具体的任务细节,但是它应知道如何分解任务 ,如何将子任务分派给适当的辅助类,如何在 辅助类之间进行消息传递和协调。
② 开发交互图,即为每一个用例产生一个交互 图:其决定哪些对象一起工作,及怎样协同 工作。 (系统设计的核心);
③ 根据开发交互图时得到的信息,迭代设计类 图和开发方法名称(确定类的行为和职责)
④ 用包图将设计类图分割成相关的功能。
3
用例的实现
➢称设计模型的最终开发结果为用例的实现。 ➢术语实现指的是对每个用例的详细系统过程进
16
导航可见性
➢一个对象可看到另一个对象并与之交互(导航 、可见性)。
➢一个对象可导航(发送消息)到另一个对象。 ➢一个对象通过发消息的方式和另一个对象进行
联系,那么第二个对象对于第一个对象来说必 须是可见的。 ➢对象具有能看见另一对象并与其交互的能力。
17
用例实现与交互图
➢用例的实现是在交互图的开发过程中完成的, 用例实现的过程就是确定哪些类通过发送消息 与其他类进行协作的过程。
➢设计时开发的交互图:顺序图或协作图。
18
对象职责
➢一种由对象负责实施系统过程的设计准则。 ➢集中确定一个系统必须支持的行为,再设计实
现这些行为的方法。通过这些行为,确定对象 职责。
19
用例控制器
➢每个用例含有许多来自外部参与者不同的消息。 ➢作为OO分析一部分的系统顺序图能够描述出这些
软件工程导论课件全张海藩

利用大数据技术分析和监控软件系统的运行状态,发现性能瓶颈并 进行优化,提高软件系统的稳定性和效率。
软件故障预测与预防
通过分析历史故障数据和系统日志,预测可能出现的故障并提前采取 预防措施,降低软件维护成本。
云计算在软件工程中的应用
云计算平台开发
基于云计算平台开发软件应用,实现资源的动态分配、弹性扩展和按需付费,降低软件开发和运 维成本。
和输出。
在瀑布模型中,软件开发过程被划分为需求分析、设 计、编码、测试和维护等阶段,每个阶段都必须在前
一个阶段完成后才能开始。
瀑布模型的优点是易于理解和管理,适用于需求稳定、 变更较少的情况。但是,它缺乏灵活性,难以应对需 求变更和快速变化的市场环境。
螺旋模型
螺旋模型是一种迭代式的软件开发过程 模型,它将开发过程划分为多个循环, 每个循环包括需求分析、设计、编码和 测试等阶段。
在敏捷开发模型中,开发团队会按照短周期(通常是一到四周)进行迭代开发,每个周期都会交付可用 的软件产品。
敏捷开发模型的优点是能够快速响应变化、降低开发风险、提高软件质量。但是,它需要更多的沟通和 协作能力,同时也需要更加灵活的管理方式。
其他过程模型
除了上述三种常见的软件开发过程模 型外,还有其他一些过程模型,如原 型模型、增量模型等。
缺陷分析
对缺陷进行分析,找出根本原因,避免类似缺陷再次出现。
质量评估指标
缺陷密度
衡量软件质量的重要指标,表示每千行代码 中的缺陷数。
回归测试通过率
评估软件修复缺陷后,原有功能是否正常的 重要指标。
测试覆盖率
评估测试用例对软件产品功能的覆盖程度。
用户满意度
反映用户对软件产品质量和服务的满意程度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象方法不仅支持过程抽象,而且支持数 据抽象。
3. 信息隐藏
在面向对象方法中,信息隐藏通过对象的封装 性实现。
4. 弱耦合 耦合指不同对象之间相互关联的紧密程度。
一般说来,对象之间的耦合可分为两大类:
交互耦合
如果对象之间的耦合通过消息连接来实现,则这种耦合 就是交互耦合。
各个子系统之间应该具有尽可能简单、明确的 接口。因此,可以相对独立地设计各个子系统。
在划分和设计子系统时,应该尽量减少子系统 彼此间的依赖性。
面向对象设计模型,与面向对象分析模型一样, 也由主题、类与对象、结构、属性、服务等5 个层次组成。
大多数系统的面向对象设计模型,在逻辑上都 由4大部分组成。
多态重用
利用多态性不仅可以使对象的对外接口更加一般化, 从而降低了消息连接的复杂程度,而且还提供了一 种简便可靠的软构件组合机制。
11.3.3 软件重用的效益
1. 质量 随着每一次重用,都会有一些错误被发现并被清除,
构件的质量也会随之改善。
2. 生产率 当把可重用的软件成分应用于软件开发的全过程时,
语言 1
把关联类转化为二元关联
公司 1..*
职员 1..*
工作岗位 工资
公司 1
工作岗位 1..* 工资 1..*
职员 1
7. 调整与完善属性
学生
学生
奖励
姓名 籍贯 奖励 ……
姓名 籍贯 ……
1..*
级别
1 时间 贡献
……
8. ATM系统实例
ATM系统问题域子系统的结构
11.6 设计人机交互子系统
当前所需的类的信息
比
可复用类定义的信息
不同程度的复用: = 直接复用 < 通过继承复用 > 删除可复用类的多余信息 ≈ 删除多余信息,通过继承复用
第4种情况的步骤:
(1) 把要复用的类加到问题域;
(2) 标以“复用”,划掉(或标出)不用的属 性与操作;
(3) 建立从复用类到问题域原有的类之间的泛 化关系;
人员
1 0..2 身份
研究生
教职工
聚合方式
方法二:采用压平的方式。
人员
研究生
在职研究生
教职工
压平方式
方法三:压平和聚合的方式。
人员
研究生
在职研究生
教职工
研究生信息
教职工信息
压平和聚合方式
取消继承 方法一:把继承结构展平。
研究生
在职研究生
教职工
完全取消继承
方法二:采用聚合的方法。
A
B
A
B
C
精心设计的“类”基本上能满足上述要求,可 以认为它是可重用软构件的雏形。
2. 类构件的重用方式
实例重用
由于类的封装性,使用者无须了解实现细节就可以 使用适当的构造函数,按照需要创建类的实例。这 是最基本的重用方式。
继承重用
继承重用提供了一种安全地修改已有类构件,以便 在当前系统中重用的手段。
交互耦合应尽可能松散 。
继承耦合
与交互耦合相反,应该提高继承耦合程度。 继承是一般化类与特殊类之间耦合的一种形式。通过继
承关系结合起来的基类和派生类,构成了系统中粒度更 大的模块。彼此之间应该越紧密越好。
5. 强内聚 内聚衡量一个模块内各个元素彼此结合的紧密程度。
内聚定义为:设计中使用的一个构件内的各个元素, 对完成一个定义明确的目的所做出的贡献程度。
当问题域子系统过分复杂庞大时,应该把它进 一步分解成若干个更小的子系统。
1. 调整需求
有两种情况会导致修改通过面向对象分析所确 定的系统需求:
一是用户需求或外部环境发生了变化;
二是分析员对问题域理解不透彻或缺乏领域专家帮 助。
无论出现上述哪种情况,通常都只需简单地修 改面向对象分析结果,然后再把这些修改反映 到问题域子系统中。
部
分
分
任务管理部分
11.1 面向对象设计的准则
所谓优秀设计,就是权衡了各种因素,从而使 得系统在其整个生命周期中的总开销最小的设 计。
对大多数软件系统而言,60%以上的软件费用 都用于软件维护,因此,优秀软件设计的一个 主要特点就是容易维护。
设计准则有6条。
1. 模块化
对象就是模块。它是把数据结构和操作这些数 据的方法紧密地结合在一起所构成的模块。
件开发规范的重用)。 软件成分的重用。
2. 软件成分的重用级别
代码重用:通常把它理解为调用库中的模块。 代码重用的几种形式:
源代码剪贴
源代码包含
继承
设计结果重用:重用某个软件系统的设计模型 (即求解域模型)。这个级别的重用有助于把一 个应用系统移植到完全不同的软硬件平台上。
分析结果重用:重用某个系统的分析模型。这 种重用特别适用于用户需求未改变,但系统体 系结构发生了根本变化的场合。
3. 典型的可重用软件成分 项目计划 成本估计 体系结构 需求模型和规格说明 设计 源代码 用户文档和技术文档 用户界面 数据 测试用例
11.3.2 类构件
面向对象技术中的“类”,是比较理想的可重 用软构件,称之为类构件。
1. 可重用软构件应具备的特点
模块独立性强 具有高度可塑性 接口清晰、简明、可靠
第11章 面向对象设计
11.1 面向对象设计的准则 11.2 启发规则 11.3 软件重用 11.4 系统分解 11.5 设计问题域子系统 11.6 设计人机交互子系统 11.7 设计任务管理子系统 11.8 设计数据管理子系统 11.9 设计类中的服务 11.10 设计关联 11.11 设计优化
分析是提取和整理用户需求,并建立问题域精 确模型的过程。
问题域子系统
人机交互子系统
任务管理子系统
数据管理子系统
可以把4大组成部分想象成整个模型的4个垂直 切片。
典型的面向对象设计模型
1. 子系统之间的两种交互方式
客户-供应商关系(Client-supplier)
作为“客户”的子系统调用作为“供应商”的子系 统,后者完成某些服务工作并返回结果。
在一个中等规模(大约包含100个类)的系统中, 类等级层次数应保持为7±2。
3. 设计简单的类 应该尽量设计小而简单的类,以便于开发和管
理。
为使类保持简单,应该注意以下几点:
避免包含过多的属性。 有明确的定义。 尽量简化对象之间的合作关系。 不要提供太多服务。 在开发大型软件系统时,设计出大量较小的类,需
要划分“主题”。
4. 使用简单的协议
一般说来,消息中的参数不要超过3个。当然, 不超过3个的限制也不是绝对的。
5. 使用简单的服务
一般说来,应该尽量避免使用复杂的服务。
如果一个服务中包含了过多的源程序语句,或 者语句嵌套层次太多,或者使用了复杂的 CASE语句,则应该仔细检查这个服务,设法 分解或简化它,考虑用一般-特殊结构代替。
(4) 由于问题域的类继承了“复用”类的特征, 所以有些属性和操作不需要了。
可复用的类
车辆
序号 厂商 样式
序号认证
问题域中的类
车辆 序号 颜色 样式 出厂年月 序号认证
车辆 (复用) 序号 厂商 样式
序号认证
车辆
序号 颜色 样式 出厂年月
序号认证
3. 把问题域类组合在一起
通过引入一个根类而把问题域类组合在一起。 此外,这样的根类还可以用来建立协议。
任何交互行为都是由前者驱动的。
平等伙伴关系(peer-to-peer)
每个子系统都可能调用其他子系统,因此,每个子 系统都必须了解其他子系统的接口。
子系统之间的交互更复杂。
总的说来,单向交互比双向交互更容易理解, 也更容易设计和修改,因此应该尽量使用客户 -供应商关系。
2. 组织系统的两种方案
在设计时应该力求做到高内聚。
在面向对象设计中存在下述3种内聚:
服务内聚。一个服务应该完成一个且仅完成一个功能。
类内聚。一个类应该只有一个用途,它的属性和服务应该是 高内聚的。
一般-特殊内聚。设计出的一般-特殊结构,应该符合多数人 的概念。
6. 可重用
软件重用是提高软件开发生产率和目标系统质 量的重要途径。
生产率得到了提高。基本上30%~50%的重用大约可 以导致生产率提高25%~40%。 3. 成本 净成本节省可以用下式估算:C=Cs-Cr-Cd 其中,Cs是项目从头开发所需要的成本;Cr是与重用 相关联的成本;Cd是交付给客户的软件的实际成本。
11.4 系统分解
系统的主要组成部分称为子系统。通常根据所 提供的功能来划分子系统。一般说来,子系统 的数目应该与系统规模基本匹配。
6. 把设计变动减至最小 出现必须修改设计的情况,应该使修改的范围
尽可能小。
理想的设计变动情况
11.3 软件重用 11.3.1 概述
1. 重用
重用也叫再用或复用,是指同一事物不作修改 或稍加改动就多次重复使用。
广义地说,软件重用可分为以下3个层次:
知识重用(软件工程知识的重用)。 方法和标准的重用(面向对象方法或国家制定的软
层次组织(水平)
把软件系统组织成一个层次系统,每层是一个子系 统。上层在下层的基础上建立,下层为实现上层功 能而提供必要的服务。在上、下层之间存在客户供应商关系。
封闭式
开放式
块状组织(垂直)
把软件系统垂直地分解成若干个相对独立的、弱耦 合的子系统,一个子系统相当于一块,每块提供一 种类型的服务。
把多重继承结构简化成单一的单继承层次结构。
在多重继承结构中的某些继承关系,经简化后将不 再存在,这表明需要在各个具体类中重复定义某些 属性和服务。
把多重继承简化为单一层次的单继承
方法一:采用聚合把多继承调整为单继承。
A