参考答案:
【问题1】
U2:Invalid PIN Process U3:Transaction (1):<<extend>
A1:Customer A2:Bank U1:Session
【问题2】
6:readPIN() 7:PIN 8:creat(atm, this, card, pin)
9:performTransaction()
【问题3】
Transaction是一个抽象泛化用例,具有其他事务类型共有的属性和行为,每个具体的事务类型继承它,并实现适合白己的特定的操作。
详细解析:
本题涉及面向对象系统开发时的UML用例图、序列图以及用例之间的关系。
【问题1】
构建用例图时,常用的方式是先识别参与者,然后确定用例以及用例之间的关系。
识别参与者时,考查和系统交互的人员和外部系统。本题中,与系统交互的人员包括客户”(Customer)和银行操作员(Operator),与本模拟系统交互的外部系统包括银行系统(Bank)。
考查用例时,通过判断哪一个特定参与者发起或者触发了与系统的哪些交互,来识别用例并建立和参与者之间的关联。考查用例之间的关系时,<<include>
本题中,客户一旦插卡成功,系统就创建会话(Session),会话中可以执行用户从菜单选择的Withdraw、Deposit、Transfer和Inquire等事务(Transaction)。由图中U3和Withdraw之间的泛化关系,可知U3为Transaction;又由Ul和U3之间的<<include>
【问题2】
序列图是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。构造序列图时遵循如下指导原则:确定顺序图的范围,描述这个用例场景或一个步骤;绘制参与者和接口类,如果范围包括这些内容的话;沿左手边列出用例步骤;对控制器类及必须在顺序中协作的每个实体类,基于它拥有的属性或己经分配给它的行为绘制框;为持续类和系统类绘制框;绘制所需消息,并把每条消息指到将实现响应消息的责任的类上:添加活动条指示每个对象实例的生命期;为清晰起见,添加所需的返回消息;如果需要,为循环、可选步骤和替代步骤等添加框架。
本题中,根据说明中的描述,从ATM机判断卡已插入(cardInserted())开始会话,即为当前ATM创建会话(create(this))并开始执行会话(performSession());读卡器读卡(readCard())获得ATM卡信息(card),然后从控制台读取个人入
用例之间的继承关系表示子类型“是一种”父类型。其中父类型通常是一个抽象泛化用例,具有子类型共有的属性和行为,每个具体的子类型继承它,并实现适合自己的持定的操作。
本题中Transaction和Withdraw、Deposit等四个用例之间的关系即为继承关系,Transaction即是一个抽象泛化用例,具有其他事务类型共有的属性和行为,每个具体的事务类型继承它,并实现适合自己的特定的操作。