你真的知道UML类图吗?
目录
UML类图大家可能都知道,如果要画某段代码的UML类图,大家应该都画得出来。
但是画出来是一回事,画得规不规范又是另一回事,假如面试的时候人家让你画个策略模式或者模板模式的UML类图,一看你画得一点都不规范,那就影响你高大的形象了。
先看个总图,然后我们再详细看局部以及怎样表述它们之间的关系:
一、类
这个表示一个类,这个类图分三层,第一层是类名(抽象类则用斜体表示);第二层是显示类包含的属性;第三层是这个类的行为,也就是包含的方法。
并且 “+” 表示public,“-” 表示private,“#”表示protected。
二、接口
这个表示一个接口图,与类图的区别是第一层不仅有名称还有个 <<interface>>,第二层表示接口方法。
接口还有一种表示方法——棒棒糖表示法:
圆圈旁边是接口名称。
三、继承
上面表示的是继承关系,用 “空心三角形+实线” 表示。(继空三实)
四、接口实现
上面表示的是接口实现关系,用 “空心三角形+虚线” 表示。(接空三虚)
五、关联关系
燃气汽车需要知道气罐里还有多少气,一个类要知道另一个类,就是关联关系。这种关系在UML中,使用 “实线 + 箭头” 来表示。(关联实箭)
六、聚合关系
聚合表示一种弱的“拥有”关系。
体现的是A对象可以包含B对象,但B对象不是A对象的一部分。
UML类图中用“空心菱形+ 实线+箭头”表示。(聚空菱实箭)
七、组合关系
组合是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。
组合关系用“实心菱形 + 实线箭头”表示。(组实菱实箭)
两端的数字“1”、“2”称为基类,表示这一端的类可以有几个实例。若一个类会有无数个实例,用n表示。
关联关系、聚合关系都可以有基数。
八、依赖关系
依赖关系用“虚线 + 箭头”表示。(依赖虚箭)
小结:
UML类图看起来简单,实际有很多小细节,但正是这些小细节能让大家更深刻的理解面向对象的概念,理解各对象之间的关系,对我们设计出优秀的类有很大的帮助。可以在遇到较复杂的业务时,去画下它的UML类图,更深刻更好的完成开发任务。