作者:亿图图示
链接:https://www.zhihu.com/question/419312525/answer/1535413984
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UML类图,UML中的一种重要图形,是在面向对象语言用中用来表示一个类。UML不止类图,还有活动图、对象图、状态图、时序图等。
如下图所示(它由两部分组成,类和类之间的关系):
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)
动物UML类图
1 类
类是具有相似结构、行为和关系的一组对象的描述符,是面向对象系统中最重要的构造块。
如下图所示,就表示一个类:
三个格子从上至下分别表示:
- 类名称(如果是接口,就使用斜体表示)
- 类的特性(一般是类的字段和属性,可以没有)
- 类的操作(一般是类的方法或行为)
它们前边的符号有以下几类:
- “+”表示public
- “-”表示private
- “#”表示protected
- "~"表示default,也就是包权限
- “_”下划线表示static
- 斜体表示抽象
2 类的关系
除了类,类图中还有一个重要元素,即类之间的关系。
根据类的关系的不同,具体可分为6种:
2.1泛化
介绍:
泛化(Generalization)表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系
(1)继承
介绍:
继承表示是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。
表示方法:
继承使用空心三角形+实线表示。
示例:
鸟类继承抽象类动物,它指定了子类如何特化父类的所有特征和行为。例如:鸟是动物的一种,企鹅、鸭、大雁是鸟的一种。
(2)实现
介绍:
实现表示一个class类实现interface接口(可以是多个)的功能。
表示方法:
1)矩形表示法
使用空心三角形+虚线表示
比如:大雁需要飞行,就要实现飞()接口
- 顶端有<<interface>>
- 第一行:接口名称
- 第二行:接口方法
矩形表示法
第二种,棒棒糖表示法
- 圆圈旁为接口名称
- 接口方法在实现类中出现
棒棒糖表示法
2.2依赖
介绍:
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
表示方法:
依赖关系用虚线箭头表示。
示例:
动物依赖氧气和水。调用新陈代谢方法需要氧气类与水类的实例作为参数
2.3关联
介绍:
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
表示方法:
关联关系用实线箭头表示。
示例:
企鹅需要‘知道’气候的变化,需要‘了解’气候规律。当一个类‘知道’另一个类时,可以用关联。
2.4聚合
介绍:
表示一种弱的‘拥有’关系,即has-a的关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。 两个对象具有各自的生命周期。
表示方法:
聚合关系用空心的菱形+实线箭头表示。
示例:
每一只大雁都属于一个大雁群,一个大雁群可以有多只大雁。当大雁死去后大雁群并不会消失,两个对象生命周期不同。
2.5组合
介绍:
组合是一种强的‘拥有’关系,是一种contains-a的关系,体现了严格的部分和整体关系,部分和整体的生命周期一样。
表示方法:
组合关系用实心的菱形+实线箭头表示,还可以使用连线两端的数字表示某一端有几个实例。
示例:
鸟和翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。
总结来说,只有充分了解这些图形的要素组成及要素间关系,我们才能有效地运用UML图来便捷沟通、开发,而不是用糟糕的UML图来添堵。