UML_part1结构型

统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。

推荐plantuml,可以代码画图:

官网:https://plantuml.com/zh/

Web server:http://www.plantuml.com/plantuml/uml/SoWkIImgAStDuN9KqBLJSB9IICbNACxFJIt9oCnBvt822JgY2JgavgK0TG00

1、UML分类

主要分为结构型(静态)和行为型(动态)两种。

结构型:类图、对象图、对象图、构件图、部署图、包图;

行为型:活动图、状态机图、顺序图、通信图、用例图、时序图。

1.1 结构型(Structure Diagram)

1.1.1类图(Class Diagram)

如图1,类图主要分为三层,第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。前面的符号,+ 表示public,- 表示private,# 表示protected,~表示package private。

plantuml代码:

@startuml
skinparam classAttributeIconSize 0
abstract class 动物{
 +寿命
 +新陈代谢(氧气,水)
 +繁殖()
}
@enduml
View Code

图1 动物抽象类图

类图之间的关系:继承、实现、关联、聚合、组合、依赖

图2 类图关系示意图

右下角的飞翔,它表示一个接口图,与类图的区别主要是顶端的<<interface>>显示。第一行是接口名称,第二行是接口方法。接口还有另一种表示方法,俗称棒棒糖表示法。唐老鸭是能讲人话的鸭子,实现了讲人话的接口。

 

图三 接口

 

图3+  棒棒糖接口示意图

接下来的是类与类,类与接口之间的关系了。首先注意动物、鸟、鸭、唐老鸭之间的关系符号。它们都是继承的关系,继承关系用空心三角形 + 实线来表示的。

 

图4 类的继承

上述所列举的几种鸟中,大雁最能飞,让它实现了飞翔接口。实现接口用空心三角形 + 虚线来表示。

 

图5 接口实现

企鹅和气候两个类,企鹅是很特别的鸟,会游不会飞。更重要的是,它与气候有很大的关联。我们不去讨论为什么北极没有企鹅,为什么它们要每年长途跋涉。总之,企鹅需要知道气候的变化,需要了解气候规律。当一个类知道另一个类时,可以用关联(association)。关联关系用实线箭头来表示。

 

图6 关联关系

再来看大雁和雁群这两个类,大雁是群居动物,每只大雁都是属于一个雁群,一个雁群可以有多只大雁。所以它们之间就满足聚合(Aggregation)关系。聚合表示一种弱的拥有关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。聚合关系用空心的菱形 + 实线箭头来表示。

 

图7 聚合关系

组合(Composition)是一种强的拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。在这里鸟和其翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。组合关系用实习的菱形 + 实线箭头来表示。另外,你会注意到合成关系的连线两端还有一个数字1和数字2,这被称为基数。表明这一端的类可以有几个实例,很显然,一个鸟应该有两只翅膀。如果一个类可能有无数个实例,则就是n来表示。关系关系、聚合关系也可以有基数的。

 

图8 组合关系

动物的几大特征,比如有新陈代谢,能繁殖。而动物要有生命力,需要氧气、水以及食物等。也就是说,动物依赖于氧气和水。他们之间是依赖关系(Dependency),用虚线箭头来表示。

 

图9 依赖关系

1.1.2对象图(Object Diagram)

对象图描述的是参与交互的各个对象在交互过程中某一时刻的状态。对象图可以被看作是类图在某一时刻的实例。

表1 类图和对象图的区别

类图

对象图

 类具有3个分栏:名称、属性和操作

 对象只有两个分栏:名称和属性

 在类的名称分栏中只有类名

 对象的名称形式为“对象名:类名”,匿名对象的名称形式为“:类名”

 类的属性分栏定义了所有属性的特征

 对象则只定义了属性的当前值,以便用于测试用例或例子中

 类中列出了操作

 对象图中不包括操作,因为对于同属于同一个类的对象而言,其操作是相同的

 类使用关联连接,关联使用名称、角色、多重性以及约束等特征定义。类代表的是对对象的分类所以必须说明可以参与关联的对象的数目

 对象使用链连接、链拥有名称、角色,但是没有多重性。对象代表的是单独的实体,所有的链都是一对一的,因此不涉及到多重性。

图10 对象图与类图区别

1.1.3构件图(Component Diagram)

构件是系统中实际存在的可更换部分,它实现特定的功能,符合一套接口标准并实现一组接口。构件代表系统中的一部分物理实施,包括软件代码(源代码、二进制代码或可执行代码)或其等价物(如脚本或命令文件)。

每个构件可以单独实现一定的功能,为其他构件提供使用接口,方便软件的复用。使用构件最重要的是复用。

一般构件分为:

(1)执行文件:源码编译的结果,可直接运行。

(2)文件:信息存储体。

(3)库:类库,动态链接库,数据库。

(4)表:数据库中的表。

(5)文档:文字材料。

 

 图11构件示意图

构件与类的区别:

(1)类表示的是逻辑的抽象,构件是存在于计算机中的物理抽象。构件是可以部署的,类不行。

(2)构件表示的是物理模块,类是逻辑模块

(3)类可以直接拥有操作和属性,构件仅拥有可以通过其接口访问的操作。

构件图就是用来显示是一组构件之间的组织与依赖关系(从软件架构角度来描述一个系统的主要功能,如子系统、类、包、构件等)的图。

 

图12 构件图

1.1.4部署图(Deployment Diagram)

部署图是用来显示系统中软件和硬件的物理架构。使用部署图可以显示运行时系统的结构,同时还传达构成应用程序的硬件和软件元素的配置和部署方式。

部署图元素:节点+关系

节点:计算资源的通用名称,用立方体表示。包括处理器和设备。两者的区别:前者是可以执行程序的硬件结构,如计算机和服务器等,部署图带阴影;后者是通过接口对外进行的服务,如打印机,部署图无阴影。每个节点应该给出应有的标记说明,如操作系统,供应商等。

 

 图13 处理器

 

 图14 设备

部署图绘制步骤:

(1)找出所要绘图系统的节点,确定节点。

(2)找出节点间的通信联系。

(3)绘制部署图,每个节点都有名称,写明节点间物理联系的名称。

 

 图15 部署图示意图

1.1.5包图(Package Diagram)

包图是用来描述模型中的包和所包含元素的组织方式的图,是维护和控制系统总体结构的重要内容。

 

图16 包图的依赖

元素的分包原则:独立性、高内聚、低耦合。

(1)独立性:一个元素不允许在两个包中重复出现,一个包中也不允许出现两个同名元素。

(2)包内元素高内聚:分在同一个包中的元素应该具有某些相同的性质。

(3)包与包间低耦合:包和包之间需要尽可能减少耦合度,包内元素与外部元素有尽可能少的依赖关系。

1.2 行为型

1.2.1活动图(Activity Diagram)

1.2.2状态机图(State Machine Diagram)

1.2.3顺序图(Sequence Diagram)

1.2.4通信图(Communication Diagram)

1.2.5用例图(Use Case Diagram)  

1.2.6时序图(Timing Diagram)

参考博客:

UML类图新手入门级介绍

类图和对象图

【UML】——实现图(构件图、部署图)

UML图之八——部署图

猜你喜欢

转载自www.cnblogs.com/jwmdlm/p/12683004.html