初识UML ,有误之处还请大家指正,不改NO.1在此表示感谢。
开始......................................
1、关联
1 public class ClassA{
2 private ClassB classB;
3 }
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
例子:比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司
在GOF的设计模式书上对双向关联的描述:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。对象引用本身就是有向的,更适合表达我们所讨论的那种关系。所以这种关系在设计的时候比较少用到,关联一般都是有向的。
1、依赖
1 public class ClassA{
2 public void SomethingMethod(ClassB b,ClassC c){
3
4 }
5 }
依赖是一种使用关系,描述了一个事物的规格说明的变化可能会影响到使用它的另一个事物(反之不一定)。在UML中表示为一条指向被依赖事物的虚线。其实另外3种关系泛化、关联和实现都可以算作是某种依赖关系,只不过它们有比较强的语义和重要的作用,所以划分出来。一般对类关系建模的时候,先对泛化、关联和实现建模,剩下的关系都可以看作依赖了。
依赖关系表现在局部变量,方法的参数,以及对静态方法的调用。
3、Generalization(概括、继承)
1 public class ClassA extends ClassB{}
4、聚合
1 public class ClassA{
2 private ClassB[] arrayClassB;
3 }
聚合是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。它描述整体和组成部分"has-a"的关系,例如学校和学生的关系,聚合的整体和部分之间在生命周期上没有必然联系,部分对象可以在整体对象创建之前创建,也可以在整体对象之前销毁之后销毁。
关联和聚合的区别纯粹是概念上的,而且严格反映在语义上。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。
5、合成
1 public class ClassA{
2 private ClassB classB;
3 public ClassA(){
4 classB=new ClassB();
5 }
6 public void destory(){
7 classB.destory();
8 }
9 }
合成指整体与部分的生命周期一致的聚合关联形式,例如windows的窗口和窗口菜单就是合成关系,
6、实现
1 public class ClassA implements Interface1{
2
3 }
4 public class ClassA implements Interface2{
5
6 }
总结一下
1)依赖关系:关系对象出现在局部变量或者方法的参数里,或者关系类的静态方法被调用
2)关联关系:关系对象出现在实例变量中
3)聚合关系:关系对象出现在实例变量中
4)合成关系:关系对象出现在实例变量中
5)Generalization: extends
6)实现: implements