
【说明】
在线会议审稿系统(Online Reviewing System, ORS)主要处理会议前期的投稿和审稿事务,其功能描述如下:
(1)用户在初始使用系统时,必须在系统中注册(register)成为作者或审稿人。
(2)作者登录(login)后提交稿件和浏览稿件审阅结果。提交稿件必须在规定提交时间范围内,其过程为先输入标题和摘要,选择稿件所属主题类型,选择稿件所在位置(存储位置)。上述几步若未完成,则重复;若完成,则上传稿件至数据库中,系统发送通知。
(3)审稿人登录后可设置兴趣领域,审阅稿件给出意见,以及罗列录用和(或)拒绝的稿件。
(4)会议委员会是一个特殊的审稿人,可以浏览提交的稿件、给审稿人分配稿件、罗列录用和(或)拒绝的稿件,以及关闭审稿过程。其中关闭审稿过程须包括罗列录用和(或)拒绝的稿件。
系统采用面向对象的方法开发,使用UML进行建模。在建模用例图时,常用的方式是先识别参与者,然后确定参与者如何使用系统来确定用例,每个用例可以构造一个活动图。参与者名称、用例和活动名称分别参见表1、表2和表3。系统的部分用例图和提交稿件的活动图分别如图1和图2所示。
表1 参与者列表
| 名称 | 说明 | 名称 | 说明 |
| User | 用户 | Author | 作者 |
| Reviewer | 审稿人 | PCChair | 委员会 |
| 名称 | 说明 | 名称 | 说明 |
| login | 登录系统 | Register | 注册 |
| submit paper | 提交稿件 | Browse review results | 浏览稿件审阅结果 |
| close reviewing process | 关闭审稿过程 | assign paper to reviewer | 分配稿件给审稿人 |
| set preferences | 设定兴趣领域 | enter review | 审阅稿件给出意见 |
| list accepted/rejected papers | 罗列录用和/或拒绝的稿件 | browse submitted papers | 浏览提交的稿件 |
| 名称 | 说明 | 名称 | 说明 |
| select paper location | 选择稿件位置 | upload paper | 上传稿件 |
| select subject group | 选择主题类型 | send notification | 发送通知 |
| enter title and abstract | 输入标题和摘要 |
图1 ORS的用例图
图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分) |
!!注意:U2和U3的答案可以互换。!!
根据【说明】中的描述,使用表2中的英文名称,给出图1中U1~U3所对应的用例。
| U1 | list accepted / rejected papers(1分) |
| U2 | browse submitted papers(1分) |
| U3 | assign paper to reviewer(1分) |
根据【说明】中的描述,给出图1中(1)和(2)所对应的关系及其含义。
(1)< (2)< 【问题4】(4分) 根据【说明】中的描述,使用表2和表3中的英文名称,给出图2中Action1~Action4对应的活动。 (2)阅读下列说明和图,回答问题1至问题4,将答案填到答题纸的对应栏内。 【说明】 某汽车停车场欲建立一个信息系统,已经调查到的需求如下: (1)在停车场的入口和出口分别安装一个自动栏杆、一台停车卡打印机/一台读卡器以及一个车辆通过传感器,示意图如图1所示。 图1 自动停车场示意图 (2)当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡。当驾驶员拿走停车卡后,系统命令栏杆自动抬起;汽车通过入口后,入口处的传感器通知系统发出命令,栏杆自动放下。 (3)在停车场内分布着若干个付款机器。驾驶员将在入口处获取的停车卡插入付款机器,并缴纳停车费。付清停车费之后,将获得一张出场卡,用于离开停车场。 (4)当汽车到达出口时,驾驶员将出场卡插入出口处的读卡器。如果这张卡是有效的,系统命令栏杆自动抬起;汽车通过出口后,出口处的传感器通知系统发出命令,栏杆自动放下。若这张卡是无效的,系统不发出栏杆抬起命令而发出告警信号。 (5)系统自动记录停车场内空闲的停车位的数量。若停车场当前没有车位,系统将在入口处显示“车位已满”信息。这时,停车卡打印机将不再出卡,只允许场内汽车出场。 根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表1所示的用例/类/状态列表、如图2所示的用例图、如图3所示的初始类图,以及如图4所示的描述入口自动栏杆行为的UML状态图。 图2 用例图 图3 初始类图 图4 入口自动栏杆行为的状态图 【问题1】(3分) 根据【说明】中的描述,使用表1给出的用例名称,给出图2中U1、U2和U3所对应的用例。 根据【说明】中的描述,使用表1给出的类的名称,给出图3中A~D所对应的类。 根据【说明】中的描述,使用表1给出的状态名称,给出图4中S1~S4所对应的状态。 简要解释图2中用例U1和U3之间的extend关系的内涵。 答案: 阅读下列说明和图,回答问题1至问题4,将答案填到答题纸的对应栏内。 参: 【问题1】(3分) 用例之间的扩展关系用于对可选系统行为的用例的一部分建模。通过这种方式,可以把可选行为从必需的行为中分离出来。 (3)阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。 【说明】 已知某唱片播放器不仅可以播放唱片,而且可以连接电脑并把电脑中的歌曲刻录到唱片上(同步歌曲)。连接电脑的过程中还可自动完成充电。 关于唱片,还有以下描述信息: 1.每首歌曲的描述信息包括:歌曲的名字、谱写这首歌曲的艺术家以及演奏这首歌曲的艺术家。只有两首歌曲的这三部分信息完全相同时,才认为它们是同一首歌曲。艺术家可能是一名歌手或一支由2名或2名以上的歌手所组成的乐队。一名歌手可以不属于任何乐队,也可以属于一个或多个乐队。 2.每张唱片由多条音轨构成;一条音轨中只包含一首歌曲或为空,一首歌曲可分布在多条音轨上;同一首歌曲在一张唱片中最多只能出现一次。 3. 每条音轨都有一个开始位置和持续时间。一张唱片上音轨的次序是非常重要的,因此对于任意一条音轨,播放器需要准确地知道,它的下一条音轨和上一条音轨是什么(如果存在的话)。 根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表1-1所示的类列表、如图1-1所示的初始类图以及如图1-2所示的描述播放器行为的UML状态图。 表1-1 类列表 图1-1 初始类图 图1-2 播放器行为UML状态图 【问题1】(6分) 根据说明中的描述,使用表1-1给出的类的名称,给出图1-1中的A~F所对应的类。 【问题2】(3分) 根据说明中的描述,给出图1-1中(1)~(6)处的多重度。 【问题3】(4分) 图1-1中缺少了一条关联,请指出这条关联两端所对应的类以及每一端的多重度。 根据图1-2所示的播放器行为UML状态图,给出从“关闭”状态到“播放”状态所经过的最短事件序列(假设电池一开始就是有电的)。 答案: 【问题1】(6分) 根据说明中的描述,使用表1-1给出的类的名称,给出图1-1中的A~F所对应的类。 A: Artist B: Song C: Band D: Musician E: Track F: Album 【问题2】(3分) 根据说明中的描述,给出图1-1中(1)~(6)处的多重度。 (1) 0..* (2) 2..* (3) 0..1 (4) 1..* (5) 1..* (6) 1 【问题3】(4分) 图1-1中缺少了一条关联,请指出这条关联两端所对应的类以及每一端的多重度。 根据图1-2所示的播放器行为UML状态图,给出从“关闭”状态到“播放”状态所经过的最短事件序列(假设电池一开始就是有电的)。 按任意键, 选择歌曲 (4)阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 某城市的各国家公园周边建造了许多供游客租用的小木屋和营地,为此,该城市设置了一个中心售票处和若干个区域售票处。游客若想租用小木屋或营地,必须前往中心售票处进行预定并用现金支付全额费用。所有的预定操作全部由售票处的工作人员手工完成。现欲开发一信息系统,实现小木屋和营地的预定及管理功能,以取代手工操作。该系统的主要功能描述如下: 1.管理预定申请。游客可以前往任何一个售票处提出预定申请。系统对来自各个售票处的预定申请进行统一管理。 2.预定。预定操作包含登记游客预定信息、计算租用费用、付费等步骤。 3.支付费用。游客付费时可以选择现金和信用卡付款两种方式。使用信用卡支付可以享受3%的折扣,现金支付没有折扣。 4.游客取消预定。预定成功之后,游客可以在任何时间取消余地,但需支付赔偿金,剩余部分则退还给游客。赔偿金的计算规则是,在预定如住时间之前的48小时内取消,支付租赁费用10%的赔偿金;在预定如住时间指头取消,则支付租赁费用50%的赔偿金。 5.自动取消预定。如果遇到恶劣天气(如暴雨、山洪等),系统会自动取消所有的预定,发布取消预定消息,全额退款。 6.信息查询。售票处工作人员查询小木屋和营地的预定情况和使用情况,以判断是否能够批准游客的预定申请。 现采用面向对象方法开发上述系统,得到如表1所示的用例列表和表2所示的类列表。对应的用例图和类图分别如图3和图4所示。 表1 用例列表 根据说明中的描述与表1,给出图3中UC1-UC6所处对应的用例名称。 【问题2】(7分) 根据说明中的描述与表2,给出图4中C1-C7处所对应的类名。 【问题3】(2分) 对于某些需求量非常大的小木屋或营地,说明中功能4的赔偿金计算规则,不足以弥补取消预定所带来的损失。如果要根据预定的时段以及所预定场地的需求量,设计不用层次的赔偿金计算规则,需要对图4进行怎样的修改?(请用文字说明) 图3 用例图 图4 类图 答案: 【问题1】(6分) 根据说明中的描述与表1,给出图3中UC1-UC6所处对应的用例名称。 UC1:CheckAvailability(信息查询) :MakeReservation(预定) UC3:GetDiscount(计算付款折扣) :ManageCashPayment(现金支付) UC5:ManageCrCardPayment(信用卡支付) UC6:CalculateRefund(计算取消预订的赔偿金) 【注:UC4与UC5可以互换】 【问题2】(7分) 根据说明中的描述与表2,给出图4中C1-C7处所对应的类名。 C1:NationalPark(国家公园) :Rate(租赁费用) C3:TicketingOfficer(售票处) :payment(付款) C5:Discount(付款折扣) :CashPayment(现金支付) C7:CreditCardPayment(信用卡支付) 【注:C6和C7可以互换】 【问题3】(2分) 对于某些需求量非常大的小木屋或营地,说明中功能4的赔偿金计算规则,不足以弥补取消预定所带来的损失。如果要根据预定的时段以及所预定场地的需求量,设计不用层次的赔偿金计算规则,需要对图4进行怎样的修改?(请用文字说明) 依题意,若需要根据预定的时段以及预定场地的需求量,设计不同层次的赔偿金计算规则,则在图中可以增加一个与此相对应的新类,且使该新类与类ReservationItem(预定申请内容)之间存在关联关系;或者是修改类Rate(租赁费用),使其具有计算赔偿金的功能。 (5)阅读下列说明和程序代码,将应填入(n)处的字句填写完整。(问题1和问题2任选一题完成) 策略模式是一种对象行为型模式,它定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。该模式使得算法可于使用它的客户而变化。其结构如图4所示: 图4 策略模式类图 某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征见表3。 表3 需模拟的飞机种类及其特征 图5 飞机飞行模拟系统类图 在图5中,AirCraft为抽象类,描述了抽象的飞机,而类Helicopter、AirPlane、Fighter和Harrier分别描述具体的飞机种类,fly()和takeoff()分别表示不同飞机都具有飞行特征和起飞特征;类FlyBehavior与TakeOffBehavior为抽象类,分别用于表示抽象的飞行行为与起飞行为;类SubSonicfly与SuperSonicFly分别描述亚音速飞行和超音速飞行的行为;类VerticalTakeOff和LongDistanceTakeOff分别描述垂直起飞与长距离起飞的行为。 【问题1】(7分)Java代码 interface FlyBehavior { public void fly(); }; class SubSonicFly implements FlyBehavior{ public void fly() { System.out.println("亚音速飞行!"); } }; class SuperSonicFly implements FlyBehavior{ public void fly() { System.out.println("超音速飞行"); } }; interface TakeOffBehavior { public void takeOff(); }; class VerticalTakeOff implements TakeOffBehavior{ public void takeOff() { System.out.println("垂直起飞!"); } }; class LongDistanceTakeOff implements TakeOffBehavior{ public void takeOff() { System.out.println("长距离起飞!"); } }; abstract class AirCraft{ protected (1) ; protected (2) ; //(1)、(2)可互换 public void fly() { (3) ;} public void takeOff() { (4) ;} }; class Helicopter (5) Aircraft{ public Helicopter() { flyBehavior= new (6) ; takeOffBehavior=new (7) ; } } //其他代码省略 【问题2】(7分)C++代码 #include using namespace std; class FlyBehavior { public: virtual void fly()=0; }; class SubsonicFly: public FlyBehavior { public: void fly() { cout << "亚音速飞行!" << endl; } }; class SuperFly: public FlyBehavior { public: void fly() { cout << "超音速飞行!" << endl; } }; class TakeOffBehavior { public: virtual void TakeOff()=0; }; class VerticalTakeOff: TakeOffBehavior { public: void TakeOff() { cout << "垂直起飞!" << endl; } }; class LongDistanceTakeOff { public: void TakeOff() { cout << "长距离起飞!" << endl; } }; class AirCraft { protected: (1) ; (2) ;//(1)、(2)可互换 public: void fly() { (3) ;} void TakeOff() { (4) ;} }; class Helicopter: public Aircraft { public: Helicopter() { flyBehavior = new (5) ; takeOffBehavior = new (6) ; } (7) { if (!flyBehavior) delete flyBehavior; if (!takeOffBehavior) delete takeOffBehavior; } }; //其他代码省略 答案 【问题1】(7分)Java代码 (1)FlyBehavior flybehavior (2)TakeOffBehavior takeOffBehavior (3)flyBehavior.fly() (4)takeOffBehavior.takeOff() (5)extends (6)SubsonicFly() (7)V(1、2可互换) 【问题2】(7分)C++代码 (1)FlyBehavior *flyBehavior (2)TakeOffBehavior *takeOffBehavior (3)flyBehavior->fly() (4)takeOffBehavior->takeOff() (5)SubSonicFly() (6)VerticalTakeOff() (7)~、2可互换)Action1 enter title and abstract(1分) Action2 select subject group(1分) Action3 select paper location(1分) Action4 upload paper(1分)
表1 用例/类/状态列表用例名 说明 类名 说明 状态名 说明 Car entry 汽车进入停车场 CentralComputer 停车场信息系统 Idle 空闲状态,汽车可以进入 Car exit 汽车离开停车场 PaymentMachine 付款机器 Disable 没有车位 Report Statistics 记录停车场的相关信息 CarPark 停车场,保存车位信息 Await Entry 等待汽车进入 Barrier 自动护栏 Await Ticket Take 等待打印停车卡 Car entry when full 没有车位时,汽车请求进入停车场 EntryBarrier 入口的护栏 Await Enable 等待停车场内有空闲车位 ExitBarrier 出口的护栏
【问题2】(4分)U1 U2 U3
【问题3】(4分)A B C D
【问题4】(4分)S1 S2 S3 S4
【问题2】(4分)!!C、D答案可以互换!!U1 Car entry U2 Car exit U3 Car entry when full
【问题3】(4分)A CarPark B Barrier C EntryBarrier D ExitBarrier
【问题4】(4分)S1 Idle S2 Await Ticket Take S3 Await Enable S4 Await Entry 类 名 说 明 Artist 艺术家 Song 歌曲 Band 乐队 Musician 歌手 Track 音轨 Album 唱片
【问题4】(2分)类 多重度
【问题4】(2分)类 多重度 Track 或 分) 0..1 Track 或 分) 0..1
表2 类列表用例名 说明 用例名 说明 ManageInquiries 管理预订申请 ManageCashPayment 现金支付 MakeReservation 预定 ManageCrCardPayment 信用卡支付 ManagePayment 支付管理 GetDiscount 计算付款折扣 CancelReservation 游客取消预订 AutoCancelReservation 系统自动取消预定 CheckAvailability 信息查询 CalculateRefund 计算取消预定的赔偿金 PublishMessage 发布取消预定消息
【问题1】(6分)类名 说明 类名 说明 NationalPark 国家公园 Customer 游客 Reservation 预定申请 ReservationItem 预订申请内容 TicketingOfficer 售票处 CampSite 营地 Bungalow 小木屋 Payment 付款 Discount 付款折扣 CashPayment 现金支付 CreditCardPayment 信用卡支付 Rate 租赁费用
为支持将来模拟更多种类的飞机,采用策略设计模式设计的类图如图5所示。飞机种类 起飞特征 飞行特征 直升机(Helicopter) 垂直起飞(VerticalTakeOff) 亚音速飞行(SubSonicFly) 客机(AirPlane) 长距离起飞(LongDistanceTakeOff) 亚音速飞行(SubSonicFly) 歼击机(Fighter) 长距离起飞(LongDistanceTakeOff) 超音速飞行(SuperSonicFly) 鹞式战斗机(Harrier) 垂直起飞(VerticalTakeOff) 超音速飞行(SuperSonicFly)
