類別關係新解

來源:互聯網
上載者:User

類的關係問題原來在uml學習中研究過一次,但是沒有結合c#代碼。在設計模式的學習中,逐步接觸了一些代碼,結合uml圖和網上找的資料,又有了一些新的想法。

一:依賴


class animal{   public getneed(Oxygen oxygen,Water water){}}

結合代碼來看,動物類的getneed方法中使用了水和氧氣的對象作為參數,如果水和氧氣發生改變,那麼動物就會受到影響。動物對水和氧氣來說是一種使用關係

從網上查的資料來看,依賴還包含以下幾種可能:

1A類是B類中的某方法的局部變數

2A是B類方法中一個參數

3A類向B類發送訊息,從而影響B類發生變化。

二普通關聯

class penguin{private Climate climate;}

從圖片上來看,企鵝的種種活動離不開天氣,企鵝需要知道天氣。從代碼上來看,企鵝類使用了天氣類的對象作為自己的屬性。相比水和空氣對動物的影響,天氣對企鵝的影響更小,更符合物件導向設計的原則,因此,關聯比依賴使用更普遍。

三彙總

01.public class Car  02.{  03.    private Engine engine;  04.    public Car(Engine engine)  05.   {  06.        this.engine = engine;  07.    }  08.      09.    public void setEngine(Engine engine)  10.    {  11.        this.engine = engine;  12.    }  13.    ……  14.}  15.public class Engine  16.{  17.    ……  18.}  

從圖上看,汽車包含發動機,脫離汽車,發動機仍然啊能夠活動,發動機不是汽車的一部分。從代碼上看,在CAR類中,定義了發動機類型的資料,並將其作為建構函式和方法的參數。並且在建構函式和方法中,讓建構函式和方法中的參數向屬性賦值。
四組合

class bird{ private Wing wing; public Bird()  {   wing = new Wing();}}

從圖片上看,組合是一種強的擁有關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期一樣。從代碼上看,在鳥類中的建構函式中直接將翅膀執行個體化,這樣做的結果就是在初始化鳥類時,翅膀類也將產生,它們之間是同時的。這是它與彙總的一大不同之處。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.