UML并发视图:实体之间行为的交互,是动态。分为:时序图、协作图、状态图、活动图

一、时序图简述:

时序图(Sequence Diagram):描述对象之间的交互行为,按照时间顺序排列。

元素:

角色(Actor):人/系统

对象(Object):

生命线(Lifeline):对象存在的时间

控制焦点(FocusofControl):表示时间段的符号

消息(Message):

同步消息(SynchronousMessage):等待结果。

异步消息(AsynchronousMessage):不等待结果。

返回消息(ReturnMessage):从过程调用返回

自关联消息(Self-Message):统一的对象中方法的自身调用/相互调用。

二、如何绘制时序图?

时序图是如何绘制的呢?它和类图之间是什么关系呢?时序图的绘制和三层架构之间又是如何联系的呢?下面的内容将解答您所有的疑惑:

用一个纯三层的例子描述时序图是如何实现系统登陆的:

1、首先,绘制类图:

U层作用:输入+显示+简单判断,如:frmLogin类

B层作用业务逻辑(理解什么是也要业务,对于时序图的绘制是很重要的!)是本系统中所特有的功能。如:LoginBLL类

D层作用:针对数据库中表的数据进行增删改查。如:UserDAL类、UserJobRecordDAL类。

2、其次,绘制时序图:(注:A向B的传递消息=A调用B的方法)

PS:图中传递的消息,解析如下:

frmLogin类属于U层,解析如下:

isEmpty:判断是否为空

isRightful:判断输入的合法性(是否含有非法字符)

LoginBLL类属于B层,解析如下:

Login(UserName,Password):登陆,并把用户输入的UserName,Password传递进去。

QueryUserByUserName(UserName):把U层传递的UserName传递至D层,以获取该系统用户的信息(密码、状态)。

isEmpty:判断获取的信息是否为空。若为空,则数据库中不存在该用户名,则登陆失败。

isPasswordRight:判断用户名和密码是都匹配。

isOnDuty:判断该用户是否处于上机状态,若已经处于上机状态,则不允许二次登陆。

UserDAL类、UserJobRecordDAL类属于D层,解析如下:

QueryUserByUserName(UserName):按照用户名查询,User表中含有UserName的信息。

ModifyUser(UserState):若登陆成功,则修改User表中,该UserName 的状态一项为“正在值班”,

AddUserJobRecord:并在UserJobRecord表中添加一条关于该UserName 的上机记录。

三、如何确定三层中应该放什么类呢?

1、Entity:数据库中有N个表,则Entity层中就有N个类,和数据库中的表一一对应。

2、D层:D层是对数据库的增删改查,则D层中有N个类,分别对应N个表均有增删改查的操作。当然您也可以增加如静态数据、枚举类型……的实体类。

3、U层:主要放窗体类,有M个窗体,U层中就有M个类

图示如下:

那么,B层中的类,该如何划分呢?有两种划分方式:

1、B层中的类,可以由该系统的功能/用例推导出。如:登陆Login用例是用户的一项功能。因此,可以在B层中写LoginBLL类。这样划分的特点是,有多少个用例,B层中就有多少个类。类的划分粒度比较细,该类的方法比较少,功能职责单一。但是数目比较多。

2、另一种方法是,由D层推导出,即D层有多少个类,B层就有多少个类,也就是说B层中的类和D层中的类是一一对应的关系。这种划分方式的特点在于:B层中的类数目比较少,相对而言方法就比较多,违背了单一职责的原则。

上如两种方式各有优缺点,仅供参考,如有建议欢迎指出。

