第10章面向对象讲解
软件工程导论第10章面向对象分析

易于理解,同时减少了代码冗余和重复,提高了开发效率和代码质量。
03
提高软件的可重用性
面向对象分析鼓励使用抽象和封装技术,使得软件组件更加模块化和可
重用,减少了重复开发的工作量,提高了软件开发的效率。
02
面向对象分析的主要步骤
问题识别
总结词
明确问题的本质和范围
详细描述
在面向对象分析中,问题识别是首要步骤,它要求对问题进行深入理解和明确, 包括确定问题的范围、目标、限制条件等,以便为后续的分析和设计工作提供 清晰的方向。
面向对象分析的优势与不足
过度抽象
面向对象分析有时会过度抽象,导致 系统过于复杂,难以理解和实现。
缺乏对系统流程的关注
面向对象分析更关注静态结构,可能 忽略系统流程和动态行为。
面向对象分析与传统分析方法的结合使用
在实际软件开发中,可以结合 面向对象分析和传统分析方法, 取长补短,提高软件开发的效
率和成功率。
05
面向对象分析与传统分析方法的 比较
传统分析方法的问题与挑战
缺乏对系统整体结构的考虑
传统分析方法往往只关注单个功能或模块,忽略了系统整体的结 构和关系。
难以处理复杂系统
对于复杂系统,传统分析方法难以有效地进行抽象和建模。
难以维护和扩展
由于缺乏整体结构和面向对象的思维,传统分析方法构建的系统往 往难以维护和扩展。
对象是指系统中具有明确边界和状态 的结构,它可以包含数据和操作,并 且具有封装性、继承性和多态性等特 征。
面向对象的基本特征
封装
封装是将对象的属性和操作封装 在一起,形成一个独立的实体, 对外隐藏内部实现细节,只通过 接口与外界交互。
继承
继承是指子类可以继承父类的属 性和方法,并且可以扩展或修改 它们,从而实现代码的重用和扩 展。
软件工程ppt课件第10章面向对象分析

§3.建立 Object Model
⑤派生关联:即可用其它关联定义的冗余关联
总行拥有多台ATM 分行提供分行计算机和柜员终端 储户拥有账户 总行由各个分行组成 分行保管账户 总行拥有中央计算机 现金兑换卡访问账户 储户拥有现金兑换卡 分行雇用柜员
分行计算机处理事务 分行计算机维护账户 柜员终端与分行计算机通信 柜员输入事务 事务修改账户 ATM与中央计算机通信 在ATM上输入事务 中央计算机确定事务与分行的对应关系
④标明阶数(可能经常变动,不要花太多时间)
中央计算机
分行计算机
现金兑换卡
总 行
分 行
拥有
分行 代码
组成
通信
1+
通信
拥有
柜员终端
柜员事务
分 行
通信
1+
1+
拥有
1+
雇用
输入
1+
1+
输入
账 户
修改
1+
储 户
保管
1+
拥有
1+
远程事务
ATM
拥有
1+
1+
1+
访问
1+
1+
修改
授权
1+
输入
1+
§3.建立 Object Model
筛选时依下列标准删除:
、通信链路、事务日志
冗余
无关
笼统
属性
操作 既可为名词又可为动词的词,应慎重考虑。
实现
第1步:收集 ——
§3.建立 Object Model
2、确定关联 结构层
① 需求陈述中涉及objets的动词短语:
什么是面向对象「什么是面向对象分析方法」

