1.類圖的畫法
類
整體是個矩形,第一層類名,第二層屬性,第三層方法。
- +? :public
- -? ?:? private
- #? :? protected
- 空格: 默認的default
?對應的類寫法。
public class Student {public String name;public Integer age;protected Integer cardId;Integer mark;public void setName(String name) {this.name = name;}public String getName() {return name;}
}
抽象類
對比類,就是第1層類名和第3層?方法名用斜體表示。
?對應類。
接口
頂層多了interface字段,其余好像沒啥區別了。
?包
里面就是對應包的名字。
對應java寫法。
package com.zgxt.demo.domain;public class Student {}
?2.類圖的關系
如果說,類圖為了表現java中的類,那么類圖的關系就代表java中中類、接口之間的關系。
?泛化關系
泛化就是Java中的繼承。
?表示符號,就是一個橫線 + 空心三角。
?對應的類關系圖。
?
?實現關系
實現就是java中的實現
?表示方法,一條虛線 + 空心三角。
?依賴關系
如果一個類失去一個類代碼無法編譯,那么說這個類依賴于這個類。
具體表現為:成員變量、局部變量、方法形參,方法返回值。
?表示方法全虛線箭頭。
?對應的類關系。
// 小孩
class Child{private Hand hand; // 依賴關系:成員變量也成為關聯public void riding(Foot foot){ // 方法形參Bike bike = new Bike(hand,foot); // 局部變量}
}
關聯關系
2個類依賴關系且是依賴,并且是依賴中的成員變量,則存在關聯關系。
而且再細分,感覺跟MySQL中的外鍵約束,表設計有異曲同工之妙。
MySQL FOREIGN KEY 外鍵約束 (w3schools.cn)
?關聯對應表示圖。
單向關聯
?雙向關聯
?聚合
是在依賴的及基礎上(成員變量),但是和關聯表現的層級不同,關聯表示同層級之間,而聚合表示整體和部分層級之間。
另外: 整體和部分之間可以相互獨立存在。
如: 一個公司由老板和員工組成。那么公司和員工關系就是聚合。而老板和員工的關系就是關聯。
?表示圖形:空心菱形 + 箭頭。
代碼:一個Computer類需要Boss類和Employee類,聚合。
而Employee類中的businessTrip[出差]() 方法需要Boss的同意,這就是關聯。
// 聚合和關聯
class Computer{private Boss boss; // 聚合private Employee employee; // 聚合
}class Boss{}class Employee{private Boss boss; // 關聯public boolean businessTrip(){// boss同意 return true// boss不同意 return false}
}
對應的圖形?
組合
區別與聚合,組合的整體和部分之間不能獨立存在。
如: 人由手、腳、頭等身體部位組成,但是手離開人和人離開手都不能做相應的方法。
表示圖形: 實心菱形 + 實線箭頭。
這個我就不畫了。