前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UML各种图

UML各种图

作者头像
用户3467126
发布2021-09-03 15:46:53
1.1K0
发布2021-09-03 15:46:53
举报
文章被收录于专栏:爱编码爱编码

定义

UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。下面将对UML的九种图+包图的基本概念进行介绍以及各个图的使用场景。

UML分类

如下图所示,UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动分为静态视图和动态视图。静态图分为:用例图,类图,对象图,包图,构件图,部署图。动态图分为:状态图,活动图,协作图,序列图。

1、用例图

1.1、定义 用例图是描述用例、参与者以及它们之间关系的图。

用例图主要回答了两个问题:1、是谁用软件。2、软件的功能。

强调用户的使用者,系统为执行者完成哪些功能,如下图:

1.2、作用:

  • 1.用例图是从用户的角度来描述对信息系统的需求,分析产品的功能和行为。
  • 2.用例图定义和描述了系统的外部可见行为,是分析、设计直至组装测试的重要依据。
  • 3.让用户参与前期的系统分析与设计。

1.3、用例图各种关联关系:

1.3.1、参与者与用例间的关联关系 参与者与用例之间的通信,也成为关联或通信关系。

1.3.2、用例与用例之间的关系

1、包含关系(include)

描述的是一个用例需要某种功能,而该功能被另外一个用例定义,那么在用例的执行过程中,就可以调用已经定义好的用例。表示符号<<include>>

2、扩展关系 用一个用例(可选)扩展另一个用例(基本例)的功能。符号表示<<extend>>

2、类图(Class Diagrams)

用户根据用例图抽象成类,描述类的内部结构和类与类之间的关系,是一种静态结构图。在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。

各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

依赖

依赖(dependency)关系: 也是类与类之间的连接. 表示一个类依赖于另一个类的定义. 依赖关系总是单向的 。可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用。

在java 中. 依赖关系体现为: 局部变量, 方法中的参数, 和对静态方法的调用.

关联

关联(association)关系: 表示类与类之间的联接, 它使一个类知道另一个类的属性和方法. 关联可以使用单箭头表示单向关联, 使用双箭头或不使用箭头表示双向关联, 不建议使用双向关联. 关联有两个端点, 在每个端点可以有一个基数, 表示这个关联的类可以有几个实例.

常见的基数及含义:

  • 0..1:0 或1 个实例.
  • 0..*: 对实例的数目没有限制.
  • 1: 只能有一个实例.
  • 1..*: 至少有一个实例.

他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的,表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;在java 语言中关联关系是使用实例变量实现的.

聚合

聚合(aggregation)关系: 关联关系的一种特例, 是强的关联关系. 聚合是整体和个体之间的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;

聚合关系也是使用实例变量实现的. 从java 语法上是分不出关联和聚合的.

关联关系中两个类是处于相同的层次, 而聚合关系中两不类是处于不平等的层次, 一个表示整体, 一个表示部分.

组合

组合(compostion)也是关联关系的一种特例,体现的是一种contain-a关系,比聚合更强,是一种强聚合关系。它同样体现整体与部分的关系,但此时整体与部分是不可分的,整体生命周期的结束也意味着部分生命周期的结束,反之亦然。如大脑和人类。

实现

实现(realization)是指一个class实现interface接口(一个或者多个),表示类具备了某种能力,实现是类与接口中最常见的关系,在Java中通过implements关键字来表示。

泛化

泛化(generalization)关系时指一个类(子类、子接口)继承另外一个类(称为父类、父接口)的功能,并可以增加它自己新功能的能力,继承是类与类或者接口与接口最常见的关系,在Java中通过关键字extends来表示。

3、对象图(Object Diagrams)

对象图(Object Diagram)描述的是参与交互的各个对象在交互过程中某一时刻的状态。和类图一样,对象图对系统的静态设计或静态进程视图建模,对象图更注重现实或原型实例,这种视图主要支持系统的功能需求,对象图描述了静态的数据结构。对象图可以被看作是类图在某一时刻的实例。

4、状态图(Statechart Diagrams)

