如果是准备学习设计模式的同学,可以只了解类图相关的知识

而如果是在准备软件设计师考试的同学,或许会对你有点帮助

正在施工......

参考博客:https://blog.csdn.net/unique_perfect/article/details/104989118


UML 统一建模语言

统一建模语言(UML,Unified Modeling Language)是面向对象软件的标准化建模语言。UML因其简单、统一的特点,而且能表达软件设计中的动态和静态信息,目前已成为可视化建模语言的工业标准。在软件无线电系统的开发过程中,统一建模语言可以在整个设计周期中使用,帮助设计者缩短设计时间,减少改进的成本,使软硬件分割最优。

UML 中的三个基本模块:事务,关系,图。


UML 分类

类就像是工厂中的流水线,而对象就是流水线上制作出的产品。

UML 静态结构图

静态结构图就是基于类用于描述这条流水线的。

图名 作用
类图 表示分析设计领域的静态结构
对象图 表示系统中的多个对象在某一时刻的状态
包图 对UML的模型元素进行分组整理,还可以表示多个包之间的关系
构建图 表示构成软件的各个可重复再利用的部件的内部结构以及部件之间的相互关系
结合结构图 表示具有复杂内部结构的类或者构件的内部结构
部署图 表示系统执行时的硬件构成以及硬件节点之间的关系

UML 动态行为图

动态行为图基于对象用于描述这条流水线上的产品的交互、行为等。

图名 作用
用例图 表示从系统外部看到的系统所提供给用户可以使用的功能
活动图 表示某个业务的具体处理流程
状态图 表示某个对象在其生命周期内,各个状态之间的迁移变化及引起状体迁移的触发事件之间的关系

下面这三种图都属于(交互图)

图名 作用
顺序图 按照时间顺序从上到下来表示生命线之间的信息交互,可结合用例图表示某个用例的场景。
通信图 以参与交互的生命线之间的连接为着眼点表示生命线之间的信息交互。交互概念图:用活动图的形式表示多个交互之间的控制关系。
时序图 表示多个生命线的状态变化和时间之间的关系。

用例图

用例图是9种UML图中比较重要的图之一,它是由软件需求分析到最终实现的第一步,描述人们希望如何使用一个系统,最常用来描述系统以及子系统。

用例图的组成

事务 描述 图例
参与者(Actor) 与应用程序或系统进行交互的用户、组织或外部系统。
用例(UseCase) 用例就是外部可见的系统功能,对系统提供的服务进行描述。
子系统(Subsystem) 用来展示系统的一部分功能,这部分功能联系紧密。

用例图所包含的的关系

用例图中涉及的关系有:关联、泛化、包含、扩展。

a. 关联(Association)

表示参与者与用例之间的通信,任何一方都可发送或接受消息。

【箭头指向】:无箭头,将参与者与用例相连接,指向消息接收方

b. 泛化(Inheritance)

就是通常理解的继承关系。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。

【箭头指向】:指向父用例

c. 包含(Include)

提取公共交互,提高复用

【箭头指向】:指向分解出来的功能用例

d. 扩展(Extend)

“冻结”基用例以保持稳定,并且动态扩展基用例功能

【箭头指向】:指向基础用例

例子比如这是一个用户管理的用例图


类图

类图是描述系统中的类,以及各个类之间的关系的静态视图。是面向对象系统建模中最常用和最重要的图,是定义其他图的基础。

类图示例

一个Employee类,它包含private属性age,protected属性name,public属性email,package属性gender,public方法work()。

  • +、-、#、~ 表示属性及方法可见性

    • public 用 + 表示
    • private 用 - 表示
    • protected 用 # 表示
    • package 用 ~ 表示

接口的UML图示

在UML类图中,常见的有以下几种关系

关系 指向 例子 图示
泛化 从子类指向父类,或者子接口指向父接口。 类和子类的关系。比如学生类可以继承人类。
实现 箭头指向成员变量类。 两个类之间的关联,也可以是一个类和自身的关联。比如班级类和学生类,学生类作为成员变量存在于班级类中。
关联 箭头指向成员变量类。 两个类之间的关联,也可以是一个类和自身的关联。比如班级类和学生类,学生类作为成员变量存在于班级类中。
依赖 箭头指向入参类 一个类A使用到了另一个类B,但是这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。比如班级类和学生类,班级类作为学生类的方法入参。
聚合 菱形部分指向整体,箭头指向个体 整体和部分的关系。比如大雁和雁群之间的关系,两者不是生命周期不同。
组合 菱形部分指向整体 整体和部分关系、整体部分不可分离、比聚合更强。比如大雁和大雁翅膀的关系,两者是同生共死的。

