最近看了下設計模式,其中無可避免會設計不少類圖,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