UML类图操作(二)
在上一篇中講了類圖的操作以及介紹,當(dāng)然類不是單獨(dú)存在的,類與類之間存在著關(guān)系,UML提供了類之間的關(guān)系的表達(dá)方式。
UML類圖操作(一)
?
下面簡單介紹設(shè)置操作,雙擊關(guān)系線,然后找到Detail
1.關(guān)聯(lián)關(guān)系(Association)
關(guān)聯(lián)關(guān)系:屬于結(jié)構(gòu)關(guān)系,對象與對象之間的關(guān)系
1.1.1單向關(guān)聯(lián)
?
class Man {public Car car; } class Car {}?
?
?
?
1.1.2雙向關(guān)聯(lián)
?
?
?
class Studen {public Grade grade; } class Grade {public Student student; }?
1.1.3自關(guān)聯(lián)
class ClassA {public ClassA classA; }?
1.1.4多重關(guān)聯(lián):
1..1 : 表示另一個(gè)類的一個(gè)對象只與該類的一個(gè)對象有關(guān)系
0..*:表示另一個(gè)類的一個(gè)對象與該類的零個(gè)或多個(gè)對象有關(guān)系
1..*:表示另一個(gè)類的一個(gè)對象與該類的一個(gè)或多個(gè)對象有關(guān)系
0..1:表示另一個(gè)類的一個(gè)對象沒有或者只有一個(gè)對象有關(guān)系
m..n:表示另一個(gè)類的一個(gè)對象與該類最少有m個(gè)最多有n個(gè)對象有關(guān)系
這里值得注意的是:有*的關(guān)聯(lián)性關(guān)系就有數(shù)組
?
1.2聚合關(guān)系(Aggregation)
聚合關(guān)系:表示整體與部分關(guān)系,部分是整體的一部分,也可以脫離整理獨(dú)立存在。也就是說car被回收,gasoline不會(huì)跟car一起被回收。
?
class Car{public Gasoline gasoline;//構(gòu)造注入public Car(Gasoline gasoline){this.gasoline = gasoline;}//屬性注入public Gasoline Gasoline{get { return gasoline; }set { gasoline = value; }}}class Gasoline{}這里注意的是:通過構(gòu)造函數(shù)注入;通過屬性注入;
?
?
?
1.3組合關(guān)系
組合關(guān)系:也是整體和部分的關(guān)系,但是組合關(guān)系中整體控制部分的生命周期,也就是說你在使用car對象的時(shí)候,在它的構(gòu)造函數(shù)里面創(chuàng)建wheel,在回收car的時(shí)候wheel同時(shí)被回收
class Car{public Wheel wheel;public Car(){//實(shí)例化wheel = new Wheel();}}class Wheel{}2.依賴關(guān)系(Dependency)
依賴關(guān)系:依賴關(guān)系屬于一種使用關(guān)系,比如司機(jī)使用車,但是這個(gè)車會(huì)變化,可以開自行車,可以開轎車。。一般都是某個(gè)類使用另一個(gè)類里面的對象作為參數(shù)使用
所以我們一般用到的3種方式
(1)將一個(gè)對象作為類的參數(shù),比如通過構(gòu)造函數(shù)傳參 public Car (A a){};
(2)將一個(gè)對象作為參數(shù)傳入類的方法,比如 :public void A(Car car);
(3)在一個(gè)類里面調(diào)用靜態(tài)對象的方法,比如 Car.Move();
?
?
下面我們使用第一種方式
class Driver{public Driver(Car car){car.Move();}}class Car{public void Move(){ }}?
3.泛化關(guān)系(Generalization)
泛化關(guān)系:俗稱繼承關(guān)系,子類繼承父類。
?
public class Subclass : Base{}public class Base{}4.實(shí)現(xiàn)關(guān)系(Realization)
實(shí)現(xiàn)關(guān)系:這個(gè)是屬于接口之間繼承的關(guān)系
?
class Subclass : IBase{public void Move(){}}interface IBase{void Move();}?
?
?
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的UML类图操作(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ffaker
- 下一篇: mavenspringboot项目打包引