UML類圖相關實踐

  最近看了下設計模式,其中無可避免會設計不少類圖,UML類圖對於學習設計模式很重要,關於設計模式,我也會在這裏寫上一寫,這一篇關於UML類圖的就先當個鋪墊。html

        1.先上一個簡單的類圖來簡單說明下:設計模式

       

        1).其中MyClass表明的是類名。學習

        2).name,gender和age分別表明成員變量,其中+表明public,#表明product,-表明private,冒號後面的String標示的都是成員變量的類型。url

        3).getAge和setAge表明的是方法,前面的+跟成員變量標示的意義同樣標示public,其中setAge中的String標示接收一個String類型的參數,冒號後面的表明的是返回值。spa

        2.類與類之間的關係.net

        類與類之間的關係分爲,關聯關係,聚合關係,組合關係,依賴關係和泛化關係,下面分別說下設計

        1).關聯關係:兩個相對獨立的對象,當一個對象的實例與另一個對象的特定實例存在固定關係時,這兩個對象之間就存在關聯關係。關聯關係又分爲單向關聯,雙向關聯,自身關聯和多維關聯。3d

        單關聯,寫IO相關類時候都寫過相似於這樣的代碼 new BufferInputStream(new FileInputStream("d:\\my.txt"));code

其中BufferInputStream類持有一個FileInputStream的引用,經過構造方法傳入的,這樣就是一個單關聯htm

                          

        雙關聯,舉個簡單的例子,咱們都當過學生,咱們都有不少老師,一樣一個老師也有不少學生,類圖以下

                          

      代碼以下:

public class Teacher {
    private final static List<Student> students = new ArrayList<Student>();
    public void putStudent(Student student) {
        students.add(student);
    }   
}  
 
public class Student {
    private final static List<Teacher> teachers= new ArrayList<Teacher>();
    public void putTeacher(Teacher teacher){
        teachers.add(teacher); 
    }  
}

         自關聯,說實話沒想起什麼好的例子,能夠拿單例看下

           

         多維關聯,例如一個頁面能夠有多個文本框,但一個文本框只能在一個頁面下

                  

          2).聚合關係:聚合關聯是一種特殊的關聯. 它表示類間的關係是總體與部分的關係. 簡言之: 關聯關係中的一個類描述了一個較大的事物, 它由較小的事物組成.

好比一個軟件工程專業有不少課程組成,其中Java這個課程從這個專業拿掉,這個專業仍是軟件工程,而Java仍是能夠單獨存在的。

     

        3).組合關係:整件擁有部件的生命週期, 因此整件刪除時, 部件必定會跟着刪除. 並且, 多個整件不能夠同時共享同一個部件。

 

        說我的的例子吧,人由不少部分組成,其中一部分是骨骼,若是人沒了,那其實骨骼也就沒生命力了,骨骼不可能脫離人這個總體而單獨存在。

      

        4).依賴關係:表示一個事物的使用須要另一個事物的行爲,就像老司機開車,除了老司機類的開車方法裏須要調用車的移動方法。

       

      5).泛化關係:這就是一種繼承關係,它表明父類和子類之間的關係。

      

       其實還有一種就是接口的實現關係

       

       好了這個UML類圖就簡單到這,畫的很差,並且風格不統一(家裏的版本和公司的不同啊!),這個類圖看的清楚對設計模式的學習很重要!就醬!

 

       參考:

              http://blog.csdn.net/column/details/umlmodelingtechnolog.html

              http://zhidao.baidu.com/link?url=-lT7C_ESkA-OZ_3onmrPHMI14dv2K2wxAuWhHFdyDd5WZvTTanxYBEZXbMDUlauKVmlNcXOmZwbt1R5QUXS4j4NV3ULgyI_7kMGPqZ-v6Yy

相關文章
相關標籤/搜索