原文地址: 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),所以接口方法的聲明總是以分號結束。
接口的符號

例如:
public interface turn //開關
{
void turnUp();
void turnDown();
}

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


提示:要實現(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);
}
}
對應的類圖:

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

對象是類的實例,對象圖也可看作是類圖的實例。
對象圖與類圖的關系
對象圖實質上是類圖的實例,主要用于了解系統(tǒng)在某個特定時刻的具體情況,以求發(fā)現(xiàn)類圖中的錯誤,進而修正類圖。
對象的符號
與類的圖形相似,但有如下區(qū)別:
1、對象只有名稱和屬性兩個分欄,沒有操作分欄。
2、對象的名稱要加下劃線
3、對象的屬性應有具體的值。(例如上面的對象圖)
對象名的三種格式

對象圖的組成

提示:對象圖沒有多重性,因為所有的鏈都是一對一的。
總結
關于類圖的相關到這里已經算是結束了,下面將總結包圖.....