类图中的6大关系
文章目錄
- 類圖中的6大關(guān)系
- 1. 依賴關(guān)系(Dependency)
- 2. 泛化關(guān)系(generalization)
- 3. 實(shí)現(xiàn)關(guān)系(Implementation)
- 4. 關(guān)聯(lián)關(guān)系(Association)
- 5. 聚合關(guān)系(Aggregation)
- 6. 組合關(guān)系(Composite)
- 7. 總結(jié)
類圖中的6大關(guān)系
1. 依賴關(guān)系(Dependency)
如果在一個(gè)A類中用到了另一個(gè)B類,那么就說A類依賴B類。類圖表示如下:
只要B類滿足下面條件中的任意一個(gè),就說A類依賴B類:
2. 泛化關(guān)系(generalization)
泛化關(guān)系可以說是繼承關(guān)系,是依賴關(guān)系的特例。
用類圖表示:
3. 實(shí)現(xiàn)關(guān)系(Implementation)
B類實(shí)現(xiàn)了A接口,就說A接口和B類之間有實(shí)現(xiàn)關(guān)系,實(shí)現(xiàn)關(guān)系是依賴關(guān)系的特例。
用類圖表示:
4. 關(guān)聯(lián)關(guān)系(Association)
關(guān)聯(lián)關(guān)系表示的是類與類之間的聯(lián)系,例如:
class Person {private IdCard idCard; } class IdCard {}在上面的代碼中,Person和IdCard就是單向一對一的關(guān)系。
又如:
class Person {private IdCard idCard; } class IdCard {private Person person; }在上面的代碼中,我們說Person和IdCard是雙向一對一的關(guān)系。
5. 聚合關(guān)系(Aggregation)
聚合關(guān)系表示的是整體和部分的關(guān)系,整體和部分是可以分開的,它是關(guān)聯(lián)關(guān)系的特例。
class Computer {//Computer和Monitor、Mouse是可以分離的private Monitor monitor;private Mouse mouse;public void setMonitor(Monitor monitor) {this.monitor = monitor;}public void setMouse(Mouse mouse) {this.mouse = mouse;} }class Monitor {}class Mouse {}用類圖表示:
6. 組合關(guān)系(Composite)
和聚合關(guān)系類似,組合關(guān)系關(guān)系也是用來描述整體和部分的關(guān)系,但是,它規(guī)定了部分和整體是不能分開的。
class Computer {//Computer這個(gè)整體和Monitor、Mouse這兩個(gè)部分是不能分離的private Monitor monitor = new Monitor();private Mouse mouse = new Mouse(); }class Monitor {}class Mouse {}用類圖描述:
7. 總結(jié)
依賴關(guān)系和泛化關(guān)系很好理解,對應(yīng)于java中的實(shí)現(xiàn)和繼承。而實(shí)現(xiàn)、關(guān)聯(lián)、聚合、組合這四種關(guān)系都是語義級別的,所以從代碼層面并不能完全區(qū)分各種關(guān)系,但總的來說,后幾種關(guān)系所表現(xiàn)的強(qiáng)弱程度依次為:組合>聚合>關(guān)聯(lián)>依賴。
總結(jié)
- 上一篇: 电竞巅峰对决:惊心刺激,默契配合,谁能笑
- 下一篇: 内存搭配攻略:DDR3 vs DDR4,