用例图
分析:对于银行的客户来说,可以通过ATM机启动几个用例:存款、取款、查阅结余、付款、转帐和改变PIN(密码)。银行官员也可以启动改变PIN这个用例。参与者可能是一个系统,这里信用系统就是一个参与者,因为它是在ATM系统之外的。箭头从用例到参与者表示用例产生一些参与者要使用的信息。这里付款用例向信用系统提供***付款信息。
类图
分析:类图显示了取款这个用例中各个类之间的关系,由四个类完成:读卡机、账目、ATM屏幕和取钱机。类图中每个类都是用方框表示的,分成三个部分。第一部分是类名;第二部分是类包含的属性,属性是类和相关的一些信息,如账目类包含了三个属性:账号、PIN(密码)和结余;最后一部分包含类的方法,方法是类提供的一些功能,例如帐目类包含了四个方法:打开、取钱、扣钱和验钱数。
类之间的连线表示了类之间的通信关系。例如,账目类连接了ATM屏幕,因为两者之间要直接相互通信;取钱机和读卡机不相连,因为两者之间不进行通信。
有些属性和方法的左边有一个小锁的图标,表示这个属性和方法是private的(UML中用’-’表示)钱宝pos机出支票,该属性和方法只在本类中可访问。没有小锁的,表示public(UML中用’+’表示),即该属性和方法在所有类中可访问。若是一个钥匙图标,表示protected(UML中用’#’表示),即属性和方法在该类及其子类中可访问。
顺序图
分析:***设客户Joe取20美元,它的序列图:序列图显示了用例中的功能流程。我们对取款这个用例分析,它有很多可能的程序,如想取钱而没钱,想取钱而PIN错等等,正常的情况是取到了钱,下面的序列图就对某客户Joe取20美元,分析它的序列图。
序列图的顶部一般先放置的是取款这个用例涉及的参与者,然后放置系统完成取款用例所需的对象,每个箭头表示参与者和对象或对象之间为了完成特定功能而要传递的消息。
取款这个用例从客户把卡插入读卡机开始,然后读卡机读卡号,初始化ATM屏幕,并打开Joe的账目对象。屏幕提示输入PIN,Joe输入PIN(1234),然后屏幕验证PIN与账目对象,发出相符的信息。屏幕向Joe提供选项钱宝pos机出支票,Joe选择取钱,然后屏幕提示Joe输入金额,它选择20美元。然后屏幕从账目中取钱,启动一系列账目对象要完成的过程。首先,验证Joe账目中至少有20美元;然后,它从中扣掉20美元,再让取钱机提供20美元的现金。Joe的账目还让取钱机提供收据,最后它让读卡机退卡。
协作图
分析:协作图显示的信息和序列图是相同的,只是协作图用不同的方式显示而已。序列图显示的是对象和参与者随时间变化的交互,而协作图则不参照时间而显示对象与参与者的交互。
例如,Joe取20美元的协作图中我们可以看到,读卡机和Joe的账目两个对象之间的交互:读卡机指示Joe的账目打开,Joe的账目让读卡机退卡。直接相互通信的对象之间有一条直线,例如ATM屏幕和读卡机直接相互通信,则其间画一条直线。没有画直线的对象之间不直接通信。
活动图
分析:客户插入***之后,可以看到ATM系统运行了三个并发的活动:验证卡、验证PIN(密码)和验证余额。这三个验证都结束之后,ATM系统根据这三个验证的结果来执行下一步的活动。如果卡正常、密码正确且通过余额验证,则ATM系统接下来询问客户有哪些要求也就是要执行什么操作。如果验证卡、验证PIN(密码)和验证余额这三个验证有任何一个通不过的话,ATM系统就把相应的出错信息在ATM屏幕上显示给客户。
Tag: atm 协作图 类图 活动图 顺序图