zoukankan      html  css  js  c++  java
  • 【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层中的类数目比较少,相对而言方法就比较多,违背了单一职责的原则。

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


  • 相关阅读:
    ant+jenkins+jmeter接口自动化
    fiddler过滤指定的请求
    手机测试
    powerdesign和mysql连接
    testlink安装
    兼容性测试
    sqlserver的事务
    sqlserver中的锁-01
    sqlserve复制
    alwayson10-创建alwayson高可用性组侦听器
  • 原文地址:https://www.cnblogs.com/riskyer/p/3270965.html
Copyright © 2011-2022 走看看