类图示例


对象图、包图

对象图的组成

对象图中的建模元素有对象

对象之间的关系,被称为链。

对象是类的实例,链是关联的实例

对象的基本特征可以归纳为对象的属性行为两类,对象名必须小写

包图

可类比java中的包机制

包图只有依赖关系

当一个包将另一个包导入时,该包里的元素能够使用被导入包里的元

素,而不必在使用时通过包名指定其中的元素。

例如,当使用某个包中的类时,如果未将包导入,则需要使用包名加

类名的形式引用指定的类。在导入关系中,被导入的包称为目标包。

要在UML中显示导入关系,需要画一条从包连接到目标包的依赖性箭

头,再加上字符import,如图所示。

A包导入B包,则可以直接使用B包中的类。如果没有的话,则是B.类表示


活动图

活动图本质是上是一种流程图,但是活动图是面向对象的,而流程图是面

向过程的。

活动图与流程图的区别

区别 流程图 活动图
描述 着重描述处理过程(顺序分支循环)流程图做不到 描述的则是对象活动的顺序关系所遵循的规则。
思想 面向过程 面向对象
方向 有着严格的处理顺序和处理时间关系(不能表示并发活动的情形) 着重表现的是系统的行为,而非处理过程。(能够表示并发活动的情形)

活动图实例

网吧会员系统


顺序图(跟协作图,也叫做通信图等价)

顺序图主要有:对象、生命线、消息和激活。用来建模以时间顺序安排的对象交互,并且把用例行为分配给类。

  • 小人:动作的发起人
  • 矩形/小圆圈:对象
  • 实线箭头:调用
  • 虚线箭头:返回
  • 柱状:对象的生命周期,柱状不能断,在同一流程当中不能断。
  • 回折线:当前对象中的方法执行过程中调用自己当前类中的方法

顺序图和协作图的异同

  • 相同点

    • 顺序图和协作图都可以表示对象间的交互关系,但它们的侧重点不同。
    • 都能体现出系统用例的行为。
异同点 顺序图 协作图
对象间通信方式 用消息的几何排列关系来表达对象间交互消息的先后时间顺序。 用建模对象(或角色)间的通信关系。
描述对象 按时间顺序描述对象的消息交换过程 它描述对象间的组织协作关系

协作图

与顺序图等价

时序图

时序图侧重于描述时间对系统交互的影响,因此时序图的一个重要的特

征是加入了时间元素。 时序图上的时间由左到右横跨页面。

状态图

一般不去描述参与者类对象的状态。要描述的是系统内部的

核心对象的状态。

活动图与状态图

活动图描述的是用例的行为,而状态图描述的是对象。

活动图可以包含多个对象。而状态图只可以包含一个对象。

构造实现方式图

包括有组件图跟部署图

组件图

组件图显示软件组件的组织以及组件之间的依赖关系,包

括源代码组件、二进制代码组件以及可执行组件。

包括组件、接口、依赖关系

组件图实例

组件与类的比较

  • 相同点

    • 两者都有名称;
    • 都可以实现一组接口;
    • 都可以参与依赖关系;
    • 都可以被嵌套;
    • 都可以有实例;
    • 都可以有参数和交互;
  • 不同点

    • 类描述了软件设计的逻辑组织和意图
    • 而组件则描述软件设计的物理实现(即:每个组件体现了系统设计中特定类的实现)

部署图

组件图用来建模软件组件,而部署图用来对部署系统时涉及到的硬件进行建模。
节点表示一种硬件。组件表示逻辑元素的物理包装,即类的物理包装,而节点表示组件的物理配置。
节点的种类:处理器跟设备。
处理器是能够执行软件、具有计算能力的节点。
设备是没有计算能力的节点,通常情况下都是通过其接口为外部提供某种服务

部署图实例

