面向对象例题.docx

上传人:b****6 文档编号:5105629 上传时间:2022-12-13 格式:DOCX 页数:19 大小:216.81KB
下载 相关 举报
面向对象例题.docx_第1页
第1页 / 共19页
面向对象例题.docx_第2页
第2页 / 共19页
面向对象例题.docx_第3页
第3页 / 共19页
面向对象例题.docx_第4页
第4页 / 共19页
面向对象例题.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

面向对象例题.docx

《面向对象例题.docx》由会员分享,可在线阅读,更多相关《面向对象例题.docx(19页珍藏版)》请在冰豆网上搜索。

面向对象例题.docx

面向对象例题

〔1〕阅读以下说明和图,完成问题1至问题4,并在答题纸上自行列表写出答案。

【说明】

在线会议审稿系统〔OnlineReviewingSystem,ORS〕主要处理会议前期的投稿和审稿事务,其功能描述如下:

〔1〕用户在初始使用系统时,必须在系统中注册〔register〕成为作者或审稿人。

〔2〕作者登录〔login〕后提交稿件和浏览稿件审阅结果。

提交稿件必须在规定提交时间范围内,其过程为先输入标题和摘要,选择稿件所属主题类型,选择稿件所在位置〔存储位置〕。

上述几步假设未完成,则重复;假设完成,则上传稿件至数据库中,系统发送通知。

〔3〕审稿人登录后可设置兴趣领域,审阅稿件给出意见,以及罗列录用和〔或〕拒绝的稿件。

〔4〕会议委员会主席是一个特殊的审稿人,可以浏览提交的稿件、给审稿人分配稿件、罗列录用和〔或〕拒绝的稿件,以及关闭审稿过程。

其中关闭审稿过程须包括罗列录用和〔或〕拒绝的稿件。

系统采用面向对象的方法开发,使用UML进行建模。

在建模用例图时,常用的方式是先识别参与者,然后确定参与者如何使用系统来确定用例,每个用例可以构造一个活动图。

参与者名称、用例和活动名称分别参见表1、表2和表3。

系统的部分用例图和提交稿件的活动图分别如图1和图2所示。

表1参与者列表

名称

说明

名称

说明

User

用户

Author

作者

Reviewer

审稿人

PCChair

委员会主席

表2用例名称列表

名称

说明

名称

说明

login

登录系统

Register

注册

submitpaper

提交稿件

Browsereviewresults

浏览稿件审阅结果

closereviewingprocess

关闭审稿过程

assignpapertoreviewer

分配稿件给审稿人

setpreferences

设定兴趣领域

enterreview

审阅稿件给出意见

listaccepted/rejectedpapers

罗列录用和/或拒绝的稿件

browsesubmittedpapers

浏览提交的稿件

表3活动名称列表

名称

说明

名称

说明

selectpaperlocation

选择稿件位置

uploadpaper

上传稿件

selectsubjectgroup

选择主题类型

sendnotification

发送通知

entertitleandabstract

输入标题和摘要

图1ORS的用例图

图2提交稿件过程的活动图

【问题1】〔4分〕

根据【说明】中的描述,使用表1中的英文名称,给出图1中A1~A4所对应的参与者。

【问题2】〔3分〕

根据【说明】中的描述,使用表2中的英文名称,给出图1中U1~U3所对应的用例。

【问题3】〔4分〕

根据【说明】中的描述,给出图1中〔1〕和〔2〕所对应的关系及其含义。

【问题4】〔4分〕

根据【说明】中的描述,使用表2和表3中的英文名称,给出图2中Action1~Action4对应的活动。

答案:

【问题1】〔4分〕

根据【说明】中的描述,使用表1中的英文名称,给出图1中A1~A4所对应的参与者。

A1

User〔1分〕

A2

Author〔1分〕

A3

Reviewer〔1分〕

A4

PCChair〔1分〕

【问题2】〔3分〕

注意:

U2和U3的答案可以互换。

根据【说明】中的描述,使用表2中的英文名称,给出图1中U1~U3所对应的用例。

U1

listaccepted/rejectedpapers〔1分〕

U2

