zoukankan      html  css  js  c++  java
  • [UML]UML系列——类图class的实现关系Realization

    系列文章

          [UML]UML系列——用例图Use Case

          [UML]UML系列——用例图中的各种关系(include、extend)

          [UML]UML系列——类图Class

          [UML]UML系列——类图class的关联关系(聚合、组合)

          [UML]UML系列——类图class的依赖关系

          [UML]UML系列——类图class的泛化关系

    接口的概念

           接口是一组没有实现的操作的集合。接口只提供操作的声明,不提供任何相应的功能代码。具体的功能代码由使用该接口的类实现,这叫做实现关系。

           一般意义的操作:

    1  public void turnUp()
    2   {
    3        Console.WriteLine("{0}风扇加速转动",name);
    4   }

          没有实现的操作:

    1  public void turnUp();

     c#中定义接口的方法      

          [可见性] interface 接口名{[返回值类型] 方法名([参数]);}

    • 接口中只能包含方法、属性、索引器和事件的声明,没有字段和构造函数。
    • 接口中的操作都被视为公有的,不需要添加可见性。
    • 接口中只能提供方法的格式声明,而不能包含方法的实现,所以接口方法的声明总是以分号结束。

    接口的符号

           例如:

    1 public interface turn  //开关
    2     {
    3         void turnUp();
    4         void turnDown();
    5     }

    接口的实现

           接口中声明的方法的真正实现是由类来完成的,类必须实现该接口中所定义的所有方法。一个接口可以由多个类来实现,而在一个类也可以实现一个或多个接口。

    1 class  类名:接口名列表
    2 {
    3      ……  
    4 }

          提示:要实现接口,必须在类名后包括接口,然后提供接口的每一个成员的实现。
          注意:观察上例中接口成员和类中相应的实现的访问类型的写法,在接口成员的声明中不需要任何访问修饰符,而在类中相应接口成员实现定义中则都用public修饰符。

          接口的作用:

          1、接口制定了一组规范,实现接口的所有的类都必须遵守这套规则。

         常常遇到这样的情况,在父类内定义了一个操作,指望它的子类能够继承。但这个操作对于父类自身而言,没有必要编写任何代码,有时也实在不知道该编写什么代码。这时,我们就不去实现这个操作,接口就是这样一组操作的集合。

        程序演示:

    1  public interface animal
    2     {
    3         void sound();
    4     }
    接口
     dog1  class dog : animal
     2     {
     3         public string name;
     4         public int legs;
     5         public dog(string x, int y)
     6         {
     7             name = x;
     8             legs = y;
     9         }
    10         public void sound()
    11         {
    12             Console.WriteLine(name + "的叫声为:" + "汪汪");
    13         }
    14     }
    dog
     1  class cat : animal
     2     {
     3         public string name;
     4         public int legs;
     5         public cat(string x, int y)
     6         {
     7             name = x;
     8             legs = y;
     9         }
    10         public void sound()
    11         {
    12             Console.WriteLine(name + "的叫声为:" + "喵喵");
    13         }
    14     }
    cat
     1  class chick : animal
     2     {
     3         public string name;
     4         public int legs;
     5         public chick(string x, int y)
     6         {
     7             name = x;
     8             legs = y;
     9         }
    10         public void sound()
    11         {
    12             Console.WriteLine(name + "的叫声为:" + "咯咯达");
    13         }
    14     }
    chick
     1  class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             animal x;
     6             
     7             x = new dog("小狗", 4);
     8             x.sound();
     9 
    10             x = new cat("小猫", 4);
    11             x.sound();
    12 
    13             x = new chick("小鸡", 2);
    14             x.sound();
    15         }
    16     }
    Program

          从设计的角度来看,一个项目中有多个类需要去编写,由于工作量比较大,每个类可能由不同的人进行编写,比如A程序员去写Dog类,B程序员去写Cat类。这两个类本来没什么联系的,可是由于用户需要他们都实现一个关于“叫”的方法.这就要对他们进行一种约束,让他们都继承于animal接口,目的是方便统一管理,也方便调用。
         当然了,不使用接口一样可以达到目的。只不过这样的话,这种约束就不那么明显,如果这样的类还有Duck类等等,比较多的时候难免有人会漏掉这样方法,所以说还是通过接口更可靠一些,约束力更强一些。(摘自互联网)

         2、保持程序的可扩展性。(例如上面的例子中,如果有其他的动物类..)

         3、一个类可以实现多个接口。可以在同一个类中同时实现多个接口,即实现多重继承。要实现多个接口,需将这些接口用逗号分开。

          程序演示:模拟手机即可打电话又可以视频电话

    1  public interface IPhone
    2     {
    3         void call();
    4     }
    1  public interface IVideo
    2     {
    3         void show();
    4     }

          实现接口:

     1  class visualPhone:IPhone,IVideo
     2     {
     3         private string phoneName,videoName;
     4         public visualPhone(string name1,string name2)
     5         {
     6             phoneName = name1;
     7             videoName = name2;
     8         }
     9         public void call()
    10         {
    11             Console.WriteLine("{0}开始通话",phoneName);
    12         }
    13         public void show()
    14         {
    15             Console.WriteLine("{0}开始视频",videoName);
    16         }
    17     }

     控制台程序:

     1  class Program
     2     {
     3         static void callShow(IPhone x,IVideo y)
     4         {
     5             x.call();
     6             y.show();
     7         }
     8 
     9         static void Main(string[] args)
    10         {
    11             IPhone m = new visualPhone("步步高", "");
    12             IVideo n = new visualPhone("", "西门子");
    13             callShow(m, n);
    14         }
    15 }

     对应的类图:

    接口的特点

          接口中只能包含方法、属性、索引器和事件的声明,没有字段和构造函数和析构函数、不能直接被实例化。接口不能自己实现其操作,而是由相应的类来实现。一个类可以实现多个接口。

    对象图(Object Diagram)

                                                                  对象是类的实例,对象图也可看作是类图的实例。

    对象图与类图的关系

            对象图实质上是类图的实例,主要用于了解系统在某个特定时刻的具体情况,以求发现类图中的错误,进而修正类图。

    对象的符号

         与类的图形相似,但有如下区别:

         1、对象只有名称和属性两个分栏,没有操作分栏。

         2、对象的名称要加下划线

         3、对象的属性应有具体的值。(例如上面的对象图)

    对象名的三种格式

    对象图的组成

                                                                 提示:对象图没有多重性,因为所有的链都是一对一的。

    总结

         关于类图的相关到这里已经算是结束了,下面将总结包图.....

  • 相关阅读:
    机器学习介绍
    Day03 作业
    Python函数基础
    Python练习
    耳机 线控 控制播放
    edittext 底线颜色
    从service启动activity startActivity慢 的解决方案
    国产手机没有google services 和google play崩溃,判断google services是否存在
    检测耳机插入和拔出
    获取view宽高
  • 原文地址:https://www.cnblogs.com/wolf-sun/p/3426529.html
Copyright © 2011-2022 走看看