《面向对象分析与设计》习题及部分答案
第一章 概论
1. 什么是面向对象方法?面向对象的基本原则主要有哪些?
答:
面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态
性等概念来构造系统的软件开发方法。
面向对象方法的解决问题的思路是从现实世界中的客观对象(如人和事物)
入手,尽量运用人类的自然思维方式来构造软件系统, 这与传统的结构化方法从
功能入手和信息工程化方法从信息入手是不一样的。
面向对象的基本思想主要有:
1) 从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域
(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物
的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成
单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系
的本来面貌 (对象 )
2) 用对象的属性表示事物的性质; 用对象的操作表示事物的行为。 (属性与
操作)
3) 对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外
屏蔽其内部细节。(对象的封装)
4) 对事物进行分类。把具有相同属性和相同操作的对象归为一类,类是这
些对象的抽象描述,每个对象是它的类的一个实例。
(分类)
5) 复杂的对象可以用简单的对象作为其构成部分。 (聚合)
6) 通过在不同程度上运用抽象的原则 ,可以得到较一般的类和较特殊的类。
特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档。
(继承)
7) 对象之间通过消息进行通讯,以实现对象之间的动态联系。
8) 通过关联表示类 (一组对象 )之间的静态关系。(关联)
(消息)
2. 与传统开发方法比,面向对象方法有什么优点?
答:
面向对象方法的解决问题的思路是从现实世界中的客观对象(如人和事物)
入手,尽量运用人类的自然思维方式来构造软件系统, 这与传统的结构化方法从
功能入手和信息工程化方法从信息入手是不一样的。
与传统方法相比,面向对象的方法主要优点有:
1) 从认识论的角度可以看出,面向对象方法改变了人们认识世界的方式;
2) 语言的发展 ——鸿沟变窄;
3) 面向对象方法使得从问题域到计算机间的鸿沟变窄;
4) 面向对象方法有助于软件的维护与复用;
1
(1)把易变的数据结构和部分功能封装在对象内并加以隐藏, 一是保证了对
象行为的可靠性; 二是对它们的修改并不会影响其他的对象, 有利于维护, 对需
求变化有较强的适应性。
(2)封装性和继承性有利于复用对象。把对象的属性和操作捆绑在一起,
提高了对象(作为模块)的内聚性,减少了与其他对象的耦合,这为复用对象提
供了可能性和方便性。 在继承结构中, 特殊类对一般类的继承, 本身就是对一般
类的属性和操作的复用。
5) 面向对象方法有助于提高软件的质量和生产率。
第二章 什么是面向对象分析
3. 简述 OOA 模型及 OOA 过程。
答:
OOA 模型如下图所示:包括基本模型(类图) ,需求模型(用况图) ,辅助模型(顺序
图、活动图、状态图等)
OOA 模型
给出所有与问题
域和系统责任有
捕 获 与 描述 用
户 的 要求
需求模型
定义每个对
象类的属性
用况图
通过已定义的
关系描述对象
OOA 过程如下图所示:
一幅顺序图表现完成某一项特定功能的一
组对象之间的详细交互;一辐状态图描述
了一个对象的状态变迁。活动图描述了一
基本模型( 类图)
个服务的流程或业务流程。
辅助模型
顺序图
活动图
状态图
包图
……
对 关 系
密 切 的
元 素 打
包,帮助
理 解 系
对模型中
统模型。
的所有元
2
对象层
特征层
关系层
模型规约
2
各过程简单说明如下:
建立需求模型:即定义用况,是辅助模型,可选。用用况对用户需求进行规
范化描述。
建立类图:基本模型,主要完成任务包括:
* 发现对象、定义对象类
* 识别对象的内部特征
* 识别对象的外部关系
原型开发:可选,结合其他活动反复进行。
建立交互图、状态图和活动图等:是辅助模型,可选。
建立模型规约或详细说明:对模型中的成分进行规范的定义和文字说明。可
以集中进行,也可分散在各个活动中。
以上各个 OOA 过程总体来说是一个反复进行,不断完善的过程,以建立基
本模型为中心,进行需求模型、基本模型、辅助模型的建立、修改与完善。
4. 简述问题域与系统责任间的关系。
第三章 用况图
5. 简述用况之间的包含关系、扩展关系与继承关系。
答:
1)包含关系
基用况在它内部说明的某一(些)位置上显式地使用供应者用况的行为的结
果。
2)扩展关系
3
按基用况中指定的扩展条件, 把扩展用况的行为插入到由基用况中的扩展点
定义的位置。
3)继承
子用况继承父用况的行为和含义;子用况还可以增加或覆盖父用况的行为;
子用况可以出现在父用况出现的任何位置(父和子均有具体的实例) 。
三种关系图例如下:
包含关系
基用况
供应者
《 include 》
扩展关系
基用况
扩展用况
《 exclude 》
继承关系
一般用况
特殊用况
6. 论述用况图在面向对象方法中的地位。
答:
用况图主要用于对系统 (子系统 )的功能行为进行建模。画出用况图及描述用
况是需求分析阶段的主要任务。
建立用况图的主要益处有:
? 通过表示在语境中参与者如何与系统交互, 使得系统、子系统和类对于用
户和开发者易于探讨和理解。
? 易于对需求规范化
? 有利于进行 OOA
? 有助于发现主动对象
? 对系统测试来说,产生测试用例。
? 有助于人机界面设计
? ……
7. 通常自动售货机会按用户的要求进行自动售货。供货员会巡查向其内供货,
取款员会定时取款。请建立用况图,并描述各个用况,建立类图。
答:
(1)用况图
4
自动售货机系统
售货
供货
取货款
顾客
供货人
取款员
(2) 用况简单描述:
售货:
【前置条件】自动售货机系统启动成功,显示主界面,提示用户选择操作;
顾客选择购物;
选择商品;
系统提示购物清单列表及总价;
顾客确认后,投币;
系统验证金额;
如正确,则吐出商品。
如金额不足,则退回钱币,提示金额不足。
顾客确认后或超时( 30 秒无操作);
系统返回主界面。
供货:
【前置条件】自动售货机系统启动成功,显示主界面,提示用户选择操作;
供货人选择供货;
系统提示供货人输入用户名和密码;
供货人输入用户名和密码;
系统进行验证,如通过则打开供货门,给出供货界面,否则显示输入错
误;
如通过,供货人可放入货品,并输入单价及数量;
系统确认后,显示供货成功。
供货人确认后或超时( 30 秒无操作);
系统返回主界面。
取货款:
5
【前置条件】自动售货机系统启动成功,显示主界面,提示用户选择操作;
取款员选择取款;
系统提示取款员输入用户名和密码;
取款员输入用户名和密码;
系统进行验证,如通过则打开款箱,否则显示输入错误;
如通过,取款员取款;
系统确认后,显示取款成功。
取款员确认后或超时( 30 秒无操作);
系统返回主界面。
(3)类图
1..*
购买
1..*
订单
订单号
订单时间
订单明细
订单金额
支付状态
生成订单
支付订单
取消订单
供货员
帐户名称
帐户密码
身份验证
商品
商品编号
商品名称
单价
数量
供货
出货
1..*
供货
1..*
供货记录
供货编号
时间
明细
生成供货
记录
顾客
1
付款
1..*
货款
金额
取款
付款
1 1..*
取款
取款员
帐户名称
帐户密码
身份验证
第四章 类图
8. 用关联类为公司和雇员之间的薪水关系建模。
答:
6
公司
雇员
1..*
雇主
1..*
职工
工作
公司工龄
薪水
9. 为人们之间的婚姻关系建模。
答:
0..1
人
性别
婚姻
0..1
10. 论述类与对象之间的关系 . 关联与链之间的关系。
答
实例
是对象的集合;对象是类的具体实例。
:
类
关联是建立类之间关系的一种手段, 而链则
链表示对象间的物理与概念联结,关联表示类之间的一种关系,链是关联的
,关联是链的抽象。
是建立对象之间关系的一种手段。
11. 包是由面包片组成的。讨论面包及其切片之间的关系是聚合还是组合。
面
答
:
包与面包片之间是组合关系。因为面包与面包片是整体与部分的关系,如
面
包没有了,面包片也就没有了。
果面
7
聚合和组合的区别在于生命周期。组合中,随着 A 类的生命周期结束, B,C
束。必须在 A 类里面使用。聚合中,随着 A 类的生命周期结束, B,C 不一
也结
定结束。因此,面包与面包片之间是组合关系。
12. 对下述问题,建立一个类图:有两种顾客,一种是常客,享受公司的一些
针
优惠待遇;另一种是散户。
第
五章 建立辅助模型
1
3. 使用信用卡可以在 AMT 机上进行取款,针对一次取款,建立类图、顺序图。
注意 ATM 机是与银行连网的。
要求:
(1)绘
(2)绘制顺序图
制一个类图(不要过于复杂)
答:
(1)
类图
略
(
2) 顺序图
8