posts - 1,comments - 0,trackbacks - 0

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

          版本一:

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

          版本二:

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

           

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

          1、泛化關(guān)系:類之間或接口之間的繼承關(guān)系。(一種說法說它包含了實(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ù)量對比,關(guān)聯(lián)關(guān)系分為:

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

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

          多對多關(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)系。聚合是整體與個體之間的關(guān)系。聚合關(guān)系是通過實(shí)例變量來實(shí)現(xiàn)的。

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

           

          對比4和5舉例子

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

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

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

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

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

           

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

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

           

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

           

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

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

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

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

          posted @ 2007-10-26 15:24 yangyansong 閱讀(670) | 評論 (0)編輯 收藏
          僅列出標(biāo)題  
          主站蜘蛛池模板: 紫阳县| 奈曼旗| 清流县| 玛多县| 独山县| 中山市| 如皋市| 蒙城县| 鹤山市| 稷山县| 祁门县| 昭通市| 金平| 花莲市| 徐汇区| 梅河口市| 崇义县| 虎林市| 肥西县| 吴江市| 徐州市| 锡林郭勒盟| 垣曲县| 呈贡县| 九江县| 桃园县| 巴南区| 宜兴市| 伊吾县| 盐边县| 晋州市| 松溪县| 黄平县| 西乌珠穆沁旗| 邯郸县| 白银市| 长乐市| 伊川县| 万州区| 巴中市| 福泉市|