browsesubmittedpapers〔1分〕

U3

assignpapertoreviewer〔1分〕

【问题3】〔4分〕

根据【说明】中的描述,给出图1中〔1〕和〔2〕所对应的关系及其含义。

〔1〕<>〔1分〕:

将常规动作放在一个基本UseCase中,将非常规动作放在其扩展UseCase中。

〔1分〕

〔2〕<>〔1分〕:

两个UseCase,如果其中一个在其事件流中包含了另一个,那么它们间就有包含关系。

〔1分〕

【问题4】〔4分〕

根据【说明】中的描述,使用表2和表3中的英文名称,给出图2中Action1~Action4对应的活动。

Action1

entertitleandabstract〔1分〕

Action2

selectsubjectgroup〔1分〕

Action3

selectpaperlocation〔1分〕

Action4

uploadpaper〔1分〕

〔2〕阅读以下说明和图,答复以下问题1至问题4,将答案填到答题纸的对应栏内。

【说明】

某汽车停车场欲建立一个信息系统,已经调查到的需求如下:

〔1〕在停车场的入口和出口分别安装一个自动栏杆、一台停车卡打印机/一台读卡器以及一个车辆通过传感器,示意图如图1所示。

图1自动停车场示意图

〔2〕当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡。

当驾驶员拿走停车卡后,系统命令栏杆自动抬起;汽车通过入口后,入口处的传感器通知系统发出命令,栏杆自动放下。

〔3〕在停车场内分布着假设干个付款机器。

驾驶员将在入口处获取的停车卡插入付款机器,并缴纳停车费。

付清停车费之后,将获得一张出场卡,用于离开停车场。

〔4〕当汽车到达出口时,驾驶员将出场卡插入出口处的读卡器。

如果这张卡是有效的,系统命令栏杆自动抬起;汽车通过出口后,出口处的传感器通知系统发出命令,栏杆自动放下。

假设这张卡是无效的,系统不发出栏杆抬起命令而发出告警信号。

〔5〕系统自动记录停车场内空闲的停车位的数量。

假设停车场当前没有车位,系统将在入口处显示“车位已满”信息。

这时,停车卡打印机将不再出卡,只允许场内汽车出场。

根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表1所示的用例/类/状态列表、如图2所示的用例图、如图3所示的初始类图,以及如图4所示的描述入口自动栏杆行为的UML状态图。

图2用例图

图3初始类图

图4入口自动栏杆行为的状态图

 

用例名

说明

类名

说明

状态名

说明

Carentry

汽车进入停车场

CentralComputer

停车场信息系统

Idle

空闲状态,汽车可以进入

Carexit

汽车离开停车场

PaymentMachine

付款机器

Disable

没有车位

ReportStatistics

记录停车场的相关信息

CarPark

停车场,保存车位信息

AwaitEntry

等待汽车进入

Barrier

自动护栏

AwaitTicketTake

等待打印停车卡

Carentrywhenfull

没有车位时,汽车请求进入停车场

EntryBarrier

入口的护栏

AwaitEnable

等待停车场内有空闲车位

ExitBarrier

出口的护栏

表1用例/类/状态列表

【问题1】〔3分〕

根据【说明】中的描述,使用表1给出的用例名称,给出图2中U1、U2和U3所对应的用例。

U1

U2

U3

【问题2】〔4分〕

根据【说明】中的描述,使用表1给出的类的名称,给出图3中A~D所对应的类。

A

B

C

D

【问题3】〔4分〕

根据【说明】中的描述,使用表1给出的状态名称,给出图4中S1~S4所对应的状态。

S1

S2

S3

S4

【问题4】〔4分〕

简要解释图2中用例U1和U3之间的extend关系的内涵。

答案:

阅读以下说明和图,答复以下问题1至问题4,将答案填到答题纸的对应栏内。

参考答案:

【问题1】〔3分〕

U1

Carentry

U2

Carexit

U3

Carentrywhenfull

【问题2】〔4分〕!

C、D答案可以互换!

A

CarPark

B

Barrier

C

EntryBarrier

D

ExitBarrier

 

【问题3】〔4分〕

S1

Idle

