zoukankan      html  css  js  c++  java
  • 【工具大道】UML的点点滴滴

    本文地址

     

          点击关注微信公众号 wenyuqinghuai

    分享提纲:

      1. 概述

      2. UML类图

      3. UML时序图

      4. 参考资料 

     

    1.概述

     
      1.1)百度百科
              又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置
     
      2)【分类
        UML有很多种图,大体可以分为两类:
          结构型的图(Structure Diagram)
          类图(Class Diagram)
          对象图(Object Diagram)
          构件图(Component Diagram)
          部署图(Deployment Diagram)
          包图(Package Diagram)
          行为型的图(Behavior Diagram)
          活动图(Activity Diagram)
          状态机图(State Machine Diagram)
          顺序图(Sequence Diagram)
          通信图(Communication Diagram)
          用例图(Use Case Diagram)
          时序图(Timing Diagram)
     
     
     

    2. UML类图

    参考链接

     
     2.1)一个示例
     
     
      2.2)类之间的关系

    泛化关系(generalization)

    类的继承结构表现在UML中为:泛化(generalize)与实现(realize):

    继承关系为 is-a的关系;两个对象之间如果可以用 is-a 来表示,就是继承关系:(..是..)

    eg:自行车是车、猫是动物

    泛化关系用一条带空心箭头的直接表示;如下图表示(A继承自B);

    uml_generalization

    eg:汽车在现实中有实现,可用汽车定义具体的对象;汽车与SUV之间为泛化关系;

    uml_generalize

    注:最终代码中,泛化关系表现为继承非抽象类;

     

     

    实现关系(realize)

    实现关系用一条带空心箭头的虚线表示;

    eg:”车”为一个抽象概念,在现实中并无法直接用来定义对象;只有指明具体的子类(汽车还是自行车),才 可以用来定义对象(”车”这个类在C++中用抽象类表示,在JAVA中有接口这个概念,更容易理解)

    uml_realize

    注:最终代码中,实现关系表现为继承抽象类;

     

     

    聚合关系(aggregation)

    聚合关系用一条带空心菱形箭头的直线表示,如下图表示A聚合到B上,或者说B由A组成;

    uml_aggregation

    聚合关系用于表示实体对象之间的关系,表示整体由部分构成的语义;例如一个部门由多个员工组成;

    与组合关系不同的是,整体和部分不是强依赖的,即使整体不存在了,部分仍然存在;例如, 部门撤销了,人员不会消失,他们依然存在;

     

     

    组合关系(composition)

    组合关系用一条带实心菱形箭头直线表示,如下图表示A组成B,或者B由A组成;

    uml_composition

    与聚合关系一样,组合关系同样表示整体由部分构成的语义;比如公司由多个部门组成;

    但组合关系是一种强依赖的特殊聚合关系,如果整体不存在了,则部分也不存在了;例如, 公司不存在了,部门也将不存在了;

     

     

    关联关系(association)

    关联关系是用一条直线表示的;它描述不同类的对象之间的结构关系;它是一种静态关系, 通常与运行状态无关,一般由常识等因素决定的;它一般用来定义对象之间静态的、天然的结构; 所以,关联关系是一种“强关联”的关系;

    比如,乘车人和车票之间就是一种关联关系;学生和学校就是一种关联关系;

    关联关系默认不强调方向,表示对象间相互知道;如果特别强调方向,如下图,表示A知道B,但 B不知道A;

    uml_association

    注:在最终代码中,关联对象通常是以成员变量的形式实现的;

     

     

    依赖关系(dependency)

    依赖关系是用一套带箭头的虚线表示的;如下图表示A依赖于B;他描述一个对象在运行期间会用到另一个对象的关系;

    uml_dependency

    与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化;

    显然,依赖也有方向,双向依赖是一种非常糟糕的结构,我们总是应该保持单向依赖,杜绝双向依赖的产生;

    注:在最终代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;依赖关系处理临时知道对方外,还是“使用”对方的方法和属性;

     

    3.UML时序图

    参考链接

      3.1)时序图的概念

          时序图定义 : 描述了对象之间传递消息的时间顺序, 用来表示用例中的行为顺序, 是强调消息时间顺序的交互图;

          时序图描述的事物: 时序图描述系统中类和类之间的交互, 将这些交互建模成消息交换, 时序图描述了类以及类之间的交换完成的期望行为的消息, 时序图中每条消息都代表了类的一个操作 或者 引起状态机改变的触发事件;

             时序图表示 : 参与交互的对象在时序图顶端水平排列, 每个对象的底端绘制了一条垂直虚线, 对象A像对象B发送消息, 用一条带箭头的实线表示, 该实线起始于对象A底部的虚线, 终止于对象B底部的虚线; 实线箭头水平放置, 越靠近顶端越早被发送.

          时序图轨迹 : 时序图提供了随时间推移的清晰的 可视化的轨迹;



      3.2) 时序图组成

           时序图组成 : 时序图包括四个元素 对象(Object)生命线(Lifeline)激活(Activation)消息(Message);

          (1) 对象(Object)

          

          对象 : 时序图中的对象在交互中扮演的角色就是对象;


          对象的符号 : 时序图中的对象与对象图中的表示方法一样, 使用矩形将对象名称包含起来, 并且对象名称下有下划线;


          对象创建时机 : 对象可以在交互开始的时候创建, 也可以在交互过程中进行创建;

          -- 处于顶部 : 如果对象的位置在时序图顶部, 说明在交互开始的时候对象就已经存在了; 

          -- 不在顶部 : 如果对象的位置不在顶部, 那么对象在交互过程中创建的;



         (2) 生命线(Lifeline)


          


          生命线 : 生命线是一条垂直的虚线, 这条虚线表示对象的存在, 在时序图中, 每个对象的底部都有生命线;


          生命线作用 : 生命线是一个时间线, 从时序图顶部一直到底部都存在, 其长度取决于交互的时间;


          对象的生命线 : 对象与生命线结合在一起就是对象的生命线, 这个概念包含对象图标 以及 对象下面的生命线图标 如上图;


          (3) 激活(Activation)


          


          激活(Activation) : 代表时序图中对象执行一项操作的时期, 激活期可以理解为语义中 {} 中的内容, 表示该对象被占用以完成某个任务;


          去激活(Deactivation) : 指对象处于空闲状态, 在等待消息激活这个对象;


          激活的表示 : 当对象处于激活时期, 生命线可以拓宽为矩形, 这个矩形条成为激活条; 


          激活去激活的时机 : 

          -- 激活 : 对象激活是在激活条的顶部激活;

          -- 去激活 : 激活条的底部去激活, 通常发生在一个消息离开对象生命线; 



        (4) 消息


          消息概念 : 定义 交互 和 协作 中 交换信息 的类, 对 对象之间的 通信内容 建模;


          消息动作 : 

    -- 动作种类 : 消息允许在实体间传递信息 (传递参数), 允许实体请求其它服务, 对象之间通过 发送 和 接收 消息 进行通信; 

    -- 产生结果 : 消息可以触发操作唤起信号, 或使目标对象创建 或 销毁;


    消息的异步和同步通信 : 

    -- 异步通信 : 消息是信号的时候, 发送信号之后, 等待对方触发相应方法, 这是明确的 命名的 对象间的异步通信;

    -- 同步通信 : 直接调用对象的方法, 执行方法返回结果, 这种具有返回控制机制的操作是同步通信;


    时序图和协作图中消息的区别 : 时序图中的消息强调顺序, 协作图中的消息强调交换消息的对象间的关系;


    消息类型 :

    --  : 两个对象间绘制消息;

    --  : 两个对象之间的过程调用;

    --  : 两个对象之间的异步消息;

    --  : 过程调用中返回的消息;

           --  : 绘制反身消息;

      3.3)一个时序图示例

     

     

     4. 参考资料

      1)看懂UML类图和时序图:http://www.cnblogs.com/me115/p/4092632.html

      2)UML入门 之 交互图 -- 时序图 协作图详解 :http://blog.csdn.net/doniexun/article/details/38317537

     
     
  • 相关阅读:
    1.GoldenEye
    centos系统安装问题 dracut-initqueue timeout
    pycharm2019永久激活
    webshell不同马文件分类
    frp内网穿透工具
    永久关闭windows defender
    Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现
    python 基础(三)
    bugku-web(头等舱)
    bugku-web(变量1)
  • 原文地址:https://www.cnblogs.com/aiweixiao/p/6526137.html
Copyright © 2011-2022 走看看