什么是面向对象「什么是面向对象分析方法」面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象其实是现实世界模型的自然延伸现实世界中任何实体都可以看作是对象对象之间通过消息相互作用另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例如果说传统的面向过程式编程语言是以过程。
在我理解,面向对象是向现实世界模型的自然延伸,这是一种“万物皆对象”的编程思想在现实生活中的任何物体都可以归为一类事物,而每一个个体都是一类事物的实例面向对象的编程是以对象为中心,以消息为驱动,所以程序=对。
面向对象是指一种程序设计范型,同时也是一种程序开发的方法对象指的是类的集合它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性灵活性和扩展性起初,“面向对象”是专指在程序设计中采用封装。
面向对象相比于面向过程,是两种不同的处理问题的角度面向过程更注重事情的每一个步骤和以及顺序,面向对象更注重事件有哪些参与者,以及各自需要什么比如洗衣机洗衣服,面向过程将会把任务解析成一系列步骤,打开洗衣机放。
面向对象Object Oriented,OO是当前计算机界关心的重点,它是90年代软件开发方法的主流面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围如数据库系统交互式界面应用结构应用平台分布式系统网络管理结构CAD。
你好面向对象就是指把一个应用程序看成是由许多“对象object”组成的,然后去对这些对象编程,让它们具有一定的功能类是具有相同或相似性质的对象的抽象就是类因此,对象的抽象是类,类的具体化就是对象,也可以说。
面向对象如果我没记错的话应该是一门Java语言吧,我记得上大学学计算机的时候学过一点,当然不是计算机专业的,学的水过地皮湿,都是点皮毛而已,具体的你可以找一下计算机相关方面的书来看一下。
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在。
第十章 C++ 基础

华厦职业学院
C语言程序设计
其中public是成员的属性说明,表示公有成员, 类的成员还可以声明为private(私有成员)或 protected(保护成员),不同属性的成员在访问时 规则不同。 类定义好之后,可以像结构那样定义变量,方 法是: 类的名称 变量名称;
华厦职业学院
C语言程序设计
在C++中类定义的变量称为对象(object),在定 义对象时,也可以用类名来定义类变量的指针,注 意在使用时类名称之前不写class。例如: time t; // t是类time的一个对象; time *pt; // pt是一个指向类对象的指针
华厦职业学院
C语言程序设计
关于成员函数,有以下规则: (1) 成员函数是类的函数,不能独立执行,必须要 用一个对象或对象指针来调用执行,什么对象调用 成员函数,成员函数就作用于什么对象,既成员函 数的执行结果依赖于具体的对象; (2) 成员函数中可以存取同一个类中的成员变量, 这些成员变量就是相应对象的成员变量;成员函数 也可以调用同一个类中的其它成员函计
10.3
构造函数与析构函数
10.3.1 构造函数 用类来定义对象变量时,往往需要让对象有一个初始值, 完成这种功能的函数就是构造函数。构造函数是与类同名的 函数,但函数没有任何返回类型,也不是void类型,例如: class time { public: int h,m,s; time() { h=0; m=0; s=0; } void set(int th,int tm,int ts) { h=th; m=tm; s=ts; } void show(); };
华厦职业学院
C语言程序设计
10.1 类与对象 10.2 this指针 10.3 构造函数与析构函数 10.4 引用与复制构造函数 10.5 动态内存分配 10.6 类成员的访问规则 10.7 对象的赋值 10.8 运算符重载
C--程序设计--第10章-多态性及虚函数

使用重载函数注意:
不要使用重载函数描述不相干的函数 在类中,构造函数和普通成员函数均可以
重载 避免与函数的默认参数产生二义性
二、运算符重载
运算符重载(operate overloading)就是 赋予已有的运算符多重含义。
运算符重载实质是函数重载,运算符重载 的选择与函数重载类似,会根据运算符的 操作数的类型、个数和顺序来进行运算符 函数的选择。
#include<iostream.h> str#iinngc:l:usdter<isntgr(icnhga.rh>*s) v{}ossccsssc{s{{ittohtttolsstlsssls*drruarrrueptrepttepsi1trii3tc{pn=rin=rrn=pmn.<nn.<lprgncngncign=agp<*ggp<auitepgtepnte'irssrssbv\hwy:hwyghwnsit1ssitsla0=(:=(:=(tnr=ttnrit'scssscs:sc)rt1"rrt3scesss~ivci;thpt1hpsih1(.T23(.t::tttsnohn}ra,r.a,tza()gh(()grrrrttiatlrsilrsrer";eass;eiiiirdre[)ne[1i;[Ttt1ttnnnniglnl;gnl.nlhl)rlggggnep*e(e}(gesgeiei;2e(((gtrsnsnstnp(nsns)ncsi(lipg)gthg)ig(;(htn)en;t;tr;t;nti)a)artnthhih}ths<<ri{((;+n++<p<snd))}1g1s1aere*ige;]]i]nonszl{{;&;z;ddgd)&eercseelrl;s=teo1)m;a;/18etu)om/)0ut..;)构sr<""/;pn<造);//;s;/复}lp函构e<制n<数造ge构tn函hd造;l数};重} 载
第10章 面向对象分析

