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

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

正在施工......

参考博客: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. java学习第三天常用类.day12

    String String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了 如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & String ...

  2. Vite + TS 项目导入 jQuery 包时报错:Could not find a declaration file

    TypeScript 需要类型标注,当使用第三方库(除 ts 以外写的库,即 js)时,又缺少声明文件,我们需要引用它的声明文件,才能获得对应的代码补全.接口提示等功能.jQuery 不是 TypeS ...

  3. as 和 which 引导非限制性定语从句的区别

    定语从句关系代词作用表格:as 和 which 都可以指代整个句子.as 引导非限制性定语从句可以放在主句之前.主句之后.主句之中:which 引导非限制性定语从句只能放在先行词之后. (一)As i ...

  4. 从零开始Blazor Server(14)--修改密码

    目前,我们只做了在用户管理里强行修改密码,而没有做用户自行修改密码的功能,今天我们来实现它. 首先,我们的用户密码修改最好的位置应该就是在头像下面的下拉菜单里,所以我们在那里的LinkTemplate ...

  5. 圆形谷仓Circular Barn_Silver---(DP优化 / )队列 + 贪心(复杂度O(2n))---DD(XYX)​​​​​​​的博客

    目录 小数据 大数据 小数据 题目描述 农夫约翰有一个圆形的谷仓,谷仓分成了环形的n(3≤n≤1000)个房间,编号为1 , 2 , -- .每个房间有三个门,两个门通往两个相邻的房间,第三个门朝外. ...

  6. springboot配置(yami配置文件,JSR303数据校验,多环境配置)

    yami配置文件 YAML是 "YAML Ain't a Markup Language" (YAML不是一种标记语言)的递归缩写.在开发的这种语言时,YAML 的意思其实是:&q ...

  7. Python入门系列(一)安装环境

    python是什么 python是一门很受欢迎的语言,除了不能生孩子以外,其它都可以做. 它擅长的领域是脚本工具和科学数据这一块,比如大数据,数据分析什么的. python安装 为了演示和验证教程可用 ...

  8. MySQL InnoDB缓存

    1. 背景 对于各种用户数据.索引数据等各种数据都是需要持久化存储到磁盘,然后以"页"为单位进行读写. 相对于直接读写缓存,磁盘IO的成本相当高昂. 对于读取的页面数据,并不是使用 ...

  9. 最新一线大厂Redis使用21条军规及详细解读

    说明:个人原创,本人在一线互联网大厂维护着几千套集群,关于redis使用的一些坑进行了经验总结,希望能给大家带来一些帮助 适用场景:并发量大.访问量大的业务 规范:介绍军规内容 解读:讲解军规设置原因 ...

  10. MySQL读写分离之——ProxySQL

    文章转载自:https://blog.csdn.net/u012280685/article/details/113520692?spm=1001.2014.3001.5501 实现一个简单的读写分离 ...