问答题

阅读下列说明和图,回答问题。
[说明]
某网上药店允许顾客凭借医生开具的处方,通过网络在该药店购买处方上的药品。该网上药店的基本功能描述如下。
(1)注册。顾客在买药之前,必须先在网上药店注册。注册过程中需填写顾客资料以及付款方式(信用卡或者支付宝账户)。此外顾客必须与药店签订一份授权协议书,授权药店可以向其医生确认处方的真伪。
(2)登录。已经注册的顾客可以登录到网上药房购买药品。如果是没有注册的顾客,系统将拒绝其登录。
(3)录入及提交处方。登录成功后,顾客按照“处方录入界面”显示的信息,填写开具处方的医生的信息以及处方上的药品信息。填写完成后,提交该处方。
(4)验证处方。对于已经提交的处方(系统将其状态设置为“处方已提交”),其验证过程为:
①核实医生信息。如果医生信息不正确,该处方的状态被设置为“医生信息无效”,并取消这个处方的购买请求;如果医生信息是正确的,系统给该医生发送处方确认请求,并将处方状态修改为“审核中”。
②如果医生回复处方无效,系统取消处方,并将处方状态设置为“无效处方”。如果医生没有在7天内给出确认答复,系统也会取消处方,并将处方状态设置为“无法审核”。
③如果医生在7天内给出了确认答复,该处方的状态被修改为“准许付款”。
系统取消所有未通过验证的处方,并自动发送一封电子邮件给顾客,通知顾客处方被取消以及取消的原因。
(5)对于通过验证的处方,系统自动计算药品的价格并邮寄药品给已经付款的顾客。
该网上药店采用面向对象方法开发,使用UML进行建模。系统的类图如图10.2所示。
[问题1]
根据说明中的描述,给出图10.2中缺少的C1~C5所对应的类名以及(1)~(6)处所对应的多重度。

[问题2]
图10.3给出了“处方”的部分状态图。根据说明中的描述,给出图10.3中缺少的S1~S4所对应的状态名以及(7)~(10)处所对应的迁移(transition)名。

[问题3]
图10.2中的符号“”和“”在UML中分别示类和对象之间的哪两种关系?两者之间的区别是什么?

【参考答案】

[问题1]
C1:付款方式 C2:处方 C3:信用卡 C4:支付宝账户 C5:药品
(1)1 (2)......

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

问答题
阅读下列说明和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) ; ; 其他代码省略