从前几天师哥师姐们的合作版机房验收,就能看出UML图的重要性。在验收的现场大家更是对七层架构的包图中的关系产生了很大的争议。其实这一切都来源于对UML的不熟悉,再加上自己正处于个人版机房重构的阶段,所以对UML进行再次学习,这一次还是先以四种关系为主。
依赖关系
依赖关系是一种使用关系,动物和水的关系。
<span style="font-family:KaiTi_GB2312;font-size:24px;"> public class Animal { public Animal(){} } public class Water { public Water() { } }</span>
但是在上述代码中不体现,如何反应他们之间的依赖关系?有三种方式
<span style="font-family:KaiTi_GB2312;font-size:24px;"> //Water 是公共类,Animal 直接调用-----方法一 public Animal () { Water water = null; } //water作为animal中一个方法的变量-----方法二 public void GrownUp() { Water water1 = null; } //water是animal函数的参数返回值-------方法三 public Water GrownUp(Water water) { return null; } }</span>
关联关系
一句话概括关联关系——一种拥有的关系,一个类知道另一个类的方法和属性。
关联关系包含单向关联,双向关联,自身关联。
单向关联
water类知道climate类中的方法属性,但是climate类不知道water类中的方法属性。表示方法:单向箭头,指向被拥有方
<span style="font-family:KaiTi_GB2312;font-size:24px;"> public class Climate { public Climate() { } } public class Water { <span style="font-family:KaiTi_GB2312;"> </span>public Climate m_Climate; public Water() { } } </span>
双向关联
water类和climate类之间都相互彼此知道对方的属性和方法。表示方法:双向箭头,或者一条直线。
<span style="font-family:KaiTi_GB2312;font-size:24px;"> public class Climate { public Water m_Water; public Climate() { } } public class Water { public Climate m_Climate; public Water() { } } </span>
自身关联
在关联关系中还包含两个非常重要的关系——组合和聚合
组合关系就是整体和部分不可分割,而聚合关系则是部分和整体的关系可以分割。
聚合关系
public class Goose { public Goose () { } } public class GooseGroiup { public Goose goose; public GooseGroiup (Goose goose) { this.goose = goose; } }
组合关系
<strong><span style="font-family:KaiTi_GB2312;font-size:24px;"> public class Wings { public Wings (){} } public class Goose { public Wings wings; public Goose () { wings =new Wings() ; } <p> } </span></strong></p>
【总结】
通过这次在学习UML,一方面对几种关系有了更加清晰的认识,另一方面通过对EA的使用,让自己更加熟悉这个画图的过程。也发现UML这条路很长,有很多值得学习的地方。之前总是认为UML太偏向于理论,学习起来感觉没有太大兴趣,于是总处于一个囫囵吞枣的过程,却忽略了理论指导实践更能帮助我们进步的方面。所以当学习内容不断的深入就需要认真的搞懂其中的原理。
菜鸟观点,如果理解偏颇之处,还请大家及时斧正,不胜感激!