S2

AwaitTicketTake

S3

AwaitEnable

S4

AwaitEntry

【问题4】〔4分〕

用例之间的扩展关系用于对可选系统行为的用例的一部分建模。

通过这种方式,可以把可选行为从必需的行为中别离出来。

〔3〕阅读以下说明和图,答复以下问题1至问题4,将解答填入答题纸的对应栏内。

【说明】

已知某唱片播放器不仅可以播放唱片,而且可以连接电脑并把电脑中的歌曲刻录到唱片上〔同步歌曲〕。

连接电脑的过程中还可自动完成充电。

关于唱片,还有以下描述信息:

1.每首歌曲的描述信息包括:

歌曲的名字、谱写这首歌曲的艺术家以及演奏这首歌曲的艺术家。

只有两首歌曲的这三部分信息完全相同时,才认为它们是同一首歌曲。

艺术家可能是一名歌手或一支由2名或2名以上的歌手所组成的乐队。

一名歌手可以不属于任何乐队,也可以属于一个或多个乐队。

2.每张唱片由多条音轨构成;一条音轨中只包含一首歌曲或为空,一首歌曲可分布在多条音轨上;同一首歌曲在一张唱片中最多只能出现一次。

3.每条音轨都有一个开始位置和持续时间。

一张唱片上音轨的次序是非常重要的,因此对于任意一条音轨,播放器需要准确地知道,它的下一条音轨和上一条音轨是什么〔如果存在的话〕。

根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表1-1所示的类列表、如图1-1所示的初始类图以及如图1-2所示的描述播放器行为的UML状态图。

表1-1类列表

类名

说明

Artist

艺术家

Song

歌曲

Band

乐队

Musician

歌手

Track

音轨

Album

唱片

图1-1初始类图

图1-2播放器行为UML状态图

【问题1】〔6分〕

根据说明中的描述,使用表1-1给出的类的名称,给出图1-1中的A~F所对应的类。

【问题2】〔3分〕

根据说明中的描述,给出图1-1中〔1〕~〔6〕处的多重度。

【问题3】〔4分〕

图1-1中缺少了一条关联,请指出这条关联两端所对应的类以及每一端的多重度。

多重度

【问题4】〔2分〕

根据图1-2所示的播放器行为UML状态图,给出从“关闭”状态到“播放”状态所经过的最短事件序列〔假设电池一开始就是有电的〕。

 

答案:

【问题1】〔6分〕

根据说明中的描述,使用表1-1给出的类的名称,给出图1-1中的A~F所对应的类。

A:

ArtistB:

SongC:

BandD:

MusicianE:

TrackF:

Album

【问题2】〔3分〕

根据说明中的描述,给出图1-1中〔1〕~〔6〕处的多重度。

(1)0..*

(2)2..*

(3)0..1

(4)1..*

(5)1..*

(6)1

【问题3】〔4分〕

图1-1中缺少了一条关联,请指出这条关联两端所对应的类以及每一端的多重度。

多重度

Track或E(1分)

0..1

Track或E(1分)

0..1

【问题4】〔2分〕

根据图1-2所示的播放器行为UML状态图,给出从“关闭”状态到“播放”状态所经过的最短事件序列〔假设电池一开始就是有电的〕。

按任意键,选择歌曲

〔4〕阅读以下说明和图,答复以下问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

某城市的各国家公园周边建造了许多供游客租用的小木屋和营地,为此,该城市设置了一个中心售票处和假设干个区域售票处。

游客假设想租用小木屋或营地,必须前往中心售票处进行预定并用现金支付全额费用。

所有的预定操作全部由售票处的工作人员手工完成。

现欲开发一信息系统,实现小木屋和营地的预定及管理功能,以取代手工操作。

该系统的主要功能描述如下:

1.管理预定申请。

游客可以前往任何一个售票处提出预定申请。

系统对来自各个售票处的预定申请进行统一管理。

2.预定。

预定操作包含登记游客预定信息、计算租用费用、付费等步骤。

3.支付费用。

游客付费时可以选择现金和信用卡付款两种方式。

使用信用卡支付可以享受3%的折扣,现金支付没有折扣。

