目录
1. UML简介
2. UML中的事物(Things)
3. UML中的关系(Relationships)
4. UML中的图形(Diagrams)
4.1 用例图
4.2 静态图
4.3 行为图
4.4 实现图
参考
UML是用来对软件系统进行可视化 、描述 、构造 和文档化 的通用建模语言。
融合了多种面向对象的建模方法,利用图形与符号 ,直观地表达与展示 ,链接了不同行业/不同专业的人士,搭建起了业界沟通的桥梁。
UML中的三个基本构造块是:事务、关系、图 。
UML中的事物也称为建模元素,包括结构事物、行为事物、分组事物、注释事物 。这些事务是UML模型中最基本的面向对象的构造块。
1)结构事物:结构事物在模型中属于最静态的部分,代表概念上或物理上的元素。总共有7种结构事件
类
类是描述具有相同属性、方法、关系和语义对象的集合。一个类实现一个或多个接口
接口
接口是类或构件提供特定服务的一组操作的集合。因此,一个接口描述了类或构件的对外可见的动作。
协作
协作定义了交互的操作,是一些角色和其他元素一起工作,提供一些合作的动作。这些动作比元素的总和要大。因此,协作具有结构化、动作化的特性。一个给定的类可能是几个协作的组成部分。这些协作代表构成系统的模式的实现
用例
用例是描述一系统的动作,这些动作是系统对一个特定角色执行,产生值得注意的结果的值。在模型中用例通常用于组织行为事物。用例是通过协作来实现的
活动类
活动类是这种类,它的对象有一个或多个进程或线程。活动类和类很相似,只是它的对象代表的元素的行为和其它的元素是同时存在的
构件
构件是物理上或可替换的系统部分,它实现了一个接口集合。在一个系统中,可能会遇到不同种类的构件
结点
结点是一个物理元素,它在运行时存在,代表一个可计算的资源,通常占用一些内存和具有处理能力。一个构件集合一般来说位于一个结点,但有可能从一个结点转到另外一个结点
2)行为事物:行为事物是UML模型中的动态部分。它们是模型的动词,代表时间和空间上的动作。
3)分组事物:分组事物是UML模型中组织的部分,可以把它们看成是个例子,模型可以在其中被分解。
4)注释事物:注释事物是UML模型的解释部分
关系存在于事物(类) 之间,关系把事务紧密联系在一起。一般有泛化关系、实现关系、依赖关系、关联关系、聚合关系、组合关系。
更详细地描述如下:
泛化关系(Generalization)
是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系,是 is-a 的关系。
在 UML 类图中,泛化关系用带空心三角箭头的实线来表示,箭头从子类指向父类。 在代码实现时,使用面向对象的继承机制来实现泛化关系。
实现关系(Realization)
是接口与实现类之间的关系。在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作。
在 UML 类图中,实现关系使用带空心三角箭头的虚线来表示,箭头从实现类指向接口。
依赖关系(Dependency)
一种使用关系,它是对象之间耦合度最弱的一种关联方式,是临时性的关联。例如:
代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责
在 UML 类图中,依赖关系使用带箭头的虚线来表示,箭头从使用类指向被依赖的类。
关联关系(Association)
是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。关联关系是类与类之间最常用的一种关系,分为一般关联关系 、聚合关系 和组合关系 ,这里指一般关联关系。
关联可以是双向的,也可以是单向的。在 UML 类图中,双向的关联可以用带两个箭头或者没有箭头的实线来表示,单向的关联用带一个箭头的实线来表示,箭头从使用类指向被关联的类。 在代码中通常将一个类的对象作为另一个类的成员变量来实现关联关系。
聚合关系(Aggregation)
是关联关系的一种,是强关联关系,是整体和部分 之间的关系,是has-a 的关系。
聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。
在 UML 类图中,聚合关系可以用带空心菱形的实线来表示,菱形指向整体。
组合关系(Composition)
是关联关系的一种,也表示类之间的整体与部分 的关系,但它是一种更强烈的聚合关系,是 contains-a 关系。
在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。
在 UML 类图中,组合关系用带实心菱形的实线来表示,菱形指向整体。
UML中一共定义了4种类型的图,总共包含了14种视图。
用例是系统中,执行的一系列动作,这些动作生成特定参与者可见的价值结果。用例表示系统所提供的服务,它定义了系统是如何被参与者所使用的,描述了参与者为了使用系统所提供的某一个完整功能而与系统之间发生的交互过程。
用例之间有泛化、包含、扩展 关系。
(1)当可以从两个或多个用例中提取公共行为时,可以使用包含 关系表示。
(2)如果一个用例混合了两种或两种以上不同场景,,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例。
(3)当多个用例共同拥有一个类似的结构和行为的时候,可以将他们的共性抽象成父用例,其他的用例可以作为泛化关系中的子用例
包图
包图展示系统中不同的软件包。
类图
显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及与其他类的关系。类图是面向对象建模的主要组成部分。
类是具有相同属性、方法和关系的对象的抽象,封装了数据和行为,是面向对象程序设计(OOP)的基础。
类图主要元素:
字符串,如Student
[可见性]属性名:类型[=默认值]
,“可见性”表示该属性对类外的元素是否可见,包括公有(Public)、私有(Private)、受保护(Protected)和朋友(Friendly)4 种,在类图中分别用符 号+、-、#、~表示。
[可见性]名称(参数列表)[:返回类型]
类名(Name)
属性(Attribute)
操作(Operations)
对象图
无需单独提供,类图中就包含了对象。所以只有对象而无类的类图就是一个“对象图”。有时也被称为实例图,与类图很相像。用果真实世界的示例展示了对象之间的关系。
画像(profile,概要,轮廓)图
UML2.0新引入的图,实际很少用到。
状态(机)图
用来描述一个对象在其生存期间的动态行为,表现为一个对象经历的状态序列,因其状态转移的事件,以及因状态转移发生的动作,与活动图有些类似。
活动图
对系统的动态行为建模的5个图之一,活动图可以用于描述系统的工作流程和并发行为,描述系统中的业务流和组件操作流。活动图其实可以看作状态图的特殊形式,活动图中的一个活动状态结束后立即进入下一个活动。主要概念有:
1)活动
2)泳道
3)分支
4)分叉和汇合
5)对象流
交互图(时序图,序列图)
描述对象之间如何交互,以及交互发生的顺序。时序图描述了一个特定场景中组件或对象之间的有序交互。
描述对象之间的关系以及对象之间的信息传递的图。
递的图。
通信(协作)图
协作图类似于时序图,但集中描述了对象之间的消息传递。
交互概览图
交互概述图非常类似于活动图。活动图显示了流程的序列,交互概述图显示了交互图的序列。
时间图
时间图非常类似于时序图。它们表示对象在给定时间范围内的行为。如果只有一个对象,那么图就很简单了。但是,如果涉及多个对象,则使用时序图来显示该时间段内对象之间的交互。
构件(组件)图
构建是系统中遵从一组接口且提供其实现的物理的、可替换的部分。构件图显示一组构件以及他们之间的相互关系。构建有以下几种类型:
1)部署构件:如dll文件、COM+对象、Corba对象、EJB、动态Web网页和数据库表
2)工作产品构件
3)执行构件
构件(组件)结构图
显示构建内部的结构信息。
部署图
也成为实施图,一个系统只有一个部署图。展示系统中的硬件和硬件中部署的软件。部署图在软件跨机部署中非常好用,每个机器节点都有单独的配置。
https://www.uml-diagrams.org/
https://creately.com/blog/diagrams/uml-diagram-types-examples/
关于作者:
犇叔,浙江大学计算机科学与技术专业,研究生毕业,而立有余。先后在华为、阿里巴巴和字节跳动,从事技术研发工作,资深研发专家。主要研究领域包括虚拟化、分布式技术和存储系统(包括CPU与计算、GPU异构计算、分布式块存储、分布式数据库等领域)、高性能RDMA网络协议和数据中心应用、Linux内核等方向。
专业方向爱好:数学、科学技术应用
关注犇叔,期望为您带来更多科研领域的知识和产业应用。
内容坚持原创,坚持干货有料。坚持长期创作,关注犇叔不迷路