第10章 面向对象分析
第10章 面向对象分析
• 面向对象软件开发技术
– 面向对象分析(OOA) – 面向对象设计(OOD) – 面向对象实现(OOP)
面向对象技术是一个有全新概念 的开发模式,其特点是:
(1)方法是对软件开发过程所有阶段进 行综合考虑而得到的; (2)从生存期的一个阶段到下一个阶段 所使用的方法与技术具有高度的连 续性;
取消交易
顾客可在按下选择键前任何一个时刻,拉动退币杆取 消交易收回硬币。
自动售货系统系统
-端1 * -端2
自动售货系统::售货
*
顾客
-端2
-端1 *
自动售货系统::供货
*
供货人
-端1 * -端2
自动售货系统::取货款
*
收银员
自动售货系统系统
-端1 *
-端2
售货
*
<<extends>>
售散装饮料
顾客
• 业务中的执行者扮演什么角色?这些角色可以 看作类,如客户、操作员等。
(2)筛选对象类,确定最终对象类 我们可以用以下选择特征来确定最终的对象: 1) 保留的信息:仅当必须记住有关潜在对象的 信息,系统才能运作时,则该潜在对象在分 析阶段是有用的; 2) 需要的服务:潜在对象必须拥有一组可标识 的操作,它们可以按某种方式修改对象属性 的值; 3) 多个属性:在分析阶段,关注点应该是“较 大的”信息(仅具有单个属性的对象在设计 时可能有用,但在分析阶段,最好把它表示 为另一对象的属性);
定义服务
• 对象=属性+操作(服务) • 因为在动态模型和功能模型中更明确地描 述了每个类中应该提供哪些服务,所以在 建立了这两个模型后才能最终确定类中应 有的服务。 • 事实上,在确定类中应有的服务时,既要 考虑该类实体的常规行为,又要考虑在本 系统中特殊需要的服务。
张海藩《软件工程导论》(第6版,清华大学出版社)(考研用)辅导书 第(10-13)章【圣才出品】

十万种考研考证电子书、题库视频学习平台
第 10 章 面向对象分析
10.1 复习笔记
一、面向对象分析的基本过程 1.概述 (1)定义 面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。 (2)过程 ①分析陈述用户需求的文件; ②深入理解用户需求,抽象出目标系统的本质属性; ③用模型准确地表示。 (3)目的 全面深入地理解问题域和用户的真实需求,建立问题域的精确模型。
2.信息来源 需求陈述、应用领域的专业知识、客观世界的常识是建立对象模型时的主要信息来源。
3.建立对象模型的步骤 (1)确定类与对象。 ①找出候选的类与对象; ②筛选出正确的类与对象。 (2)确定关联。 【注意】在分析确定关联的过程中,不必花过多的精力去区分关联和聚集,聚集是一种 特殊的关联。 (3)划分主题。 (4)确定属性。 (5)识别继承关系。 (6)反复修改。
5.画状态图 (1)定义 状态图描绘事件与对象状态的关系,它确定了由事件序列引出的状态序列。 (2)方法 ①仅考虑事件跟踪图中指向某条竖线的那些箭头线。把这些事件作为状态图中的有向 边,边上标以事件名。 ②给每个状态取个有意义的名字。 ③根据一张事件跟踪图画出状态图后,再把其他脚本的事件跟踪图合并到该图中。 ④考虑完正常事件后再考虑边界情况和特殊情况,包括在不适当时候发生的事件。
十万种考研考证电子书、题库视频学习平台
复杂问题的对象模型由 5 个层次组成,如图 10-1 所示。
图 10-1 复杂问题的对象模型的 5 个层次
二、需求陈述 1.内容 (1)阐明“做什么”而不是“怎样做”。 (2)描述用户的需求而不是提出解决问题的方法。 (3)指出哪些是系统必要的性质,哪些是任选的性质。 (4)避免对设计策略施加过多的约束,不描述系统的内部结构。
第10章 C++语言的输入与输出-面向对象程序设计(C++语言)(第二版)-程磊-清华大学出版社

