UML
简介
UML(Unified Modeling Language,统一建模语言) 可以帮助我们表示软件的结构:不同的模块、类和对象如何交互,以及他们之间的关系是什么。
在UML中,可以定义系统的结构和行为,并且可以通过图表的可视化全部或者部分模型。有两种类型的图表:
- 结构图用于表示系统的结构。
- 行为图用于描述系统的行为。
类之间的关系
1. 泛化(Generalization)
是一种继承关系,而继承也被称为
Is-A
关系,因为从一个另一个类继承而来的类能够被当成父类来使用。当一个类表示多个类的共享特征时,这成为
泛化
; 类似地,当一个类表示一般类的特殊实例时,这成为特化
。
UML表示:带三角箭头的实线,箭头指向父类。
2. 实现(Realization)
是一种类与接口的关系
UML表示:带三角箭头的虚线,箭头指向接口。
3. 依赖(Dependency)
用于定义一个类以某种方式依赖于另一个类,而另一个类可能依赖于或不依赖于第一个类。依赖关系有时被称为
Uses-A
关系。用来描述一个类在方法声明中是否包含第二个类的参数,或者说它只是通过方法将第二个类传递给其他类,而不是使用方法来创建第二类的实例。
UML表示:带普通箭头的虚线,指向被使用者。
4. 关联(Association)
表示两个实体之间的关系。可能是一对多,也可能是一对一,也可能是多对多。
有两种类型的关联:
组合
和聚合
。关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。还可以自关联和重数性关联。
UML表示:带普通箭头的实心线,指向被拥有者。
1) 聚合(Aggregation)
聚合用于描述以下情况中的两个类或多个类之间的关系:①一个类在逻辑上包含另一个类,但所包含的类的实例又可以独立于第一个类在其上下文之外生存;或者②可以被其他的类所引用。(即整体与部分的关系,整体与部分 可以分开)
可以将聚合视为
Has-A
关系。例如,每位教师必须属于部门,但如果部门不再存在,教师仍可以处于活动状态。
UML表示:带空心菱形的实心线,菱形指向整体。
@startuml
Car o-- Engine
class Car{
- name:String
+ make(Engine engine):void
}
@enduml
2)组合(Composition)
也是整体与部分的关系,但是整体与部分不可以分开。
可以将聚合视
Contains-A
关系。
UML表示: 带实心菱形的直线,菱形指向整体。
@startuml
Head *-- Ear
Head *-- Eye
@enduml
各种关系的强弱顺序
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