论UML图中的六大关系

最近学习了设计模式,每个模式都需要先画类图,通过这次学习,又对六大关系有了新的理解。

一:六大关系的强弱

        继承>实现>组合>聚合>关联>依赖

二:六大关系的图形表示

        继承:

        实现:

        组合:

        聚合:

        关联:

        依赖:

 三:六大关系在代码里如何体现

        继承和实现:这两种关系在C#种体现特别直观,如果A类继承了B类,就表为Class A:B,如果B类是个接口,A实现了B,仍表示为A:B,在C#中,一个类只能继承一个父类,但是可以实现多个接口

        组合和聚合组合和聚合说的都是部分和整体的关系,二者的区别在于,组合时,部分无法脱离整体而存在,聚合时部分可以脱离整体而存在。

                聚合在代码中的体现:

  class A
    {
        B b;
        public A(B b)
        {
            this.b = b;
        }

    }
  class B
    {  
    }

        A类聚合了B类,B类在类A中作为成员变量,B类作为一个参数,传到A类的构造函数中。B类可以脱离A类单独而存在。B类没有封装在A类里,客户是可以同时知道A类和B类的。

        组合在代码中的体现:

    class A
    {
        B b;
        public A()
        {
            b = new B();
        }

    }
    class B
    {  
    }

        A类组合了B类,B类的对象在A类的构造函数中产生,当需要产生一个A类的对象时候,需要先调用B类的构造函数。客户端是看不到B类的,B类被封装在A类里面。A类和B类同生共死。

        依赖和关联:依赖和关联表示的是一种使用的关系,A类使用B类。

                依赖:类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用。

        

//动物依赖水类,水类是动物类中的某个方法
    public class Animal
    {
        public void Grownup()
        {
            Water water = null;
        }
    }
    public class Water
    {
        public Water()
        { }
    }
//水类作为动物类中某个方法的参数或返回值
    public class Animal
    {
        public Water Grownup(Water water)
        {
           return null;
        }
    }
    public class Water
    {
        public Water()
        { }
    }

        关联:关联和依赖的最主要区别就是,类A当中使用了类B,让类B作为类A的全局变量。作用的范围更大,类A和类B就是关联关系。

 //水类作为动物类的全局变量
    public class Animal
    {
        Water water;
        
    }
    public class Water
    {
        public Water()
        { }
    }

以上就是我对六大关系的总结。

猜你喜欢

转载自blog.csdn.net/hlzdbk/article/details/118928085