设置状态标志flags 清楚状态标志,并返回前状态标志 测试状态标志 设置标志flags, 并返回前状态标志 返回当前的宽度设置值 设置域宽w,返回以前的设置 设置小数位数p,返回以前的小数位数 返回当前的填充字符 设置填充字符ch,返回当前的填充字符
13
下面分别介绍这些成员函数的使用方法;
(1)设置状态标志:
cout<<”x_width=”<<cout.width( )<<endl; cout<<”x_fill=”<<cout.fill ( )<<endl; cout<<”x_precision=”<<cout.precision( )<<endl; cout<<123<<” ”<<123.45678<<endl; cout<<”______________________________\n”; cout<<”*** x_width=10,x_fill=, x_precision=4 ***\n”; cout.width(10); cout.precision(4); cout<<123<<” ”<<123.45678<<” ”<<234.567<<endl;
1. C++的流概述 ❖ 在C++中,输入输出流被定义为类,称为流类。 ❖ I/O 系 统 仍 然 是 以 字 节 流 的 形 式 实 现 的 , 流
(Stream)实际上就是一个字节序列,流总是 与某一设备相联系的,它既可以从输入设备 (如键盘、磁盘等)流向计算机内存,亦可以 从计算机内存流向输出设备(如显示器、打印 机、磁盘等)。 ❖ 输入输出的字节可以是ASCII字符、内部格式 的原始数据、图形图像、数字音频、视频等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第10章面向对象分析10.1面向对象分析的基本过程不论采用哪种软件工程方法开发软件,需求分析的主要工作都是:理解需求、表达需求和验证需求,下面的图概括地表示了参照当前系统建立目标系统的过程。
图:参照当前系统建立目标系统面向对象分析(Object-Oriented Analysis,简称OOA)的关键就是识别出对象与类,并分析它们之间的关系,最终建立对象模型、动态模型和功能模型。
10.1.1 概述系统分析员要善于学习、勇于实践,更重要的是一切从实际出发。
[[注注]]“OOA 就是抽取和整理用户需求并建立问题域精精确确模模型型的过程。
”(P231)——这在一开始能做到吗?——扯蛋10.1.2 3个子模型与5个层次面向对象建模需建立包含系统的三个要素:1)静态结构(对象模型)、2)交互次序(动态模型)、3)数据交换(功能模型)。
建立系统模型的过程是一个迭代(iterations )式的自顶向下的求精过程。
对于一个大型复杂系统来说对对象象模模型型一般由下述5个层次组成:图10.2 复杂问题的对象模型的5个层次其中主题层是指从一个更高(高于“类”)的抽象层次来描述对象模型(即从一个相当高的层次上描述总体模型),通过划分“主题”把一个复杂系统的对象模型分解成几个不同的概念范畴。
其实上述5个层次就是OOA中建立对象模型的5项主要工作:找出类和对象,识别结构(类或对象之间的关系),识别主题、定义属性、定义服务。
我们知道动态模型和功能模型中都包含了对象模型中的操作,因此人们在定义每个类中的服务前,往往先建立起动态模型和功能模型,这样说来OOA大体上可按下列顺序进行:(1)确定类和对象(2)确定关联(3)划分主题(4)定义属性(5)确定继承关系(6)建立动态模型(7)建立功能模型(8)定义服务需要注意地是在这里我们根本不强调顺序,更不是谈什么步骤。
10.2需求陈述需求陈述的主要任务是准确地回答“系统必须做什么?”,而不是“系统应该怎么做?”10.2.1书写要点10.2.2例子我们用“ATM系统”(ATM是Automatic Teller Machine的缩写,意即自动柜员机)的开发作为OOA&OOD的实例。
图10.2ATM 系统10.3建立对象模型10.3.1确定类与对象1. 找出候候选选的类与对象(例:P236 ATM 系统)一般来说,大千世界中的客观事物可分为5类:1)可感知的物理实体,如:飞机,汽车,房屋2)人或组织的角色,如:教师,医生,计算机系,学生处3)应该记忆的事件,如:飞行,演出,访问,交通事故4)对象的相互作用,如:购买,结婚,纳税5)概念,如:政策,刑法,泛化,集合2. 筛选出正确的类与对象我们需要确定的类与对象是:(1) 应该记录的对象(2) 需要它提供服务的对象同时要关注下述6个方面:1) 冗余: 去掉冗余的类(如“用户”)2) 无关: 去掉无关的类(如“储蓄所”)3) 笼统: 去掉笼统的类(如“银行”)4) 属性: 区分属性和类(某个性质若具有很强的独立性应当作为“类”)5) 操作: 区分操作和类(本身具有属性且需独立存在的“操作”应当作为“类”)6) 实现: 忽忽略略实实现现内内容容(应当去掉仅和实现有关的“类”,如“事务日志”)10.3.2确定关联对象之间的相互依赖、相互作用的关系就是关联。
在分析的起始阶段,我们不必花过多的精力去区分关联和聚集,聚集不过是一种特殊的关联,是关联的一个特例。
1. 初步确定关联通过分析动词词组我们可以得出大多数关联(例:P238 ATM 系统)2. 筛选筛选时要关注下述5个方面:1)已删去的类之间的关联也要删除2)无关的或在在实实现现阶阶段段考考虑虑的的关关联联要要删删除除3)描述瞬时事件的关系不应作为关联(关联应该描述问题域的静态结构)4)三个或三个以上对象的关联要作分解或描述成限定关联5)冗余关联要删除3. 进一步完善完善时要关注下述4个方面:1)正名:选择更明确的名字作为关联名2)分解:分解已确定的类以适用关联3)补充:及时补充遗漏关联4)标明重数:但无需花过多精力图10.3ATM系统原始的类图10.3.3划分主题按问题领域而不是用功能分解来高度概括主题10.3.4确定属性属性是类中所定义的数据,它表明了对象的性质。
一般来说,确定属性的过程包括分析和选择两个步骤:1. 分析通常用名词词组表示属性,如:“汽车的颜色”、“光标的位置”,而用形容词表示可枚举的具体属性,如:“红色的”、“白色的”。
在分析阶段应该仅考虑与具体应用直接相关的属性,而不不要要考考虑虑那那些些纯纯粹粹用用于于实实现现的的属属性性。
2. 选择选择时要关注下述6个方面:1) 区分对象与属性(仅关注其值的是属性);2) 区分关联类属性与对象属性(例:依赖某个关联链的性质是关联类属性);3) 区分限定词和属性(能用限定词更好)4) 区分内部状态和属性(例:某性质是对象的内部状态)5) 忽略无影响的属性(在分析阶段应该忽略对大多数操作无影响的属性)6) 注意属性的相关性(分解该“类”)图10.4ATM系统对象模型中的属性10.3.5识别继承关系确定了类中的属性之后,就可以利用继承机制共享公共性质,并对众多的类重新加以组织。
一般来说,可以应用两种方式建立继承(即泛化)关系:(1)自底向上:抽象出现有类的共同性质泛化出父类;(2)自顶向下:把现有类细化成更具体的子类。
图10.5带有继承关系的ATM对象模型10.3.6反复修改对象模型的建立是一个反复修改、逐步完善的迭代过程。
对于初学者来说,可尝试用面向对象方法开发几个较小系统,取得一定的经验后,再总结更适合自己的工作方式。
1. 分解“现金兑换卡”类2. “事务”由“更新”组成3. 把“分行”与“分行计算机”合并图10.6修改后的ATM对象模型10.4建立动态模型一般来说,建立动态模型的典型步骤如下:(1)编写脚本,确保不遗漏正常的交互行为;(2)从脚本中提取事件,确定每个事件的发送对象(触发该事件动作的对象)和接受对象;(3)画事件跟踪图(Sequence Diagram,时序图或顺序图,描述对象之间的时间顺序)(4)画状态图(5)审查状态图的完整性和一致性10.4.1编写脚本脚本是指系统在某一执行期间内出现的一系列事件(脚本描述事件序列,是用例的实例,是系统的一种实际使用方法。
),它描述用户(或其它外部设备)与系统之间的交互过程;对于每个事件,脚本都应该指明触发该事件的动作对象(如:系统、用户或其它外部事物)、接受事件的目标对象,以及该事件的参数。
[目的]编写脚本的目的是保证不遗漏重要的交互步骤。
[实质] 编写脚本的实质是分析用户对与系统交互过程的要求。
编写脚本时,首先编写正常情况的脚本,其次考虑特殊情况,最后考虑出错情况;如有可能还应该允许用户“异常操作”。
此外还应该提供“在线帮助”、状态查询等在基本交互行为之上的“通用”交互行为。
10.4.2设想用户界面用户界面是用户对系统的“第一感”,它往往对用户是否喜欢一个系统起很重要的作用,因此在分析阶段也不能完全忽略用户界面。
设计用户界面时重要的是用户和系统进行信息交换的方式。
图10.7 ATM的界面格式10.4.3画事件跟踪图脚本为建立动态模型(状态图)提供了很好的基础,但用自然语言书写的脚本还不够简明,并且会有二义性,因此在画状态图前,我们往往先画出事件跟踪图[简化的UML顺序图(Sequence Diagram,时序图)],为此需进一步明确事件(事件就是引起系统做动作或(和)转换状态的控制信息)及事件与对象的关系。
1. 确定事件事件包括系统与用户(或外部设备)交互的所有信号、输入、输出、中断、动作等,要注意的是(1)对象的动作也是事件;(2)对控制流产生相同效果的那些事件应作为一类事件。
经过分析要确定每类事件的发送对象和接受对象。
2. 画出事件跟踪图从脚本中提取出各类事件,并确定每类事件的发送对象和接受对象,就可以用事件跟踪图把事件序列以及事件与对象的关系表示出来,事件跟踪图是扩充的脚本,更是简化了的UML顺序图。
图10.8ATM系统正常情况脚本的事件跟踪图(时序图)10.4.4画状态图状态图描述了事件与对象状态(对象生命周期中的阶段)的关系。
UML用状态图来表示对象的动态行为,它确定了由事件序列引出的状态序列。
系统分析员应仅考虑系统内具有重要交互行为的哪些类,即每个主动发送事件的对象类的动态行为用一张状态图来表示,各个类的状态图通过共享事件合并起来,从而构成系统的动态模型。
从一张事件跟踪图出发画状态图时,要关注影响一类对象的事件,即考虑指向某条竖线(对象)的箭头线,把这些事件作为状态图中的有向边(箭头线),边上标以事件名,两个事件之间的间隔就是一个状态。
图10.9 ATM类的状态图图10.10总行类的状态图图10.11分行类的状态图10.4.5审查动态模型各个类的状态图通过共享事件合并起来,就构成了系统的“动态模型”,应该细致审查动态模型的完整性和一致性10.5建立功能模型功能模型表明了系统中数据之间的依赖关系,以及有关的数据处理功能,它由一组DFD组成,其中处理功能可以用IPO图(或表)、伪码等描述。
10.5.1画出基本系统模型图[最高层的DFD]图10.12ATM系统的基本系统模型10.5.2画出功能级数据流图图10.13ATM系统的功能级数据流图10.5.3描述处理框功能10.6定义服务对象是由描述其属性的数据,以及可以对这些数据施加的操作,封装在一起构成的独立单元。
在确定类中的操作时,既要考虑该类实体的常规行为,又要考虑本系统中特殊的服务。
1.常规行为在分析阶段可以认为,类中定义的每个属性都是可以访问的,也就是类中已经定义了读、写该类每个属性的操作,而无需显式表示这些常规操作。
2. 从事件导出的操作状态图中若有发往对象的事件,该对象必须要有相应的操作。
3. 与数据流图中处理逻辑对应的操作DFD中的每个处理逻辑都与一个对象(或几个对象)上的操作相对应。
4. 利用继承减少冗余操作应尽量利用继承机制减少所需定义的操作。
10.7小结习题101. 用面向对象方法分析研究本书习题2第2题中描述的储蓄系统,试建立它的对象模型、动态模型和功能模型。
2. 用面向对象方法分析研究本书习题2第3题中描述的机票预订系统,试建立它的对象模型、动态模型和功能模型。
3. 用面向对象方法分析研究本书习题2第4题中描述的患者监护系统,试建立它的对象模型、动态模型和功能模型。
4. 下面是自动售货机系统的需求陈述,试建立它的对象模型、动态模型和功能模型:。