|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
C++编译的是本地码,优点是启动快,而且可以精确控制资源因此可以开发很高效的程序.缺点是编程麻烦,而且容易留下安全隐患.跨平台靠源代码在各个平台间分别编译(一处编写到处编译) "例,比也"(《说文》),本次连载将给出一个使用UML举行建模的完全实例,综合使用后面学到的常识,到达"举此以例其他"(元刘丁兑油ㄒ椤づ费艄罚┑哪康摹
在我国十年前ATM(主动存款机)仍是一个很奇怪的事物,如今在乡村的街头巷尾到处可见。我们在一样平常生存中也常常和ATM打交道。本章我们将以简化的ATM体系为例将后面几章中学到的用例图、类图、按次图、形态图、举动图及合作图常识使用到此例中。
5.1用例图
介入者"银行储户"和ATM机。简化后的ATM机唯一存款、存款及其他功效。其他功效不做具体申明。
.1主动存款机(ATM)体系用例图
银行储户在ATM机上完成存款、存款及其他营业。
5.2类图
.2所示的银行体系类图和.5是相似的,只是将事情职员换成了ATM。全部银行体系包含了帐户库、银行储户库及ATM体系。
很多单个的帐户构成了帐户库。帐户具有帐户范例、帐户号、余额三个属性,均为private,其范例分离为char,int,double。六个操纵分离为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在存款到达几时能够享用机票打折的优惠。经由过程类图不但可使计划者明白的表达本人的计划企图,也能帮组本人收拾思绪,充分及优化本人的计划。
.2银行体系类图
5.3按次图
.3形貌了主顾在ATM机上存款时信息的活动情形。以工夫为按次。由于仅是示例,以是全部历程是没有呈现任何以障时的流程,而且只画到了存款停止。经由过程这个图,我们能够看出动静是怎样在体系中分歧对象之间举行交互。
经由过程流程图我们能够很分明地看到体系是怎样事情的,体系各部分之间的信息及把持是怎样发送的,全部流程是不是公道。流程图对我们的计划起到了很好的匡助感化。注重在本图没有一个性命线终端有一个"X",这是由于这个流程中还未碰到有对象性命停止。当有对象性命停止时需在对应的性命线终端画"X",标明这个对象在这时候被烧毁。
起首银行储户将ATM卡拔出读卡机,读卡机将信息传给客户办理,客户办理提出查询暗码,显现部分将输出暗码哀求显现出来…..由于这个按次图较长,且很明晰,即使是初学者也很简单读懂,在此就不合错误本图做过量的注释。
.3ATM存款按次图
5.4形态图
.4形貌了主顾在ATM机长进行操纵会履历的几种形态,及各类形态之间转换的前提。由于是简化了的例子,以是除守候主顾拔出磁卡的肇端形态和停止服务的停止形态,主顾会处于输出暗码、选择服务范例、存款及存款四种形态。
.4ATM形态图
拔出磁卡落后进输暗码形态,当暗码输出准确时进当选择服务范例形态,当输出暗码不准确时,停止在原形态,但假如三次不准确,服务停止。进当选择服务范例后依据选择的分歧,主顾可进进存款和存款形态。存、存款停止后,主顾既能够选择停止服务到终极形态,也能够选择持续服务回到选择服务范例形态。
经由过程形态图我们能够无歧义的懂得各个举动脚色是怎样在分歧情况下转换的,转换的前提是甚么,是不是会呈现逝世锁征象,是不是有前提没思索全面,是不是有形态没法到达。形态图能够匡助我们发明成绩,并实时更正。
5.5举动图
.5参考了RandyMiller的《AHands-OnIntroductionforDevelopers》一文,5.3图中的客户办理和事物办理对应于5.5图中的Bank,.3中的读卡机、显现、输出设备及点钞机对应于5.5图中的ATMMachina,银行储户就是Customer。初看举动图温柔序图表达的意义很靠近。但我们能够注重到按次图侧重工夫的按次,而举动图偏重于各部分之间的互相制约,关于一些并行的举动可以无效的暗示出来。比方5.5图中fork和join处,我们能够很分明的看到一些并行举动的存在。
这个举动图以主顾拔出卡为入手下手,以主顾取卡停止。我们能够看到举动图的重点固然不在工夫按次,但我们一样能够失掉工夫的信息。
.5ATM银行体系举动图
5.6合作图
在第四章中我们晓得合作图温柔序图是能够无信息丧失的互相转换,只是它们的偏重点是纷歧样的。按次图侧重于对象间动静传送的工夫按次,合作图侧重于表达对象之间的静态毗连干系。.6将5.3图转换为合作图。
1.拔出ATM卡
2.承受ATM卡
3.查询暗码
4.显现输出暗码哀求
5.输出暗码
6.暗码传送
7.哀求确认暗码正当性
8.确认暗码正当性
9.扣问服务种别
10.显现输出服务服务种别哀求
11.输出存款哀求
12.存款哀求
13.扣问存款数额
14.显现输出数额哀求
15.输出存款数额
16.传送存款数额
17.扣问存款数额确认
18.显现确认数额哀求
19.输出确认
20.传送确认信息
21.数额正当性确认哀求
22.确认数额和法性
23.出钞哀求
24.盘算帐户余额
25.出钞
26.取钞
27.传送余额并扣问是不是还必要其他服务
28.显现帐户余额并提醒选择上面的服务
.6ATM体系合作图
从图上我们能够看出合作图的脚色温柔序图的对象是逐一对应的,而合作图上的各对象上的合作干系温柔序图上的动静传送是逐一对应的。
IDE是好。java中的IDE更是百花齐放,你用jbuilder能说jbuilder赶不上vs吗?用eclipse,netbeans也很舒服啊。我就不明白“稍微差一些”那一些是从哪里差来的。 |
|