图中,从左到右分别是依赖、关联、聚合、组合、实现、继承六种关系在UML图中的画法,有箭头,有菱形,有三角,他们为什么这么画呢,之间有什么联系呢,这要从全局来看。
首先,依赖关联关系和聚合组合关系的体现分别是剪头和菱形。依赖关联表示的是两个类之间的联系,而组合聚合表示的是整体和部分的关系。因此,菱形可以看作整体,菱形可以拆分成两个甚至更多的剪头形状,所以菱形指向的则是整体,而剪头指向的是部分。
上图从左到右的耦合度依次加强,在图形中的体现是,实线为强,虚线为弱。实现和虚线就好比纱布和绒布,纱布的空隙大,承受力弱,体现为弱,绒布空隙小,结实,体现为强。虚线有空隙,体现为弱,实线没有空隙,体现为强。同理,实心为强,空心为弱。
有一个重要的问题是,为什么组合聚合关系同时存在菱形和剪头,而泛化关系则没有剪头呢?我觉得起初是有的,可是从UML图的作用出发,就是要用更简洁的图形来更清晰的说明问题。某些图像元素省去也不影响大家对图的理解,那自然要省去了,这就是为什么单向关联有剪头,而双向关联不是两个剪头,而是取消剪头。聚合组合关系需要用菱形和剪头体现整体和部分,所以不得取消剪头。而泛化关系,父类只能有一个,子类可以有N个,所以唯一的箭头要指向共同的父类