4.游客取消预定。

预定成功之后,游客可以在任何时间取消余地,但需支付赔偿金,剩余部分则退还给游客。

赔偿金的计算规则是,在预定如住时间之前的48小时内取消,支付租赁费用10%的赔偿金;在预定如住时间指头取消,则支付租赁费用50%的赔偿金。

5.自动取消预定。

如果遇到恶劣天气〔如暴雨、山洪等〕,系统会自动取消所有的预定,发布取消预定消息,全额退款。

6.信息查询。

售票处工作人员查询小木屋和营地的预定情况和使用情况,以判断是否能够批准游客的预定申请。

现采用面向对象方法开发上述系统,得到如表1所示的用例列表和表2所示的类列表。

对应的用例图和类图分别如图3和图4所示。

表1用例列表

用例名

说明

用例名

说明

ManageInquiries

管理预订申请

ManageCashPayment

现金支付

MakeReservation

预定

ManageCrCardPayment

信用卡支付

ManagePayment

支付管理

GetDiscount

计算付款折扣

CancelReservation

游客取消预订

AutoCancelReservation

系统自动取消预定

CheckAvailability

信息查询

CalculateRefund

计算取消预定的赔偿金

PublishMessage

发布取消预定消息

表2类列表

类名

说明

类名

说明

NationalPark

国家公园

Customer

游客

Reservation

预定申请

ReservationItem

预订申请内容

TicketingOfficer

售票处

CampSite

营地

Bungalow

小木屋

Payment

付款

Discount

付款折扣

CashPayment

现金支付

CreditCardPayment

信用卡支付

Rate

租赁费用

【问题1】〔6分〕

根据说明中的描述与表1,给出图3中UC1-UC6所处对应的用例名称。

【问题2】〔7分〕

根据说明中的描述与表2,给出图4中C1-C7处所对应的类名。

【问题3】〔2分〕

对于某些需求量非常大的小木屋或营地,说明中功能4的赔偿金计算规则,不足以弥补取消预定所带来的损失。

如果要根据预定的时段以及所预定场地的需求量,设计不用层次的赔偿金计算规则,需要对图4进行怎样的修改?

〔请用文字说明〕

图3用例图

图4类图

答案:

【问题1】〔6分〕

根据说明中的描述与表1,给出图3中UC1-UC6所处对应的用例名称。

UC1:

CheckAvailability〔信息查询〕UC2:

MakeReservation〔预定〕

UC3:

GetDiscount〔计算付款折扣〕UC4:

ManageCashPayment〔现金支付〕

UC5:

ManageCrCardPayment〔信用卡支付〕UC6:

CalculateRefund〔计算取消预订的赔偿金〕

【注:

UC4与UC5可以互换】

【问题2】〔7分〕

根据说明中的描述与表2,给出图4中C1-C7处所对应的类名。

C1:

NationalPark〔国家公园〕C2:

Rate〔租赁费用〕

C3:

TicketingOfficer〔售票处〕C4:

payment〔付款〕

C5:

Discount〔付款折扣〕C6:

CashPayment〔现金支付〕

C7:

CreditCardPayment〔信用卡支付〕

【注:

C6和C7可以互换】

【问题3】〔2分〕

对于某些需求量非常大的小木屋或营地,说明中功能4的赔偿金计算规则,不足以弥补取消预定所带来的损失。

如果要根据预定的时段以及所预定场地的需求量,设计不用层次的赔偿金计算规则,需要对图4进行怎样的修改?

〔请用文字说明〕

依题意,假设需要根据预定的时段以及预定场地的需求量,设计不同层次的赔偿金计算规则,则在图中可以增加一个与此相对应的新类,且使该新类与类ReservationItem〔预定申请内容〕之间存在关联关系;或者是修改类Rate〔租赁费用〕,使其具有计算赔偿金的功能。

〔5〕阅读以下说明和程序代码,将应填入〔n〕处的字句填写完整。

〔问题1和问题2任选一题完成〕

策略模式是一种对象行为型模式,它定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。

该模式使得算法可独立于使用它的客户而变化。

其结构如图4所示:

