UML 的定义
统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。
UML 使用面向对象设计的的建模工具,但独立于任何具体程序设计语言。
UML 应用场景
UML 是在开发阶段,说明、可视化、构建和书写一个面向对象软件密集系统的制品的开放方法。最佳的应用是工程实践,对大规模,复杂系统进行建模方面,特别是在软
件架构层次,已经被验证有效。统一建模语言(UML)是一种模型化语言。模型大多以图表的方式表现出来。一份典型的建模图表通常包含几个块或框,连接线和作为模型附
加信息之用的文本。这些虽简单却非常重要,在 UML 规则中相互联系和扩展。
UML 的目标是以面向对象图的方式来描述任何类型的系统,具有很宽的应用领域。其中最常用的是建立软件系统的模型,但它同样可以用于描述非软件领域的系统,如机
械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。总之,UML 是一个通用的标准建模语言,可以对任何具有静态结构和
动态行为的系统进行建模,而且适用于系统开发的不同阶段,从需求规格描述直至系统完成后的测试和维护。
UML图
UML2.0 一共有 13 种图形(UML1.5 定义了 9 种,2.0 增加了 4 种)。分别是:用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图 9 种,包图、
时间图、组合结构图、交互概览图 4 种。
图的类型 |
描述 |
用例图(Usecase Diagrams) |
用来描述用户的需求,从用户的角度描述系统的功能,并指出各功能的执行者,强调谁在使用系统,系统为执行者完成哪些功能。 |
类图(Class Diagrams) |
用于定义系统中的类。 |
对象图(Object Diagrams) |
是类图的一个实例,描述了系统在具体时间点上所包含的对象以及各个对象之间的关系。 |
构件图(Component Diagrams) |
一种特殊的 UML 图来描述系统的静态实现视图。 |
部署图(Deployment Diagrams) |
定义系统中软硬件的物理体系结构。 |
状态图(State Chart Diagrams) |
用来描述类的对象所有可能的状态以及时间发生时状态的转移条件。 |
协作图(Collaboration Diagrams) |
描述对象之间的合作关系,更侧重和用户对象说明哪些对象有消息的传递。 |
活动图(Activity Diagrams) |
用来描述满足用例要求索要进行的活动以及活动间的约束关系。 |
时序图(Sequence Diagrams) |
描述对象之间的交互顺序,着重体现对象间消息传递的时间顺序,强调对象之间消息的发送顺序,同时显示对象之间的交互过程。 |
包图(Package Diagrams) |
对构成系统的模型元素进行分组整理的图 |
组合结构图(Composite Structure Diagrams) |
表示类或者构建内部结构的图。 |
时间图(Timing Diagrams) |
用来显示随时间变化,一个或多个元素的值或状态的更改,也显示时控事件之间的交互和管理它们的时间和期限约束。 |
交互概览图(Interaction Overview Diagrams) |
用活动图来表示多个交互之间的控制关系的图。 |
UML 绘图规范
建模的核心是模型,模型是现实的简化,它提供了系统的设计蓝图。
软件系统建模是,需要采用通用的符号语言,这种描述模型所使用的语言称为建模语言。下图完整地描述了 UML 所能描述的所有事物和关系。
![](https://img2018.cnblogs.com/blog/1841773/202001/1841773-20200109204818646-1117689019.png)
事物描述
类(Class):对一组具有相同属性,方法,关系和语义的对象的描述。
接口(Interface):描述了一个类或构件的一个服务的操作集。它仅仅是定义了一组操作的规范,并没有给出这组操作的具体实现(代码)。
用例(Usecase):是对一组动作序列的描述,系统执行这些动作将产生一个对特定的参与者(Actor)有价值且可观察的结果。
包(Package):是分组事物中最主要的,是 UML 中唯一的组织机制。
事物关系描述
关联(Association):是一种拥有的关系,具有方向性,如果一个类单方向的访问另一个类,则称为单向关联(用一个箭头的实线表示);如果两个类对象可以互相访问,则
称为双向关联(用两个箭头或不用箭头的实线表示);一个对象能访问关联对象的数目叫做“多重性”。
用带普通箭头的实线表示,箭头指向被拥有者,或不用箭头的实线表示 。
聚合(Aggregate):是整体与部分的关系。当某个实体聚合成另一个实体时,该实体还可以是另一个实体的部分。用带空心菱形的实线表示 ,菱形指向整体,箭头指向个体。
组合(Combination):整体与部分的关系,组合比聚合更加严格,当某个实体组合成另一个实体时,二者具有相同的生命周期,例如手臂和人之间存在的是组合关系。
用带实心菱形的实线表示 ,菱形指向整体,箭头指向个体。
泛化(Generalization):表示一个更泛化的元素和一个更具体的元素之间的关系,与继承是同一个概念。用带三角箭头的实线表示 ,箭头指向父类。
实现(Realization):类与接口的关系,类实现接口。用带三角箭头的虚线表示 ,箭头指向父接口。
依赖(Dependency):如果一个类的改动会影响到另一个类,则两个类之间存在依赖关系,一般而言,依赖是单向的。用带普通箭头的虚线表示 ,箭头指向被依赖者。
类图(Class Diagrams)
在 UML 2.0 的 13 种图形中,类图是使用频率最高的 UML 图之一。类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有
一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。类图表示类、接口和它们之间的协作关系,用于系统设计阶段。
类图用三个矩形表示,最上面的部分标识类的名称;中间的部分标识类的属性;最下面的部分标识类的方法,如下图所示:
![](https://img2018.cnblogs.com/blog/1841773/202001/1841773-20200110102808962-1451039684.png)
+ 表示 public
- 表示 private
# 表示 protected
~ 表示 default,可省略不写。
字段和方法返回值的数据类型非必须。
抽象类或抽象方法用斜体表示。
静态类或静态方法加下划线。
如果是接口在类名上方加<<Interface>>。
类与类之间的关系主要有六种:关联、聚合、组合、继承、实现和依赖,这六种关系的箭头表示如下:
![](https://img2018.cnblogs.com/blog/1841773/202001/1841773-20200110105015042-1491551862.png)