UML中常见代码实现

来源:互联网 发布:js return void 编辑:程序博客网 时间:2024/05/22 04:57

前言

      UML中常见的有类图,接口,还有其中的几种关系,继承,实现,依赖,关联(特殊的有聚合和组合)。在此之前我对面向对象的一些方法做过一些总结,感兴趣的读者可以参看《面向对象三大特性》《面向对象》,其中对构造函数等等做了一些解释,这在理解代码实现的时候很有帮助。

代码实现

接口

     C#   版:一组函数成员而不实现成员的引用类型
     Java版:一系列方法的声明,一些方法特征的集合
     在应用的时候我们往往把一些内容抽象出来作为一个方法,方便多个类的共享,同时我们也可以把一些内容抽象出来,但是具体的实现不同。

                                                                              

C#版:

<span style="font-size:18px;">interface IFly  {      void Fly();  }  </span>

Java版:

<span style="font-size:18px;">interface IFly{      void Fly();  }  </span>
        在使用中经常会看到abstract修饰符,abstract修饰类和成员方法,用该修饰符修饰的类称为抽象类,修饰的方法称为抽象方法,抽象类可以没有抽象方法,抽象类不能被实例化,抽象方法不提供方法体,具体的实现在实现它的类中提供。abstract修饰的方法要求子类实现这个方法,除非子类是抽象类。实代码如下:

<span style="font-size:18px;">interface IFly{      abstract Fly();  }  </span>

实现

    实现是类和接口之间的关系,C#中用冒号标识,而java中使用implements标识。
                                                                 

C#版:

<span style="font-size:18px;">Class Bird:IFly  {       void Fly      {         //具体实现       }  }  </span>

Java版:

<span style="font-size:18px;">Class Bird implements IFly{      void Fly{             //具体实现      }  }  </span>

继承

    继承标识父类与子类之间的关系。
                                                                     

C#版:

<span style="font-size:18px;">Class Bird:IFly  {       void Fly      {         //具体实现       }  }</span>

Java版

<span style="font-size:18px;">Class Bird extends IFly{       void Fly{         //具体实现       }}</span>
        继承和接口实现相比有什么劣势呢?接口相对来说更灵活,我们可以实现,也可以不实现,但是如果是继承,那我们就必须实现他所有的方法,如果其中一些方法对子类来讲并无意义,可想而知,那就是多余的, 并且我们可以实现多个接口,但是只能继承一个类。

依赖

                                      

C#版:

<span style="font-size:18px;">class Animal  {        void Fly(Oxygen oxygen)       {          }  }  </span>

Java版:

<span style="font-size:18px;">class Animal{        void Fly(Oxygen oxygen){          }  } </span>

关联

      聚合:脱离后两者还是可以存在的
                                                                 

C#版:

<span style="font-size:18px;">class bery  {        private Bird[] bird;  }  </span>

Java版:

     第一种:较为灵活
<span style="font-size:18px;">class bery  {      private Bird bird;      public SetBird(Bird bird)      {           this.bird = bird;  //比较灵活       }  }  </span>


        第二种:写死了
<span style="font-size:18px;">class bery  {        private Bird bird;        public SetBird()       {             bird = new Bird();     //写死了        }  }  </span>

组合

      例如,在鸟这个对象生成后,翅膀也随之生成,在代码中体现在构造方法中
                                                               

C#版:

<span style="font-size:18px;">class Bird  {      private Wing wing;      public Bird()      {             Wing = new Wing();      }  }  </span>

Java版:

<span style="font-size:18px;">class Bird  {      private Wing wing;      public Bird()      {             Wing = new Wing();      }  }  </span>

总结

      UML中的几种关系理解后对于理解设计模式非常有帮助,对照类图和代码去理解。





3 0