什么是UML
UML是 Unified Modeling Language 的简写,即统一建模语言。
它是由OMG 组织(Object Management Group对象管理组织)于1997年发布的。UML提供了一套标准的建模符号,使得系统的架构设计和规划的表达更加规范化。作为端着Java饭碗的底层码工,没搞过系统设计,但至少要会按图施工吧,这里的图就包含了UML类图。
其实,UML不止是类图,还有对象图、用例图、部署图、状态图、活动图等。本篇只说UML类图中的6种关系:
- 泛化(Generalization)关系
- 实现(Realization)关系
- 聚合(Aggregation)关系
- 组合(Composition)关系
- 关联(Association)关系
- 依赖(Dependency)关系
泛化关系
泛化关系其实是一种继承关系,我们常说的 is-a的关系。
比如狗是动物。
泛化关系用一条带空心箭头的直接表示。
实现关系
顾名思义,这个就是Java里的implements 实现的语义。
我们常说的实现一个接口,就是指这种关系。
实现关系用一条带空心箭头的虚线表示
聚合关系
聚合关系表述的是一种整体与部分的关系。
比如一台汽车有一台发动机+四个轮胎。
使用带空心菱形的实心线表示,菱形指向整体。
组合关系
组合关系很容易和聚合关系混淆,因为组合关系也是表示整体与部分的关系。只不过,它的语义更强。是一种强关系。
如果整体不存在了,那部分也就不存在了。
假如就是这里的整体,如果地球不存在了,那它上面的所有国家都将不复存在。
组合关系用一条带实心菱形箭头直线表示。实心嘛,表示在聚合关系上面加强了。
关联关系
关联关系是一种强关系,是一种拥有的关系,它使一个类知道另一个类的属性和方法。
关联关系是用一条直线表示的。
关联关系默认不强调方向,表示对象间相互知道;如果特别强调方向,如下图,表示A知道B,但 B不知道A。
比如老师和学生的关系,学生和课程的关系。
依赖关系
依赖关系是用一套带箭头的虚线表示的;如下图表示A依赖于B;他描述一个对象在运行期间会用到另一个对象的关系;
与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化;
值得注意的是尽量不要使用双向依赖。
在最终代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;
最后,使用一张类图汇总下这6种关系。
作者:二营长的笔记
微信搜“二营长的笔记”,关注公众号,回复“二营长”,无套路免费领取Java技术栈全套资料大全。