【UML九种图系列】之如何利用三层来绘制类图、时序图?
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九种图系列】之如何利用三层来绘制类图、时序图?的更多相关文章
- UML九种图 之 包图和对象图
前言 对象图和包图依然是对系统的静态的描写叙述.UML九种图加上包图,事实上是十幅图. 包图 1.构成 2.包中的元素 类.接口.用例.构件.其他包等.( ...
- UML九种图-包图、类图
UML九种图-包图.类图 一.包 (一)相关概念: 1.包: 一个包=一层=一个命名空间=一个文件夹 2.包的命名: 简单名:王老二 路径名:中国.河北省.廊坊市.廊坊师范学院.信息技术提高班.九期班 ...
- 【转】浅谈UML的概念和模型之UML九种图
原文地址:浅谈UML的概念和模型之UML九种图 目录: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UML的视图,在每一种视图中都包含一个或多种图.本文我们重点讲解UML每种图的 ...
- 浅谈UML——九种图(一)
前言 学UML将近两个星期了,对UML有了一定的了解,学过的没学过的都知道UML中最最最核心的部分要数那九个图了.浅谈UML九种图. 实例 1.用例图: 什么是用例?描绘一个系统外在可见的需求情况,是 ...
- 【聚沙成塔系列】之《UML九种图-包图、类图》
一.包 (一)相关概念: 1.包: 一个包=一层=一个命名空间=一个文件夹 2.包的命名: 简单名:王老二 路径名:中国.河北省.廊坊市.廊坊师范学院.信息技术提高班.九期班.王老 3.可见性: +公 ...
- 浅谈UML的概念和模型之UML九种图
1.用例图(use case diagrams) [概念]描述用户需求,从用户的角度描述系统的功能 [描述方式]椭圆表示某个用例:人形符号表示角色 [目的]帮组开发团队以一种可视化的方式理解系统的功能 ...
- UML九种图作用简介
UML(统一建模语言):是面向对象的可视化建模语言. UML中有3种构造块:事物.关系和图,事物是对模型中最具有代表性的成分的抽象,关系是把事物结合在一起,图聚集了相关的事物 UML中有九种图如下: ...
- [UML]转:浅谈UML的概念和模型之UML九种图
转自:http://blog.csdn.net/jiuqiyuliang/article/details/8552956 目录: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UM ...
- UML 小结(6)- UML九种图的比较与学习
UML中的九种图: 用例图.类图.对象图.状态图.时序图.协作图.活动图.部署图.构件图. 1)用例图(Use Case Diagram) 它是UML中最简单也是最复杂的一种图.说它简单是因为它采用了 ...
随机推荐
- jQuery遍历table
1. $("table").find("tr").each(function(){ $(this).find("td").each(func ...
- AS3清空数组的四种方法
第一种最简单的方法是: var arr:Array = ["a", "b", "c", "d", "e&quo ...
- 在storyboard中设置控件的layerbordercolor
在SB中控件可以在SB中直接利用kvc 设置一些属性值,不如layerwidth等 但是不能更改和颜色有关的属性因为layerbordercolor是CGColor.通过为CALayer增加属性可以实 ...
- 基于visual Studio2013解决算法导论之017查找第n小元素
题目 查找第n小元素 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> ...
- Ruby学习-第一章
第一章 字符串,数字,类和对象 为了证明Ruby真的好用,hello world也能写的如此简洁: puts 'hello world' 1.输入/输出 print('Enter your name' ...
- Sql 增加字段(有些只能在ORACLE中运行)
增加字段 alter table table_name add column_name varchar(200) 删除字段 ALTER TABLE table_NAME DROP COLUMN col ...
- PLSQL Developer过期要注冊表
打开执行输入 regedit 打表注冊表 删除 HKEY_CURRENT_USER\Software\Allround Automations HKEY_CURRENT_USER\Software\M ...
- 【LeetCode】Repeated DNA Sequences 解题报告
[题目] All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: &quo ...
- c++ 重载,覆盖,重定义 2
前一篇 http://www.cnblogs.com/iois/p/4085173.html 写有些地方不够准确,重新整理了一遍 函数重载(Function Overloading) C++允许同一范 ...
- BZOJ 1025: [SCOI2009]游戏( 背包dp )
显然题目要求长度为n的置换中各个循环长度的lcm有多少种情况. 判断一个数m是否是满足题意的lcm. m = ∏ piai, 当∑piai ≤ n时是满足题意的. 最简单我们令循环长度分别为piai, ...