图4策略模式类图

某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。

需要模拟的飞机种类及其特征见表3。

表3需模拟的飞机种类及其特征

飞机种类

起飞特征

飞行特征

直升机(Helicopter)

垂直起飞(VerticalTakeOff)

亚音速飞行(SubSonicFly)

客机(AirPlane)

长距离起飞(LongDistanceTakeOff)

亚音速飞行(SubSonicFly)

歼击机(Fighter)

长距离起飞(LongDistanceTakeOff)

超音速飞行(SuperSonicFly)

鹞式战斗机(Harrier)

垂直起飞(VerticalTakeOff)

超音速飞行(SuperSonicFly)

为支持将来模拟更多种类的飞机,采用策略设计模式设计的类图如图5所示。

图5飞机飞行模拟系统类图

在图5中,AirCraft为抽象类,描述了抽象的飞机,而类Helicopter、AirPlane、Fighter和Harrier分别描述具体的飞机种类,fly〔〕和takeoff〔〕分别表示不同飞机都具有飞行特征和起飞特征;类FlyBehavior与TakeOffBehavior为抽象类,分别用于表示抽象的飞行行为与起飞行为;类SubSonicfly与SuperSonicFly分别描述亚音速飞行和超音速飞行的行为;类VerticalTakeOff和LongDistanceTakeOff分别描述垂直起飞与长距离起飞的行为。

【问题1】〔7分〕Java代码

interfaceFlyBehavior{

publicvoidfly();

};

classSubSonicFlyimplementsFlyBehavior{

publicvoidfly(){System.out.println("亚音速飞行!

");}

};

classSuperSonicFlyimplementsFlyBehavior{

publicvoidfly(){System.out.println("超音速飞行");}

};

interfaceTakeOffBehavior{

publicvoidtakeOff();

};

classVerticalTakeOffimplementsTakeOffBehavior{

publicvoidtakeOff(){System.out.println("垂直起飞!

");}

};

classLongDistanceTakeOffimplementsTakeOffBehavior{

publicvoidtakeOff(){System.out.println("长距离起飞!

");}

};

abstractclassAirCraft{

protected〔1〕;

protected〔2〕;//

(1)、

(2)可互换

publicvoidfly(){〔3〕;}

publicvoidtakeOff(){〔4〕;}

};

classHelicopter〔5〕Aircraft{

publicHelicopter(){

flyBehavior=new〔6〕;

takeOffBehavior=new〔7〕;

}

}

//其他代码省略

 

【问题2】〔7分〕C++代码

#include

usingnamespacestd;

classFlyBehavior{

public:

virtualvoidfly()=0;

};

classSubsonicFly:

publicFlyBehavior{

public:

voidfly(){cout<<"亚音速飞行!

"<

};

classSuperFly:

publicFlyBehavior{

public:

voidfly(){cout<<"超音速飞行!

"<

};

classTakeOffBehavior{

public:

virtualvoidTakeOff()=0;

};

classVerticalTakeOff:

TakeOffBehavior{

public:

voidTakeOff(){cout<<"垂直起飞!

"<

};

classLongDistanceTakeOff{

public:

voidTakeOff(){cout<<"长距离起飞!

"<

};

classAirCraft{

protected:

(1);

(2);//

(1)、

(2)可互换

public:

voidfly(){(3);}

voidTakeOff(){(4);}

};

classHelicopter:

publicAircraft{

public:

Helicopter(){

flyBehavior=new(5);

takeOffBehavior=new(6);

}

(7){

if(!

flyBehavior)deleteflyBehavior;

if(!

takeOffBehavior)deletetakeOffBehavior;

}

};

//其他代码省略

答案

【问题1】〔7分〕Java代码

(1)FlyBehaviorflybehavior

(2)TakeOffBehaviortakeOffBehavior

(3)flyBehavior.fly()

(4)takeOffBehavior.takeOff()

(5)extends

(6)SubsonicFly()

(7)VerticalTakeOff()〔1、2可互换〕

【问题2】〔7分〕C++代码

(1)FlyBehavior*flyBehavior

(2)TakeOffBehavior*takeOffB

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1