posts - 1,comments - 0,trackbacks - 0

          關(guān)于UML規(guī)定的類之間的關(guān)系網(wǎng)上查到的說(shuō)法不一,但都說(shuō)是5種:

          版本一:

          泛化、關(guān)聯(lián)、聚合、合成、依賴

          版本二:

          關(guān)聯(lián)、依賴、聚集、泛化、實(shí)現(xiàn)

           

          那我們就都拿來(lái)說(shuō)一下吧!每個(gè)人心中都有一種屬于自己的類關(guān)系分類。

          1、泛化關(guān)系:類之間或接口之間的繼承關(guān)系。(一種說(shuō)法說(shuō)它包含了實(shí)現(xiàn)關(guān)系)

          代碼:

          public class CA

          {

          ......

          }

          public class CAS extends CA

          {

          ......

          }

          2、實(shí)現(xiàn)關(guān)系:實(shí)體類實(shí)現(xiàn)接口叫做實(shí)現(xiàn)關(guān)系。

          代碼:

          public interface A
          {
          public void methodA();
          }
          public class B implements A
          {
          public void methodA()
          {...}
          ...
          }

          3、關(guān)聯(lián)關(guān)系:類之間的聯(lián)接。比較寬泛的一種關(guān)系,分為聚集和合成(有的版本將這兩種關(guān)系合并成了聚合)。

          按照類之間的數(shù)量對(duì)比,關(guān)聯(lián)關(guān)系分為:

          一對(duì)一關(guān)聯(lián)

          一對(duì)多關(guān)聯(lián)

          多對(duì)多關(guān)聯(lián)

          按照方向,關(guān)聯(lián)關(guān)系分為:

          單向關(guān)聯(lián)

          雙向關(guān)聯(lián)

          4、聚集關(guān)系:是關(guān)聯(lián)關(guān)系的一種,是強(qiáng)的關(guān)聯(lián)關(guān)系。聚合是整體與個(gè)體之間的關(guān)系。聚合關(guān)系是通過(guò)實(shí)例變量來(lái)實(shí)現(xiàn)的。

          5、合成(組合)關(guān)系:是關(guān)聯(lián)關(guān)系的一種,是比聚集關(guān)系強(qiáng)的關(guān)聯(lián)關(guān)系。它要求普通的聚合關(guān)系中代表的對(duì)象負(fù)責(zé)代表部分的對(duì)象的生命周期,合成關(guān)系是不能共享的。

           

          對(duì)比4和5舉例子

          聚集關(guān)系中,子系統(tǒng)允許被拆卸和替換。例如:電燈和燈泡

          Bulb bulb1 = new Bulb(); //創(chuàng)建第一個(gè)燈泡

          Bulb bulb2 = new Bulb(); //創(chuàng)建第二個(gè)燈泡

          ReadingLamp lamp = new ReadingLamp(bulb1); //創(chuàng)建的時(shí)候使用第一個(gè)燈泡

          lamp.setBulb(bulb2); //創(chuàng)建以后還可以換成第二個(gè)燈泡

           

          合成關(guān)系中,子系統(tǒng)不允許被拆卸和替換。例如:Windows的窗口和窗口上的菜單就是組合關(guān)系。生命周期一致指的是部分必須在組合創(chuàng)建的同時(shí)或者之后創(chuàng)建,在組合銷毀之前或者同時(shí)銷毀,部分的生命周期不會(huì)超出組合的生命周期。

          【聚集和合成在代碼實(shí)現(xiàn)上的主要差別在于生命周期的實(shí)現(xiàn)上,合成需要負(fù)責(zé)其部分的創(chuàng)建和銷毀;聚集則不然,部分可以在整體之前創(chuàng)建也可以在整體銷毀之后再銷毀或者一直不銷毀】

           

          6、依賴關(guān)系:是類與類之間的連接,依賴總是單向的。依賴關(guān)系代表一個(gè)類依賴于另一個(gè)類的定義。一般而言,依賴關(guān)系在Java語(yǔ)言中體現(xiàn)為局部變量,以及一個(gè)方法的參數(shù)。

           

          【區(qū)分幾種關(guān)系】

          依賴、關(guān)聯(lián)、聚集、合成看起來(lái)都很象,一個(gè)類里面出現(xiàn)了其他類的影子。

          關(guān)聯(lián)、聚集、合成都可以說(shuō)是一種依賴,只是它們有比較強(qiáng)的語(yǔ)義和其他作用。在實(shí)際使用的時(shí)候類之間的關(guān)系確定了關(guān)聯(lián)、聚集、合成以后,剩下的就可以叫做依賴了。

          聚集、合成又是一種關(guān)聯(lián)。關(guān)聯(lián)關(guān)系中兩個(gè)類是平級(jí)的,當(dāng)出現(xiàn)整體和個(gè)體的跡象時(shí)就變成了聚集,個(gè)體的生命周期需要被整體嚴(yán)格控制時(shí)又變成了合成。

          posted on 2007-10-26 15:24 yangyansong 閱讀(670) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 城市| 仪陇县| 神木县| 宜丰县| 永安市| 临沭县| 怀柔区| 安远县| 措美县| 阿荣旗| 舒兰市| 湖南省| 湟源县| 临颍县| 勐海县| 布尔津县| 富顺县| 宜州市| 白玉县| 宝丰县| 广饶县| 陈巴尔虎旗| 临沂市| 河津市| 儋州市| 郑州市| 离岛区| 纳雍县| 河间市| 合水县| 新余市| 巴中市| 阳原县| 海兴县| 海阳市| 建始县| 蕉岭县| 称多县| 庄河市| 浮山县| 磐石市|