UML類圖詳細介紹


類圖主要描述程序對象以及他們之間的關系。一般來說,類、接口、抽象類這些程序對象的區別很容易,但是他們之間六種關系以前總是理解不夠深刻,這次進行了一次復習,順便寫成博文以便加深理解

類圖中的三種對象


類/抽象類

類的表示一般一般如下圖所示


 

  • 類名:圖正中間的黑體字表示類的名稱,如果是名字的字體是斜體字,則表明該類是抽象類
  • 屬性:類名下面的區域表示類的屬性
  • 操作:屬性下面的區域表示類的操作(或者說方法)。
  • 可見性:屬性和操作前面的+、-、#符號代表了這些對象的可見性分別是public、private、protected

 

接口

 

接口的表示一般如下圖所示

 

 

接口的圖和類圖類似,只不過加入了interface標識。接口中的成員可見性都是public

 


類圖中的六種關系

 

類圖中,類與類之間一般會有六種關系,他們分別是繼承(Generalization)、實現(Implements)、組合(Composition)、聚合(Aggressgation)、依賴(Dependency)、關聯(Association)

 

繼承(Generalization)

如果對面向對象編程思想了解,則比較容易理解繼承的概念。在面向對象的編程思想中,繼承是指子類繼承了父類的所有功能,並且能夠在父類的基礎上擴展自己的功能。這里的繼承就是表現這種父類和子類的關系。繼承關系如下圖所示


在這里Teacher和Student類分別是繼承了Person類,自動擁有了Person類的公共屬性和操作。同時他們分別擴展了自己獨有的操作teach和listen。繼承關系用一個實線空箭頭的連線來表示,箭頭指向父類


實現(Implements)

 

實現的概念和繼承有些類似。但是接口中不會有已經寫好的操作或者方法,接口中聲明的操作都需要再實現類中實現。實現關系如下圖所示

在這里SuperMan類一樣繼承了Person類,因為超人還有一個特性是會飛,所以他還實現了一個Fly的接口。實現關系用一個虛線空心箭頭的連線來表示,箭頭指向接口。


 

組合(Composition)

組合表示的是兩個對象之間一種強“擁有”的關系,如果B組合成為A,那么B是A的一個整體,B和A的生命周期是一樣的。例如是一種部分與整體的關系,部分與整體之間的生命周期是一樣的。組合關系用一個一個帶箭頭的連線表示,尾巴上有實心的菱形,箭頭指向被擁有的對象。上面的數字表示兩者之間的數量關系。如下圖所示


在這里,Hand和Person是組合關系,Hand是Person的部分,Person擁有Hand,而且Hand的生命周期依賴Person的生命周期。也就是說Person沒有了,Person的Hand也沒有了。在這里表示一個Hand一定歸宿一個Person而一個Person可能有0個或者多個Hand。因為剛剛有報道說一個人長了3只腳,所以一個人也可能長出多條手哈大笑


聚合(Aggressgation)

聚合也表示兩個對象之間的一種擁有關系,但是這個關系是一種弱的擁有關系。兩者的生命周期是不依賴的。這是和組合的一個重要區別。聚合關系用一個帶箭頭的連續表示,尾巴帶一個空心的菱形,箭頭指向被擁有的對象。上面的數字表示兩個對象之間的數量關系。如下圖所示


這里Classess是由Teacher和Student聚合而成,他們之間是一種擁有關系,但是Classes消亡,並不代表Teacher和Student的消亡,他們的生命周期是不依賴的。這是和組合的重要區別。這幅圖里面聚合關系上的數字表示一個Teacher可以在0或者多個Classes中,而一個班級可以由0到多個Teacher。Classes和Student之間聚合關系上的的數量表示的是同樣的含義。


依賴(Dependency)

如果一個對象的活動中要依賴另一個對象,則兩者之間是依賴關系。例如學生上課依賴課程對象,老師教課也依賴課程對象。依賴關系用一個虛線箭頭表示,箭頭指向被依賴的對象。在代碼中一般體現為操作的參數。如下圖所示




關聯(Association)

如果一個對象需要知道另一個對象,則對象之間是一種關聯的關系。關聯可以是單向的,即一個對象知道另一個對象,而另一個對象不知道該對象,也可以是雙向的,即兩個對象相互知道。關聯式用一條實現表示,單向關聯帶一個箭頭,指向被知道的對象,雙向關聯無箭頭。例如學生需要了解考試對象的情況,考試對象需要了解學生的情況,這是一種雙向關聯關系。如下圖所示。





 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM