列表

详情


阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。 
【说明】 
  某银行计划开发一个自动存提款机模拟系统(ATM  System)。系统通过读卡器(CardReader)读取 ATM 卡;系统与客户(Customer)的交互由客户控制台(CustomerConsole)实现;银行操作员(Operator)可控制系统的启动(System Startup)和停止(System Shutdown);系统通过网络和银行系统(Bank)实现通信。
       当读卡器判断用户已将ATM卡插入后,创建会话(Session)。会话开始后,读卡器进行读卡,并要求客户输入个人验证码(PIN)。系统将卡号和个人验证码信息送到银行系统进行验证。验证通过后,客户可从菜单选择如下事务(Transaction): 
  1. 从ATM卡账户取款(Withdraw); 
  2. 向ATM卡账户存款(Deposit); 
  3. 进行转账(Transfer); 
  4. 查询(Inquire)ATM卡账户信息。 
  一次会话可以包含多个事务,每个事务处理也会将卡号和个人验证码信息送到银行系统进行验证。若个人验证码错误,则转个人验证码错误处理(Invalid PIN Process)。每个事务完成后,客户可选择继续上述事务或退卡。选择退卡时,系统弹出 ATM 卡,会话结束。
       系统采用面向对象方法开发,使用 UML 进行建模。系统的顶层用例图如图 3-1 所示,一次会话的序列图(不考虑验证)如图3-2所示。消息名称参见表3-1。 

 可能的消息名称列表


【问题1】(7分)   

  根据【说明 】中的描述,给出图 3-1 中 A1 和 A2 所对应的参与者,U1 至 U3 所对应的用例,以及该图中空 (1) 所对应的关系。(U1至U3的可选用例包括:Session、Transaction、Insert Card.Invalid PIN Process和Transfer) 
【问题2】(6分)   
  根据【说明 】中的描述,使用表3-1中的英文名称,给出图3-2中6~9对应的消息。  
【问题3】(2分)
   解释图3-1中用例U3和用例Withdraw、Deposit等四个用例之间的关系及其内涵。

参考答案:

【问题1】  
        A1:Customer                  A2:Bank             U1:Session

  U2:Invalid PIN Process  U3:Transaction (1):<<extend>>
【问题2】
  6:readPIN() 7:PIN 8:creat(atm, this, card, pin)
  9:performTransaction()
【问题3】
  Transaction是一个抽象泛化用例,具有其他事务类型共有的属性和行为,每个具体的事务类型继承它,并实现适合白己的特定的操作。

 

详细解析:

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

【问题3】
    用例之间的继承关系表示子类型“是一种”父类型。其中父类型通常是一个抽象泛化用例,具有子类型共有的属性和行为,每个具体的子类型继承它,并实现适合自己的持定的操作。
    本题中Transaction和Withdraw、Deposit等四个用例之间的关系即为继承关系,Transaction即是一个抽象泛化用例,具有其他事务类型共有的属性和行为,每个具体的事务类型继承它,并实现适合自己的特定的操作。

上一题