问答题

阅读下列说明和图,回答问题。
[说明]
某运输公司决定为新的售票机开发车票销售的控制软件。图10.8给出了售票机的面板示意图以及相关的控制部件。
售票机相关部件的作用如下所述。
(1)目的地键盘用来输入行程目的地的代码(例如,200表示总站)。
(2)乘客可以通过车票键盘选择车票种类(单程票、多次往返票和坐席种类)。
(3)继续/取消键盘上的取消按钮用于取消购票过程,继续按钮允许乘客连续购买多张票。
(4)显示屏显示所有的系统输出和用户提示信息。
(5)插卡口接受MCard(现金卡),硬币口和纸币槽接受现金。
(6)打印机用于输出车票。
假设乘客总是支付恰好需要的金额而无需找零,售票机的维护工作(取回现金、放入空白车票等)由服务技术人员完成。
系统采用面向对象方法开发,使用UML进行建模。系统的顶层用例图和类图分别如图10.9和图10.10所示。
[问题1]
根据说明中的描述,给出图10.9中A1和A2所对应的参与者,U1所对应的用例,以及(1)、(2)处所对应的关系。
[问题2]
根据说明中的描述,给出图10.10中缺少的C1~C4所对应的类名以及(3)~(6)处所对应的多重度。
[问题3]
图10.10中的类图设计采用了中介者(Mediator)设计模式,请说明该模式的内涵。


【参考答案】

[问题1]
A1:乘客 A2:服务技术人员
U1:支付 (1)<<include>> (2)<<in......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

问答题
阅读下列说明和Java代码,将应填入 (n) 处的字句写在对应栏内。 [说明] 某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表10.5所示。 为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类图如图10.12示。 图10.12中,AirCraft为抽象类,描述了抽象的飞机,而类Helicopter、AirPlane、Fighter和Harrier分别描述具体的飞机种类,方法fly()和takeOff()分别表示不同飞机都具有飞行特征和起飞特征类FlyBehavior与TakeOffBehavior为抽象类,分别用于表示抽象的飞行为与起飞行为;类SubSonicFly与SuperSonicFly分别描述亚音速飞行和超音速飞行的行为;类VerticalTakeOff与LongDistanceTakeOff分别描述垂直起飞与长距离起飞的行为。 [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) ; public void fly()( (3) ;) public void takeOff() (4) ; ; class Helicopter (5) AirCraft public Helicopter () flyBehavior=new (6) ; takeOffBehavior=new (7) ; ; 其他代码省略
问答题
阅读下列说明和C++代码,在 (n) 处填入正确的字句。 [说明] 某公司的组织结构图如图10.4所示,现采用组合(Composition)设计模式来构造该公司的组织结构,得到如图10.5所示的类图。 其中Company为抽象类,定义了在组织结构图上添加(Add)和删除(Delete)分公司 办事处或者部门的方法接口。类ConcreteCompany表示具体的分公司或者办事处,分公司或办事处下可以设置不同的部门。类HRDepartment和FinanceDepartment分别表示人力资源部和财务部。 [C++代码] #include <iostream> #include <list> #include <string> using namespace std; class Company 抽象类 protected: string name; public: Company(string name) (1) =name; (2) ; 增加子公司、办事处或部门 (3) ; 删除子公司、办事处或部门 ; class ConcreteCompany: public Company private: list< (4) >children; 存储子公司、办事处或部门 public: ConcreteCompany(string name):Company (name) void Add (Company*c) (5) .push back (c); void Delete (Company*c) (6) .remove (c); ; class HRDepartment: public Company public: HRDepartment(string name):Company(name) 其他代码省略 ; class FinanceDepartment: public Company public: FinanceDepartment(string name):Company(name) 其他代码省略 ; void main() ConcreteCompany *root=new ComcreteCompany( 北京总公司 ); root->Add (new HRDepartrnent( 总公司人力资源音 )); root->Add(new FinanceDepartment( 总公司财务部 )); ConcreteCompany *comp=new ConcreteCompany( 上海分公司 ); comp->Add (new HRDepartment( 上海分公司人力资源部 )); comp->Add(new FinanceDepartment( 上海分公司财务部 )); (7) ; ConcreteCompany *compl=new ConcreteCompany( 南京办事处 ); comp 1->Add (new HRDepartment( 南京办事处人力资源部 )); comp 1->Add (new FinanceDepartment( 南京办事处财务部 )); (8) ; 其他代码省略