1. 程式人生 > >淺談UML中的聚合與組合(兩者之間的區別)

淺談UML中的聚合與組合(兩者之間的區別)

  1. publicclass Goose  
  2. {  
  3.     public Wings wings;  
  4.     public Goose()  
  5.     {  
  6.         wings=new Wings();  
  7.     }  
  8. }  




聚合關係的類裡含有另一個類作為引數

雁群類(GooseGroup)的建構函式中要用到大雁(Goose)作為引數把值傳進來 大雁類(Goose)可以脫離雁群類而獨立存在 

組合關係的類裡含有另一個類的例項化

大雁類(Goose)在例項化之前 一定要先例項化翅膀類(Wings) 兩個類緊密耦合在一起 它們有相同的生命週期 翅膀類(Wings)不可以脫離大雁類(Goose)而獨立存在

資訊的封裝性不同

在聚合關係中,客戶端可以同時瞭解雁群類和大雁類,因為他們都是獨立的

而在組合關係中,客戶端只認識大雁類,根本就不知道翅膀類的存在,因為翅膀類被嚴密的封裝在大雁類中。