ds
目录
2007 年上半年................................................................................................................................... 3
设计题(共 15 分) .......................................................................................................................... 3
某图书管理系统的主要功能如下:........................................................................................3
编码题................................................................................................................................................ 5
某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的
发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征 ........................... 5
2007 年下半年................................................................................................................................... 6
设计题................................................................................................................................................ 6
已知某唱片播放器不仅可以播放唱片,而且可以连接电脑并把电脑中的歌曲刻录到唱片
上(同步歌曲)。连接电脑的过程中还可自动完成充电。 ..................................................6
编码题................................................................................................................................................ 7
已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来
审批,主任可以审批 5 万元以下(不包括 5 万元)的采购单,副董事长可以审批 5 万元
至 10 万元(不包括 10 万元)的采购单,董事长可以审批 10 万元至 50 万元(不包括
50 万元)的采购单,50 万元及以上的采购单就需要开会讨论决定。............................. 7
2008 上半年...................................................................................................................................... 9
设计题................................................................................................................................................ 9
某汽车停车场欲建立一个信息系统,已经调查到的需求如下:....................................... 9
编码题...............................................................................................................................................11
已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器
的开与关。.............................................................................................................................. 11
2008 年 下半年............................................................................................................................... 13
设计题.............................................................................................................................................. 13
在线会议审稿系统(ORS:OnlineReviewing System)主要处理会议前期的投稿和审稿
事务,其功能描述如下:
13
编码题.............................................................................................................................................. 15
已知某类库开发商提供了一套类库,类库中定义了 Application 类和 Document 类,它
们之间的关系如图 7-1 所示,其中,Application 类表示应用程序自身,而 Document 类
则表示应用程序打开的文档。Application 类负责打开一个已有的以外部形式存储的文
档,如一个文件,一旦从该文件中读出信息后,它就由一个 Document 对象表示。 15
2009 年上半年................................................................................................................................. 16
设计题.............................................................................................................................................. 16
某 银 行 计 划 开 发 一 个 自 动存 提 款 机 模 拟 系 统 (ATM System )。 系 统 通 过 读 卡 器
CardReader ) 读 取 ATM 卡 ; 系 统 与 客 户 ( Customer ) 的 交 互 由 客 户 控 制 台
(CustomerConsole)实现: ................................................................................................. 16
1
编码题.............................................................................................................................................. 18
现欲实现一个图像浏览系统,要求该系统能够显示 BMP、JPEG 和 GIF 三种格式的文
件,并且能够在 Windows 和 Linux 两种操作系统上运行。 .........................................18
2009 年下半年................................................................................................................................. 19
设计题 .............................................................................................................................................. 19
某企业为了方便员工用 餐,为餐厅开发了一个 订餐系统(COS:Cafeteria Ordering
.................................................................................................................................................. 19
编码题.............................................................................................................................................. 21
现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图......... 21
2010 年上半年................................................................................................................................. 22
设计题.............................................................................................................................................. 22
某运输公司决定为新的售票机开发车票销售的控制软件 ..................................................22
编码题.............................................................................................................................................. 25
某软件公司欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与
起飞特征 .................................................................................................................................. 25
2010 年下半年................................................................................................................................. 26
设计题.............................................................................................................................................. 26
某网上药店允许顾客凭借医生开具的处方,通过网络在该药店购买处方上的药品。该网上
药店的基本功能描述如下:.....................................................................................................27
编码题.............................................................................................................................................. 28
某公司的组织结构图如图 5-1 所示,现采用组合(Composition)设计模式来构造该公司
的组织结构,得到如图 5-2 所示的类图。 ...........................................................................28
2011 年上半年................................................................................................................................. 30
设计题.............................................................................................................................................. 30
一个简单的图形编辑器提供给用户的基本操作包括:创建图形、创建元素、选择元素以
及删除图形.............................................................................................................................. 30
2011 年下半年................................................................................................................................. 30
设计题.............................................................................................................................................. 30
Pay&Drive 系统 ....................................................................................................................... 30
编码题.............................................................................................................................................. 30
某大型商场内安装了多个简易的纸巾售卖机......................................................................30
2
设计题(共 15 分)
2007 年上半年
阅读下列说明和图,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
[说明]
某图书管理系统的主要功能如下:
1.图书管理系统的资源目录中记录着所有可供读者借阅的资源,每项资源都有一个唯一的索引号。系
统需登记每项资源的名称、出版时间和资源状态(可借阅或已借出)。
2.资源可以分为两类:图书和唱片。对于图书,系统还需登记作者和页数;对于唱片,还需登记演唱
者和介质类型(CD 或者磁带)。
3.读者信息保存在图书管理系统的读者信息数据库中,记录的信息包括:读者的识别码和读者姓名。
系统为每个读者创建了一个借书记录文件,用来保存读者所借资源的相关信息。
现采用面向对象方法开发该图书管理系统。识别类是面向对象分析的第一步。比较常的识别类的方法
是寻找问题描述中的名词,再根据相关规则从这些名词中删除不可能成为类的名词,最终得到构成该系统
的类。表 3-1 给出了[说明]中出现的所有名词。
通过对表 3-1 中的名词进行分析,最终得到了图 3-1 所示的 UML 类图(类的说明如表 3-2 所示)。
3
[问题 1](3 分)
[问题 2](6 分)
表 3-2 所给出的类并不完整,根据[说明]和表 3-1,将图 3-1 中的(a)~(c)处补充完整。
根据[说明]中的描述,给出图 3-1 中的类 CatalogItem 以及(b)、(c)处所对应的类的关键属性(使
用表 3-1 中给出的词汇),其中,CatalogItem 有 4 个关键属性;(b)、(c)处对应的类各有 2 个关键属
性。
[问题 3](6 分)
识别关联的多重度是面向对象建模过程中的一个重要步骤。根据[说明]中给出的描述,成图 3-1 中的
(1)~(6)。
答案:
问题 1 资源目录 图书 唱片
问题 2 CatalogItem 的关键属性:索引号、名称、资源状态、出版时间
(b)的关键属性有:作者、页数
(c)的关键属性有:演唱者、介质类型
问题 3 (1)1 (2)0..* (3)1 (4)0..* (5)1 (6)1 或 0..1
4
编码题
阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞
行特征和外观特征。游戏需要模拟的鸭子种类及其特征如表 7-1 所示:
为支持将来能够模拟更多种类鸭子的特征,采用策略设计模式(Strategy)设计的类图如图 7-1 所示:
其 中 ,Duck 为 抽 象 类 , 描 述 了 抽 象 的 鸭 子 , 而 类 RubberDuck 、MallardDuck 、CottonDuck 和
RedHeadDuck 分别描述具体的鸭子种类,方法 fly()、quack()和 display()分别表示不同种类的鸭子都具有
飞行特征、发声特征和外观特征;接口 FlyBehavior 与 QuackBehavior 分别用于表示抽象的飞行行为与发
声行为;类 FlyNoWay 与 FlyWithWings 分别描述不能飞行的行为和用翅膀飞行的行为;类 Quack、Squeak
与 QuackNoWay 分别描述发出“嘎嘎”声的行为、发出橡皮与空气摩擦声的行为与不发声的行为。请填补
以下代码中的空缺。
[Java 代码]
(1) FlyBehavior {
public void fly();
};
(2) QuackBehavior {
public void quack();
};
class FlyWithWings implements FlyBehavior{
public void fly(){ System.out.println("使用翅膀飞行 !"); }
};
class FlyNoWay implements FlyBehavior{
public void fly(){ System.out.println("不能飞行 !" ); }
};
class Quack implements QuackBehavior{
};
class Squeak implements QuackBehavior{
public void quack(){ System.out.println("发出\'嘎嘎\'声 !" );
}
5
public void quack(){ System.out.println("发出空气与橡皮摩擦声 !"); }
};
class QuackNoWay implements QuackBehavior{
public void quack (){ System.out.println("不能发声 !" ); }
};
abstract class Duck {
protected FlyBehavior (3);
protected QuackBehavior (4) ;
public void fly(){ (5) ; }
public void quack() { (6) ; };
public (7) void display();
};
class RubberDuck extends Duck {
public RubberDuck(){
flyBehavior = new (8) ;
quackBehavior = new (9) ;
}
public void display(){ /* 此处省略显示橡皮鸭的代码 */
}
};
答案:
(1)
(6) flyBehavior.quack() (7) abstract (8) FlyNoWay (9) Squeak
interface (2)interface (3)flyBehavior(4) quackBehavior(5) flyBehavior.fly()
设计题
2007 年下半年
阅读下列说明和图,回答问题 1 至问题 4,将解答填入答题纸的对应栏内。
【说明】
已知某唱片播放器不仅可以播放唱片,而且可以连接电脑并把电脑中的歌曲刻录到唱片上(同步歌曲)。
连接电脑的过程中还可自动完成充电。
关于唱片,还有以下描述信息:
1.每首歌曲的描述信息包括:歌曲的名字、谱写这首歌曲的艺术家以及演奏这首歌曲的艺术家。只
有两首歌曲的这三部分信息完全相同时,才认为它们是同一首歌曲。艺术家可能是一名歌手或一支由 2 名
或 2 名以上的歌手所组成的乐队。一名歌手可以不属于任何乐队,也可以属于一个或多个乐队。
2.每张唱片由多条音轨构成;一条音轨中只包含一首歌曲或为空,一首歌曲可分布在多条音轨上;
同一首歌曲在一张唱片中最多只能出现一次。
3. 每条音轨都有一个开始位置和持续时间。一张唱片上音轨的次序是非常重要的,因此对于任意一
条音轨,播放器需要准确地知道,它的下一条音轨和上一条音轨是什么(如果存在的话)。
根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表 3-1 所示的类列表、如图 3-1 所
示的初始类图以及如图 3-2 所示的描述播放器行为的 UML 状态图。
表 3-1 类列表
类 名
Artist
Song
Band
Musician
Track
Album
1
A
1
编写
演奏
C
(1)
(2)
6
D
说 明
艺术家
歌曲
乐队
歌手
音轨
唱片
0..*
0..*
B
(3)
(4)
E
(5)
(6)
图 3-1 初始类图
图 3-2 播放器行为 UML 状态图
根据说明中的描述,使用表 3-1 给出的类的名称,给出图 3-1 中的 A~F 所对应的类。
根据说明中的描述,给出图 3-1 中(1)~(6)处的多重度。
【问题 1】(3 分)
【问题 2】(6 分)
【问题 3】(4 分)
图 3-1 中缺少了一条关联,请指出这条关联两端所对应的类以及每一端的多重度。
类
多重度
【问题 4】(2 分)
根据图 3-2 所示的播放器行为 UML 状态图,给出从“关闭”状态到“播放”状态所经过的最短事件
序列(假设电池一开始就是有电的)。
答案:
问题 1 A .Artist B. Song C.Band D. Musician E. Track F. Album
问题 2 (1)0..* (2)2..* (3)0..1 (4)1..* (5)1..* (6)1
问题 3
Track
Track
问题 4 按任意键选择歌曲
0..1
0..1
编码题
阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可
以审批 5 万元以下(不包括 5 万元)的采购单,副董事长可以审批 5 万元至 10 万元(不包括 10 万元)的
采购单,董事长可以审批 10 万元至 50 万元(不包括 50 万元)的采购单,50 万元及以上的采购单就需要
开会讨论决定。
采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图 7-1 所示。
7
PurchaseRequest
+Amount: Float
+Number: Integer
+Purpose: String
采购单
Approver
-successor: Approver
+SetSuccessor(aSuccesssor: Approver)
+ProcessRequest(aRequest:PurchaseRequest)
批准者
Director
VicePresident
President
Congress
主任
副董事长
董事长
例会
图 7-1 设计类图
[Java 代码]
class PurchaseRequest {
double Amount;
int Number;
String Purpose;
// 一个采购的金额
// 采购单编号
// 采购目的
};
class Approver {
// 审批者类
Approver(){
void ProcessRequest(PurchaseRequest aRequest){
successor = null; }
if (successor != null){ successor. (1) ; }
void SetSuccessor(Approver aSuccesssor){ successor = aSuccesssor; }
(2) successor;
class Congress extends Approver {
public
void ProcessRequest(PurchaseRequest aRequest){
if(aRequest.Amount >= 500000){ /* 决定是否审批的代码省略 */ }
else (3) .ProcessRequest(aRequest);
public
public
public
public
public
}
public
private
};
};
}
};
class Director extends Approver {
};
class President extends Approver {
};
class VicePresident extends Approver {
public
void ProcessRequest(PurchaseRequest aRequest){ /* 此处代码省略 */
}
public
void ProcessRequest(PurchaseRequest aRequest){ /* 此处代码省略 */ }
public
void ProcessRequest(PurchaseRequest aRequest){ /* 此处代码省略 */ }
public class rs {
public static void main(String[] args) throws IOException {
Congress Meeting = new Congress();
VicePresident Sam = new VicePresident();
Director Larry = new Director();
President Tammy = new President();
// 构造责任链
Meeting.SetSuccessor(null);
Tammy.SetSuccessor( (5) );
Sam.SetSuccessor( (4) );
Larry.SetSuccessor( (6) );
8