预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共28页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

编号:时间:2021年x月x日书山有路勤为径学海无涯苦作舟页码:UML业务建模实例分析在我国十年前ATM(自动取款机)还是一个很新鲜的事物现在在城市的大街小巷随处可见。我们在日常生活中也经常和ATM打交道。本章我们将以简化的ATM系统为例将前面几章中学到的用例图、类图、顺序图、状态图、活动图及协作图知识运用到此例中。5.1用例图参与者"银行储户"和ATM机。简化后的ATM机仅有取款、存款及其余功能。其余功能不做详细说明。图5.1自动取款机(ATM)系统用例图银行储户在ATM机上完成取款、存款及其他业务。5.2类图图5.2所示的银行系统类图和图3.5是类似的只是将工作人员换成了ATM。整个银行系统包括了帐户库、银行储户库及ATM系统。许多单个的帐户组成了帐户库。帐户具有帐户类型、帐户号、余额三个属性均为private其类型分别为charintdouble。六个操作分别为setType、getType、getAccountNumbe、setAccountNumbe、caculateBalance、getBalance除caculateBalance为protected其余均为public。setType设置帐户类型返回类型为void参数类型为char输入帐户类型。getType获取帐户类型返回类型为char无参数。setAccountNumbe设置帐户号返回类型为void参数类型为int输入帐户号。getAccountNumbe获取帐户号返回类型为int无参数。caculateBalance计算余额返回类型为void参数为double第一个参数为输入存取款数额第二个参数为存款余额既为输入也为输出。getBalance获取帐户余额返回类型为double无参数。许多银行储户组成了储户库。ATM系统包含了许多ATM机。银行储户及ATM机两个类包含哪些属性哪些操作它们的可见性及操作的返回类型、参数个数、参数类型从类图上都一目了然。更多的属性及操作都可以一一加上使这个类图更详细更完整从而使参与项目的每个成员都能无歧义的明了整个设计的类的结构。同样对于一个真正的银行系统这个类图过于简单。比如帐户类型我们可以先定义一个abstractclass它包含一个帐户最基本的属性及操作。而有些操作先定义为abstract如余额的计算。然后再继承这个abstractclass我们可以有savingaccount和checkingaccount等等。不同的帐户有不同的余额计算方法我们可以加上具体的算法。对于不同的帐户可能还有一些它特有的操作我们也可以加上比如savingaccount在存款达到多少时可以享受机票打折的优惠。通过类图不仅可以使设计者明确的表达自己的设计意图也能帮组自己整理思路充实及优化自己的设计。图5.2银行系统类图5.3顺序图图5.3描述了顾客在ATM机上取款时信息的流动情况。以时间为顺序。因为仅是示例所以整个过程是没有出现任何故障时的流程并且只画到了取款结束。通过这个图我们可以看出消息是如何在系统中不同对象之间进行交互。通过流程图我们可以很清楚地看到系统是如何工作的系统各部分之间的信息及控制是如何发送的整个流程是否合理。流程图对我们的设计起到了很好的帮助作用。注意在本图没有一个生命线终端有一个"X"这是因为这个流程中还未遇到有对象生命结束。当有对象生命结束时需在对应的生命线终端画"X"表明这个对象在这时被销毁。首先银行储户将ATM卡插入读卡机读卡机将信息传给客户管理客户管理提出查询密码显示部分将输入密码请求显示出来…..因为这个顺序图较长且很清晰即便是初学者也很容易读懂在此就不对本图做过多的解释。图5.3ATM取款顺序图图5.4描述了顾客在ATM机上进行操作会经历的几种状态及各种状态之间转换的条件。因为是简化了的例子所以除了等待顾客插入磁卡的起始状态和结束服务的终止状态顾客会处于输入密码、选择服务类型、存款及取款四种状态。插入磁卡后进入输密码状态当密码输入正确时进入选择服务类型状态当输入密码不正确时停留在原状态但如果三次不正确服务结束。进入选择服务类型后根据选择的不同顾客可进入存款和取款状态。存、取款结束后顾客既可以选择结束服务到最终状态也可以选择继续服务回到选择服务类型状态。通过状态图我们可以无歧义的了解各个活动角色是如何在不同状况下转换的转换的条件是什么是否会出现死锁现象是否有条件没考虑周全是否有状态无法达到。状态图可以帮助我们发现问题并及时改正。5.5活动图图5.5参考了RandyMiller的《AHands-OnIntroductionforDevelopers》一文5