UML系列——類圖class的實現(xiàn)關系Realization

原文地址: https://www.cnblogs.com/wolf-sun/p/3426529.html

系列文章

UML系列——用例圖Use Case
UML系列——用例圖中的各種關系(include、extend)
UML系列——類圖Class
UML系列——類圖class的關聯(lián)關系(聚合、組合)
UML系列——類圖class的依賴關系
UML系列——類圖class的泛化關系

接口的概念

接口是一組沒有實現(xiàn)的操作的集合。接口只提供操作的聲明,不提供任何相應的功能代碼。具體的功能代碼由使用該接口的類實現(xiàn),這叫做實現(xiàn)關系。

一般意義的操作:

public void turnUp()
{
    Console.WriteLine("{0}風扇加速轉動",name);
}

沒有實現(xiàn)的操作:

public void turnUp();

c#中定義接口的方法
[可見性] interface 接口名{[返回值類型] 方法名([參數]);}

1) 接口中只能包含方法、屬性、索引器和事件的聲明,沒有字段和構造函數。
2) 接口中的操作都被視為公有的,不需要添加可見性。
3) 接口中只能提供方法的格式聲明,而不能包含方法的實現(xiàn),所以接口方法的聲明總是以分號結束。

接口的符號

1.png

例如:

public interface turn  //開關
{
    void turnUp();
    void turnDown();
}
2.png

接口的實現(xiàn)

接口中聲明的方法的真正實現(xiàn)是由類來完成的,類必須實現(xiàn)該接口中所定義的所有方法。一個接口可以由多個類來實現(xiàn),而在一個類也可以實現(xiàn)一個或多個接口。

class  類名:接口名列表
 {
      ……  
 }
3.png

4.png

提示:要實現(xiàn)接口,必須在類名后包括接口,然后提供接口的每一個成員的實現(xiàn)。
注意:觀察上例中接口成員和類中相應的實現(xiàn)的訪問類型的寫法,在接口成員的聲明中不需要任何訪問修飾符,而在類中相應接口成員實現(xiàn)定義中則都用public修飾符。

接口的作用:

1、接口制定了一組規(guī)范,實現(xiàn)接口的所有的類都必須遵守這套規(guī)則。

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

程序演示:

public interface animal
 {
    void sound();
}
dog1  class dog : animal
    {
        public string name;
        public int legs;
        public dog(string x, int y)
        {
            name = x;
            legs = y;
        }
        public void sound()
        {
            Console.WriteLine(name + "的叫聲為:" + "汪汪");
        }
    }
class cat : animal
    {
        public string name;
        public int legs;
        public cat(string x, int y)
        {
            name = x;
            legs = y;
        }
        public void sound()
        {
            Console.WriteLine(name + "的叫聲為:" + "喵喵");
        }
    }
class chick : animal
    {
        public string name;
        public int legs;
        public chick(string x, int y)
        {
            name = x;
            legs = y;
        }
        public void sound()
        {
            Console.WriteLine(name + "的叫聲為:" + "咯咯達");
        }
    }
class Program
    {
        static void Main(string[] args)
        {
            animal x;
            
            x = new dog("小狗", 4);
            x.sound();

            x = new cat("小貓", 4);
            x.sound();

            x = new chick("小雞", 2);
            x.sound();
        }
    }

從設計的角度來看,一個項目中有多個類需要去編寫,由于工作量比較大,每個類可能由不同的人進行編寫,比如A程序員去寫Dog類,B程序員去寫Cat類。這兩個類本來沒什么聯(lián)系的,可是由于用戶需要他們都實現(xiàn)一個關于“叫”的方法.這就要對他們進行一種約束,讓他們都繼承于animal接口,目的是方便統(tǒng)一管理,也方便調用。
當然了,不使用接口一樣可以達到目的。只不過這樣的話,這種約束就不那么明顯,如果這樣的類還有Duck類等等,比較多的時候難免有人會漏掉這樣方法,所以說還是通過接口更可靠一些,約束力更強一些。(摘自互聯(lián)網)

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

3、一個類可以實現(xiàn)多個接口??梢栽谕粋€類中同時實現(xiàn)多個接口,即實現(xiàn)多重繼承。要實現(xiàn)多個接口,需將這些接口用逗號分開。

程序演示:模擬手機即可打電話又可以視頻電話

public interface IPhone
{
    void call();
}
public interface IVideo
{
    void show();
}

實現(xiàn)接口:

class visualPhone:IPhone,IVideo
    {
        private string phoneName,videoName;
        public visualPhone(string name1,string name2)
        {
            phoneName = name1;
            videoName = name2;
        }
        public void call()
        {
            Console.WriteLine("{0}開始通話",phoneName);
        }
        public void show()
        {
            Console.WriteLine("{0}開始視頻",videoName);
        }
    }

控制臺程序:

class Program
    {
        static void callShow(IPhone x,IVideo y)
        {
            x.call();
            y.show();
        }

        static void Main(string[] args)
        {
            IPhone m = new visualPhone("步步高", "");
            IVideo n = new visualPhone("", "西門子");
            callShow(m, n);
        }
}

對應的類圖:

5.png

接口的特點

接口中只能包含方法、屬性、索引器和事件的聲明,沒有字段和構造函數和析構函數、不能直接被實例化。接口不能自己實現(xiàn)其操作,而是由相應的類來實現(xiàn)。一個類可以實現(xiàn)多個接口。

對象圖(Object Diagram)

6.png

對象是類的實例,對象圖也可看作是類圖的實例。

對象圖與類圖的關系

對象圖實質上是類圖的實例,主要用于了解系統(tǒng)在某個特定時刻的具體情況,以求發(fā)現(xiàn)類圖中的錯誤,進而修正類圖。

對象的符號

與類的圖形相似,但有如下區(qū)別:

1、對象只有名稱和屬性兩個分欄,沒有操作分欄。

2、對象的名稱要加下劃線

3、對象的屬性應有具體的值。(例如上面的對象圖)

對象名的三種格式

7.png

對象圖的組成
8.png

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

總結

關于類圖的相關到這里已經算是結束了,下面將總結包圖.....

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容