UML学习(Unified Modeling Language)
类之间的关系
依赖dependence
泛化
关联
双向关联(默认)、单向关联、自关联、重复性关联
聚合
组合
实现
依赖关系dependence
依赖关系:在需要表示一个事物使用另一个事物时使用依赖关系。
UML中表示:依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。
|
泛化关系generalization
泛化关系:也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。
A是B和C的父类,B,C具有公共类(父类)A,说明A是B,C的一般化(概括,也称泛化)。
UML中表示:泛化关系用带空心三角形的直线来表示。
|
关联关系association
双向关联(默认)、单向关联、自关联、重复性关联
关联关系:类之间的联系,如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单。
UML中表示:用实线连接有关联的对象所对应的类。
双向关联(默认)
|
单向关联
UML中表示:单向关联用
带箭头的实线 表示.
自关联
一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。
UML中表示:单向关联一样
重复性关联
重复性关联:表示一个类的对象与另一个类的对象连接的个数。
UML中表示:多重性关系可以直接在关联直线上增加一个数字表示与之对应的另一个类的对象的个数。
表示方式 |
多重性说明 |
1..1 |
表示另一个类的一个对象只与一个该类对象有关系 |
0..* |
表示另一个类的一个对象与零个或多个该类对象有关系 |
1..* |
表示另一个类的一个对象与一个或多个该类对象有关系 |
0..1 |
表示另一个类的一个对象没有或只与一个该类对象有关系 |
m..n |
表示另一个类的一个对象与最少m、最多n个该类对象有关系 (m<=n) |
|
聚合关系aggregation
聚合关系:表示的是整体和部分的关系,整体与部分可以分开。
成员类是整体类的一部分 ,即成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。
UML中表示:聚合关系用带空心菱形的直线表示。
|
如:电话机包括一个话筒
电脑包括键盘、显示器,一台电脑可以和多个键盘、多个显示器搭配,确定键盘和显示器是可以和主机分开的,主机可以选择其他的键盘、显示器组成电脑;
组合关系composition
组合关系:也是整体与部分的关系,但是整体与部分不可以分开。与聚合关系对应比较。
一旦整体对象不存在,部分对象也将不存在。
UML中表示:组合关系用带实心菱形的直线表示。
|
实现关系implementation
组合关系:用来规定接口和实现接口的类或者构建结构的关系。
接口之间也可以有与类之间关系类似的继承关系和依赖关系。
接口和类之间还存在一种实现关系(Realization),在这种关系中,类实现了接口,类中的操作实现了接口中所声明的操作。
UML中表示:类与接口之间的实现关系用带空心三角形的虚线来表示。
UML图例
作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分。
UML语义:描述基于UML的精确元模型定义。
UML表示法:定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例。
标准建模语言UML可以由下列5类图来定义。
1、用例图
2、静态图(类图、对象图)
3、行为图(状态图、活动图)
4、交互图(时序图、协作图)
5、实现图(组件图、部署图)
1、用例图
从用户角度描述系统功能,并指出各功能的操作者。
2、静态图(包括类图和对象图)
类图
类图描述系统中类的静态结构,不仅定义系统中的类,表示类之间的联系,如关联、依赖、聚合等,也包括类的属性和操作,类图描述的是一种静态关系,在系统的整个生命周期都是有效的。
对象图
对象图是类图的实例,几乎使用与类图是完全相同的标识。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。
3、行为图(状态图、活动图)
行为图:描述系统的动态模型和组成对象间的交互关系。
状态图
状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件,状态图是对类图的补充。
活动图
活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并进行活动。
4、交互图(时序图、协作图)
交互图:描述对象间的交互关系。
时序图
时序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互。
协作图
协作图描述对象间的协作关系,协作图和时序图相似,显示对象间的动态合作关系。除显示信息交换外,协作图还显示对象以及它们之间的关系。
如果强调时间和顺序,则使用时序图;如果强调上下级关系,则选择协作图。
5、实现图(组件图、部署图)
组件图描述代码部件的物理结构及各部件之间的依赖关系,组件图有助于分析和理解部件之间的相互影响程度。
部署图定义系统中软硬件的物理体系结构。
采用UML来设计系统时,
第一步是描述需求;
第二步根据需求建立系统的静态模型,以构造系统的结构;
第三步是描述系统的行为。
其中在第一步与第二步中所建立的模型都是静态的,包括用例图、类图、对象图、组件图和部署图等5种图形,是标准建模语言UML的静态建模机制。
其中第三步中所建立的模型或者可以执行,或者表示执行时的时序状态或交互关系。它包括状态图、活动图、时序图和协作图等4种图形,是标准建模语言UML的动态建模机制。
UML中的各图的功用简单介绍
1、用例图
描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。
2、类图
类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。
3、对象图
与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。
4、活动图
描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。
5、状态图
描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。
6、序列图(顺序图)
序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。
7、协作图
和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。
8、构件图 (组件图)
描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。
9、部署图 (配置图)
是用来建模系统的物理部署。例如计算机和设备,以及它们之间是如何连接的。部署图的使用者是开发人员、系统集成人员和测试人员。