設計模式--UML關係與程式碼對照

00潤物無聲00發表於2015-01-10

    在學習UML的時候,重點掌握UML的九種圖和六種關係,以及他們衍生出來的作品。在機房收費系統完成後,通過UML的理論知識的學習之後,實踐了一把。UML對系統進行建模之後,我們需要把UML圖轉換成具體的程式碼,用程式碼去實現我們的模型。每種關係在程式碼中的表示方法是怎樣的,同樣我們反過來,看了程式碼之後,我們能夠對應著找到類與類之間的關係。

繼承:指的是一個類(稱為子類、子介面)繼承另外的一個類(稱為父類、父介面)的功能,並可以增加它自己的新功能的能力。

   

   程式碼

       class Bird : Animal
       {
	//成員;
       }

實現:指的是一個class類實現interface介面(可以是多個)的功能。

  介面的表示方法

1.直接畫棒棒糖形狀的。

2.把一個類的形式設定為Interface然後選中這個interface, Format->Stereotype display->Lable

程式碼

<span style="font-size:24px;">      class Bird :IFlay,IWalk	//介面的多繼承;
      {

      }</span>

關聯Association):當一個類知道另一個類時用關聯

      

       程式碼

<span style="font-size:24px;">       class Penguin : Bird
       {
           private Climate climate;    //企鵝繼承鳥類,引用到了Climate物件
       }</span>

依賴Dependency):一個類A使用到了類B,類B的變化會影響到類A


       程式碼

<span style="font-size:24px;">        abstract class Animal 
<span style="white-space:pre">	</span>{
	     public Metabolism(Oxygen oxygen,Water water)
             {
		//Water和Oxygen類作為Animal類的某個方法的引數或返回值; 
	     }
	}</span>

組合Composition):一種強“擁有”關係,體現了嚴格的部分和整體關係,部分和整體的生命週期一樣。

        

       程式碼

<span style="font-size:24px;">	class Bird
        {
	    private Wing wing;
            public Bird()
            {
               wing =new Wing();     //建構函式,初始化鳥類時,例項化Wing;生命週期相同
            }	
	}</span>


聚合Aggregation):一種弱“擁有”關係,體現了A物件可以包含B物件,但B物件不是A物件的一部分。B可以脫離A單獨存在。生命週期不同

        

       程式碼

<span style="font-size:24px;">       class WideGooseAggregate
       {
         private WideGoose[] arrayWideGoose;	//雁群中有大雁陣列;
       }</span>

        每一種設計模式,都是用UML圖給出,這些模式的UML圖,就是類與類關係的各種組合,熟悉了基礎,更加有利於後面對程式碼的理解。看到程式碼想到相應的UML圖,掌握每一種模式的UML圖的重點所在,從小入手,各個擊破。


      

相關文章