【UML】统一建模语言的更多相关文章

  1. 技术人应该学习的行话--UML统一建模语言

    新生代码农如何在硝烟弥漫的商业丛林中生存和崛起? 洞见,让一部分先遇见未来. 最近公司技术部在组织架构师培训,有幸参与.导师老刘特别推荐了UML语言的学习.回想多年来,自己习惯做一些流程图,框图或者所 ...

  2. 设计模式学习总结(一)——设计原则与UML统一建模语言

    一.概要 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计 ...

  3. 1. UML统一建模语言

    (1)UML概述: 建模: 对现实系统进行适当的过滤, 用适当的表现规则描述出简洁的模型. 建模是一种深入解决问题的方法. UML: UML(United Modeling Language, 统一建 ...

  4. UML统一建模语言

    概述 统一建模语言(UML)是一种图形化的语言,用于软件密集系统要素的可视化.制定规范.构建对象和编写文档.UML提供了一种标准的方式来描述系统的设计图,既包括概念方面,例如业务过程和系统功能,也包括 ...

  5. 2017.12.23 第二章 统一建模语言UML概述

    第二章 统一建模语言UML概述 (1)为什么要建模 模型是某个事物的抽象,其目的是在构建这个事物之前先来理解它,因为模型忽略了那些非本质的细节,这样有利于更好的理解和表示事物: 在软件系统开发之前首先 ...

  6. UML标准建模语言与应用实例

    一.基本信息 标题:UML标准建模语言与应用实例 时间:2012 出版源:科技创新导报 领域分类:UML标准建模语言 面向对象 系统分析与设计 二.研究背景 问题定义:UML建模语言用图形来表现典型的 ...

  7. 统一建模语言UML---类图

    什么是统一建模语言,来看看百科中的介绍统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明.可视化和编制文档的一种标准语言,是非专利的第三代建模 ...

  8. 统一建模语言UML

    目录 1. UML定义 2. UML结构 2.1 视图(View) 2.2 图(Diagram) 2.3 模型元素(Model element) 2.4 通用机制(General mechanism) ...

  9. UML2.0统一建模语言

      Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规 ...

随机推荐

  1. Two---python循环语句/迭代器生成器/yield与return/自定义函数与匿名函数/参数传递

    python基础02 条件控制 python条件语句是通过一条或多条语句的执行结果(Ture或者False)来执行的代码块 python中用elif代替了else if,所以if语句的关键字为:if- ...

  2. java中为什么只存在值传递(以传入自定义引用类型为例)

    java中只有值传递 为什么这么说?两个例子: public class Student { int sage = 20; String sname = "云胡不归"; publi ...

  3. nmtui 字符界面图形模式配置

    一.通过nmtui配置网络参数 Linux系统配置网络参数的方式有很多种,其中最简单最直接的方式就是直接修改网卡配置文件,但这种方式也很容易出错,比如说IPADDR.NETMASK.GATEWAY等参 ...

  4. JavaScript的入门

    书写的三种方式 1. 书写在script标签里面(一般会用到的) 2.书写在js文件里面(推荐)定义一个js文件(xxx.js) 3. 书写对应的事件属性里面(比较少用) 初体验 1. 目前js的代码 ...

  5. HMS Core Discovery第17期直播预告|音随我动,秒变音色造型师

    [导读] 随着音视频内容品类的不断丰富及音乐创作门槛不断降低,大量用户正热切的参与到全民创作的大潮中.我们应该怎么去拥抱移动端影音潜力市场?音频编辑又可以有什么新玩法? 本期直播<音随我动,秒变 ...

  6. LOJ#6089 小 Y 的背包计数问题 - DP精题

    题面 题解 (本篇文章深度剖析,若想尽快做出题的看官可以参考知名博主某C202044zxy的这篇题解:https://blog.csdn.net/C202044zxy/article/details/ ...

  7. C++中的cout.setf(ios::fixed)是什么意思?

    问题描述:在阅读一段代码时,发现代码的最后一部分出现 ... cout.setf(ios::fixed); cout.setf(ios::showpoint); ... 解决: cout.setf() ...

  8. 面试突击79:Bean 作用域是啥?它有几种类型?

    Spring 框架作为一个管理 Bean 的 IoC 容器,那么 Bean 自然是 Spring 中的重要资源了,那 Bean 的作用域是什么意思?又有几种类型呢?接下来我们一起来看. PS:Java ...

  9. 踩坑 Windows 服务来宿主 .NET 程序

    本文所指的 .NET 程序为 .NET6 的程序.因为 .NET 的版本更新很快,所以方式.方法也有变化,所以网上搜到的方法有些也过时了.以下是最近我实践下来的一点心得(坑). 上一篇说到 不安装运行 ...

  10. helm安装csi-driver-smb-v1.9.0

    Application version v1.9.0 Chart version v1.9.0 获取chart包 helm repo add csi-driver-smb https://raw.gi ...