【UML九种图系列】之如何利用三层来绘制类图、时序图?的更多相关文章

  1. UML九种图 之 包图和对象图

    前言     对象图和包图依然是对系统的静态的描写叙述.UML九种图加上包图,事实上是十幅图. 包图     1.构成           2.包中的元素      类.接口.用例.构件.其他包等.( ...

  2. UML九种图-包图、类图

    UML九种图-包图.类图 一.包 (一)相关概念: 1.包: 一个包=一层=一个命名空间=一个文件夹 2.包的命名: 简单名:王老二 路径名:中国.河北省.廊坊市.廊坊师范学院.信息技术提高班.九期班 ...

  3. 【转】浅谈UML的概念和模型之UML九种图

    原文地址:浅谈UML的概念和模型之UML九种图 目录: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UML的视图,在每一种视图中都包含一个或多种图.本文我们重点讲解UML每种图的 ...

  4. 浅谈UML——九种图(一)

    前言 学UML将近两个星期了,对UML有了一定的了解,学过的没学过的都知道UML中最最最核心的部分要数那九个图了.浅谈UML九种图. 实例 1.用例图: 什么是用例?描绘一个系统外在可见的需求情况,是 ...

  5. 【聚沙成塔系列】之《UML九种图-包图、类图》

    一.包 (一)相关概念: 1.包: 一个包=一层=一个命名空间=一个文件夹 2.包的命名: 简单名:王老二 路径名:中国.河北省.廊坊市.廊坊师范学院.信息技术提高班.九期班.王老 3.可见性: +公 ...

  6. 浅谈UML的概念和模型之UML九种图

    1.用例图(use case diagrams) [概念]描述用户需求,从用户的角度描述系统的功能 [描述方式]椭圆表示某个用例:人形符号表示角色 [目的]帮组开发团队以一种可视化的方式理解系统的功能 ...

  7. UML九种图作用简介

    UML(统一建模语言):是面向对象的可视化建模语言. UML中有3种构造块:事物.关系和图,事物是对模型中最具有代表性的成分的抽象,关系是把事物结合在一起,图聚集了相关的事物 UML中有九种图如下: ...

  8. [UML]转:浅谈UML的概念和模型之UML九种图

    转自:http://blog.csdn.net/jiuqiyuliang/article/details/8552956 目录: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UM ...

  9. UML 小结(6)- UML九种图的比较与学习

    UML中的九种图: 用例图.类图.对象图.状态图.时序图.协作图.活动图.部署图.构件图. 1)用例图(Use Case Diagram) 它是UML中最简单也是最复杂的一种图.说它简单是因为它采用了 ...

随机推荐

  1. sqlserver 三种恢复模式

    sql server数据库提供了三种恢复模式:完整,简单和大容量日志,这些模式决定了sql server如何使用事务日志,如何选择它要记录的操作,以及是否截断日志.截断事务日志是删除己执行事务并把该日 ...

  2. UIViewController XIB/NIB加载过程

    UIViewController中关于nib初始化的函数 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBu ...

  3. ZOJ2971 Give Me the Number 【模拟】

    这道题目使用Map. 然后一次性遍历下来即可. QAQ 注意初始化的时候小心点不要错.. Source Code: //#pragma comment(linker, "/STACK:167 ...

  4. 04-C语言数据类型

    目录: 一. 注释 二.数据类型 三. 输入函数scanf 四.转义符\ 五.char数据范围 六.int整形 七.float与double 八.进制转换 回到顶部 一. 注释 1 解释代码的意义,注 ...

  5. C++编译时函数名修饰约定规则(很具体),MFC提供的宏,extern "C"的作用

    调用约定: __cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数 ...

  6. Elven Postman(二叉树)

    Elven Postman Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  7. Bmp 解析 (2013-09-09 19:30:41)

    bmp 图片结构 位图格式(bmp)是显示图片的基本格式,其文件扩展名为*.BMP. 在Windows下,任何各式的图片文件(包括视频播放)都要转化为位图才能显示出来,其他各种格式的图片文件是在位图格 ...

  8. File类常见方法

    package file; import java.io.File; public class FileTest2 { public static void main(String[] args) { ...

  9. 利用ant的javac任务来编译程序使用ant的java任务来运行程序

    <?xml version="1.0" encoding="UTF-8"?> <project name="javaTest&quo ...

  10. centos安装python gcc sqlite

    终端中输入命令:yum install gcc -y yum install python -y yum install sqlite -y