状态图(Statechart Diagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应。

状态图的作用主要体现在以下几个方面。

  • 状态图清晰地描述了状态之间的转换顺序,通过状态的转换顺序也就可以清晰地看出事件的执行顺序。如果没有状态图我们就不可避免地要使用大量文字来描述外部事件的合法顺序。
  • 清晰的事件顺序有利于程序员在开发程序时避免出现事件顺序错误的情况。例如,对于一个网上销售系统,在用户处于登录状态前是不允许购买商品的,这就需要程序员开发程序的过程中加以限制。
  • 状态图清晰地描述了状态转换时所必需的触发事件、监护条件和动作等影响转换的因素,有利于程序员避免程序中非法事件的进入。例如,飞机起飞前半小时不允许售票,在状态图中就可以清晰地看到,可以提醒程序员不要遗漏这些限制条件。
  • 状态图通过判定可以更好地描述工作流因为不同的条件发生的分支。例如,当一个班的人数少于10人的时候需要和其他班合为一班上课,大于10人则单独上课,在状态图中就可以很明确地表达出来。

5、活动图(Activity Diagrams)

活动图:用于表示系统中各种活动的次序,它的应用非常广泛,即可用来描述用例的工作流程,也可用来描述类中某个方法的操作行为。常用于表示业务流程,对系统功能建模,强调对象之间的控制流。活动图是由状态图变化而来的,活动图依据对象状态的变化来捕获动作。活动图中一个活动结束后将立即进入下一个活动,状态图中状态的变迁可能需要事件的触发。主要用于系统功能建模。

  • 活动图VS传统流程图:程序流程图明确地指定了每个活动的先后顺序,而活动图仅描述了活动和必要的工作顺序,这是两者的根本区别。另外,流程图限于顺序进程,而活动图支持并发进程。
  • 活动图VS状态图:状态图注重于由事件驱动的系统的变化状态;活动图注重于从活动到活动的控制流。活动图是状态机的一种特殊情况,其中全部或大多数状态是活动状态,并且全部或大多数转换时通过源状态中活动的完成来触发的。活动图适应状态机的全部特征。活动图和状态图在对一个对象的生命周期建模时都是有用的。

5.1、简单活动图

5.2、带泳道的活动图

5.3、带对象流的活动图

6、序列图-时序图(Sequence Diagrams)

时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。

序列图中涉及的元素:

6.1、生命线

生命线名称可带下划线。当使用下划线时,意味着序列图中的生命线代表一个类的特定实例。

6.2 同步消息

6.3 异步消息

6.4 注释

6.5 约束

6.6 组合

组合片段用来解决交互执行的条件及方式。它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。常用的组合片段有:抉择、选项、循环、并行。

7、协作图(Collaboration Diagrams)

协作图,又作“通信图”。即Communication Diagram,而“协作”作为一个结构事物用于表达静态结构和动态行为的概念组合,表达不同事物相互协作完成一个复杂功能。故UML 2.0以后通信图不再是协作图,没有专门的”协作图“,只有”协作“。

时序图按照时间顺序布图,而协作图按照空间结构布图

8、构件图(Component Diagrams)

构件图主要用于描述各种软件构件之间的依赖关系,例如,可执行文件和源文件之间的依赖关系,所设计的系统中的构件的表示法及这些构件之间的关系构成了构件图。

构件及构件接口表示法

一个简单的构件图

9、部署图(Deployment Diagrams)

部署图(deployment diagram,配置图)是用来显示系统中软件和硬件的物理架构。从部署图中,您可以了解到软件和硬件组件之间的物理关系以及处理节点的组件分布情况。使用部署图可以显示运行时系统的结构,同时还传达构成应用程序的硬件和软件元素的配置和部署方式。

描述了一个运行时的硬件结点,以及在这些结点上运行的软件组件的静态视图。部署图显示了系统的硬件,安装在硬件上的软件,以及用于连接异构的机器之间的中间件。

总结

UML图是软件工程的组成部分,软件工程从宏观的角度保证了软件开发的各个过程的质量。而UML作为一种建模语言,更加有效的实现了软件工程的要求。

如下图,在软件的各个开发阶段需要的UML图。

参考文章

https://www.cnblogs.com/jiangds/p/6596595.html

https://www.iteye.com/blog/justsee-808799

https://www.cnblogs.com/hellowzl/p/10130470.html

https://blog.csdn.net/fly_zxy/article/details/80911942

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱编码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义
  • UML分类
  • 1、用例图
  • 2、类图(Class Diagrams)
    • 依赖
      • 关联
        • 聚合
          • 组合
            • 实现
              • 泛化
              • 3、对象图(Object Diagrams)
              • 4、状态图(Statechart Diagrams)
              • 5、活动图(Activity Diagrams)
              • 6、序列图-时序图(Sequence Diagrams)
              • 7、协作图(Collaboration Diagrams)
              • 8、构件图(Component Diagrams)
              • 9、部署图(Deployment Diagrams)
              • 总结
              • 参考文章
              相关产品与服务
              消息队列 TDMQ
              消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档