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、接口制定了一組規範,實現接口的所有的類都必須遵守這套規則。

     常常遇到這樣的情況,在父類內定義了一個操作,指望它的子類能夠繼承。但這個操作對於父類自身而言,沒有必要編寫任何代碼,有時也實在不知道該編寫什麼代碼。這時,我們就不去實現這個操作,接口就是這樣一組操作的集合。

    程序演示:

接口

dog

cat

chick

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、對象的屬性應有具體的值。(例如上面的對象圖)

對象名的三種格式

對象圖的組成

                                                             提示:對象圖沒有多重性,因爲所有的鏈都是一對一的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章