青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 311, comments - 0, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

在建立對象模型時,很容易把依賴、關(guān)聯(lián)和聚集關(guān)系混淆。當對象A和對象B之間存在依賴、關(guān)聯(lián)或聚集關(guān)系時,對象A都有可能調(diào)用對象B的方法,這是三種關(guān)系之間的相同之處,除此之外,它們有著不同的特征。

1.依賴關(guān)系的特征


對于兩個相對獨立的系統(tǒng),當一個系統(tǒng)負責構(gòu)造另一個系統(tǒng)的實例,或者依賴另一個系統(tǒng)的服務(wù)時,這兩個系統(tǒng)之間主要體現(xiàn)為依賴關(guān)系,例如生產(chǎn)零件的機器和零件,機器負責構(gòu)造零件對象。再例如充電電池和充電器,充電電池通過充電器來充電。再例如自行車Bicycle和打氣筒Pump,自行車通過打氣筒來充氣。圖1-39為Bicycle類與Pump類的類框圖。



圖1-39 Bicycle類與Pump類的依賴關(guān)系

Bicycle類和Pump類之間是依賴關(guān)系,在Bicycle類中無需定義Pump類型的變量。Bicycle類的定義如下:

 

 

public class Bicycle{
/** 給輪胎充氣 */
public void expand(Pump pump){
pump.blow();
}
}

 


在現(xiàn)時生活中,通常不會為某一輛自行車配備專門的打氣筒,而是在需要充氣的時候,從附近某個修車棚里借個打氣筒打氣。在程序代碼中,表現(xiàn)為Bicycle類的expand()方法有個Pump類型的參數(shù)。以下程序代碼表示某輛自行車先后到兩個修車棚里充氣:

 

myBicycle.expand(pumpFromRepairShed1); //到第一個修車棚里充氣
myBicycle.expand(pumpFromRepairShed2); //若干天后,到第二個修車棚里充氣


 

2.關(guān)聯(lián)關(guān)系的特征
對于兩個相對獨立的系統(tǒng),當一個系統(tǒng)的實例與另一個系統(tǒng)的一些特定實例存在固定的對應(yīng)關(guān)系時,這兩個系統(tǒng)之間為關(guān)聯(lián)關(guān)系。例如客戶和訂單,每個訂單對應(yīng)特定的客戶,每個客戶對應(yīng)一些特定的訂單;再例如公司和員工,每個公司對應(yīng)一些特定的員工,每個員工對應(yīng)一特定的公司;再例如自行車和主人,每輛自行車屬于特定的主人,每個主人有特定的自行車,圖1-40顯示了主人和自行車的關(guān)聯(lián)關(guān)系。而充電電池和充電器之間就不存在固定的對應(yīng)關(guān)系,同樣自行車和打氣筒之間也不存在固定的對應(yīng)關(guān)系。

圖1-40 主人和自行車的關(guān)聯(lián)關(guān)系


Person類與Bicycle類之間存在關(guān)聯(lián)關(guān)系,這意味著在Person類中需要定義一個Bicycle類型的成員變量。以下是Person類的定義:

 

public class Person{
private Bicycle bicycle; //主人的自行車

public Bicycle getBicycle(){
return bicycle;
}
public void setBicycle(Bicycle bicycle){
this.bicycle=bicycle;
}
/** 騎自行車去上班 */
public void goToWork(){
bicycle.run();
}
}

 


在現(xiàn)時生活中,當你騎自行車去上班時,只要從家里推出自己的自行車就能上路了,不象給自行車打氣那樣,在需要打氣時,還要四處去找修車棚。因此,在Person類的goToWork()方法中,調(diào)用自身的bicycle對象的run()方法。假如goToWork()方法采用以下的定義方式:

 

/** 騎自行車去上班 */
public void goToWork(Bicycle bicycle){
bicycle.run();
}


 

那就好比去上班前,還要先四處去借一輛自行車,然后才能去上班。


3.聚集關(guān)系的特征


當系統(tǒng)A被加入到系統(tǒng)B中,成為系統(tǒng)B的組成部分時,系統(tǒng)B和系統(tǒng)A之間為聚集關(guān)系。例如自行車和它的響鈴、龍頭、輪胎、鋼圈以及剎車裝置就是聚集關(guān)系,因為響鈴是自行車的組成部分。而人和自行車不是聚集關(guān)系,因為人不是由自行車組成的,如果一定要研究人的組成,那么他應(yīng)該由頭、軀干和四肢等組成。由此可見,可以根據(jù)語義來區(qū)分關(guān)聯(lián)關(guān)系和聚集關(guān)系。

聚集關(guān)系和關(guān)聯(lián)關(guān)系的區(qū)別還表現(xiàn)在以下方面:

(1) 對于具有關(guān)聯(lián)關(guān)系的兩個對象,多數(shù)情況下,兩者有獨立的生命周期。比如自行車和他的主人,當自行車不存在了,它的主人依然存在;反之亦然。但在個別情況下,一方會制約另一方的生命周期。比如客戶和訂單,當客戶不存在,它的訂單也就失去存在的意義。

(2) 對于具有聚集關(guān)系(尤其是強聚集關(guān)系)的兩個對象,整體對象會制約它的組成對象的生命周期。部分類的對象不能單獨存在,它的生命周期依賴于整體類的對象的生命周期,當整體消失,部分也就隨之消失。比如小王的自行車被偷了,那么自行車的所有組件也不存在了,除非小王事先碰巧把一些可拆卸的組件(比如車鈴和坐墊)拆了下來。
不過,在用程序代碼來表示關(guān)聯(lián)關(guān)系和聚集關(guān)系時,兩者比較相似。圖1-41為自行車Bicycle與響鈴Bell的聚集關(guān)系。

圖1-41 自行車和響鈴的聚集關(guān)系

以下例程1-6是Bicycle類的源程序。

 

例程1-6 Bicycle.java

public class Bicycle{
private Bell bell;

public Bell getBell(){
return bell;
}

public void setBell(Bell bell){
this.bell=bell;
}

/** 發(fā)出鈴聲 */
public void alert(){
bell.ring();
}
}

 


在Bicycle類中定義了Bell類型的成員變量,Bicycle類利用自身的bell成員變量來發(fā)出鈴聲,這和在Person類中定義了Bicycle類型的成員變量,Person類利用自身的bicycle成員變量去上班很相似。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲嫩草精品久久| 久久国产免费看| 国产精品久久久久久久一区探花 | 久久er99精品| 性久久久久久久| 亚洲欧美日韩精品一区二区| 亚洲欧美成人精品| 久久影音先锋| 亚洲狠狠丁香婷婷综合久久久| 久久精品国产77777蜜臀| 久久美女性网| 亚洲欧洲精品一区二区| 亚洲一区网站| 欧美不卡激情三级在线观看| 欧美日韩你懂的| 国产日韩欧美一二三区| 国产在线国偷精品产拍免费yy| 在线免费观看日韩欧美| 一本色道久久88综合日韩精品 | 久久精品国产第一区二区三区| 麻豆精品视频在线| 99视频日韩| 久久久久久9| 欧美特黄视频| 亚洲国产老妈| 欧美中文字幕| 亚洲美女淫视频| 久久精品中文字幕免费mv| 欧美日韩国产电影| 一区二区三区在线免费观看| 亚洲无人区一区| 欧美成人日韩| 欧美一级夜夜爽| 欧美三级日韩三级国产三级| 久久久之久亚州精品露出| 久久精品一区二区三区四区 | 午夜精品久久久久久| 久久亚洲精品视频| 亚洲午夜精品一区二区| 免费日韩av片| 一区二区在线免费观看| 欧美一区二区视频免费观看| 亚洲全部视频| 欧美福利视频在线| 亚洲国产精品一区| 免费在线播放第一区高清av| 亚洲伊人色欲综合网| 欧美日韩精品在线| 日韩亚洲欧美高清| 亚洲激情一区| 欧美福利一区二区| 亚洲国产精品久久久久秋霞蜜臀| 久久久久国产精品人| 亚洲校园激情| 国产精品欧美精品| 午夜激情综合网| 亚洲视频一区在线| 欧美亚韩一区| 一区二区三区四区在线| 亚洲精品乱码| 欧美日韩午夜在线| 亚洲在线播放电影| 正在播放欧美视频| 欧美天堂亚洲电影院在线播放| 亚洲美女在线一区| 99国产精品久久久久久久久久 | 欧美日韩国产在线播放| 亚洲乱码一区二区| 亚洲美女在线视频| 国产精品久久久久久久久久直播| 亚洲一区日本| 亚洲午夜免费视频| 国产精品一二三四区| 亚洲欧美日韩国产中文在线| 一本色道久久99精品综合| 欧美色道久久88综合亚洲精品| 亚洲图片自拍偷拍| 欧美一区免费视频| 亚洲欧洲中文日韩久久av乱码| 欧美1区3d| 欧美日韩91| 久久精品国产一区二区三| 久久久久久久久一区二区| 亚洲破处大片| 宅男噜噜噜66一区二区| 国产在线不卡视频| 91久久精品国产91性色| 国产精品区一区二区三区| 久久男人av资源网站| 久热re这里精品视频在线6| 99视频精品免费观看| 亚洲欧美国产日韩中文字幕| 国产精品一区二区三区观看| 亚洲视频1区| 国模精品一区二区三区| 亚洲福利视频网| 国产精品国产a| 久久久精品一区二区三区| 你懂的视频一区二区| 性感少妇一区| 欧美精品在欧美一区二区少妇| 久久大香伊蕉在人线观看热2| 免费观看久久久4p| 久久成人免费日本黄色| 欧美日本在线播放| 你懂的国产精品| 国产精品捆绑调教| 亚洲欧洲在线免费| 激情综合在线| 亚洲综合日韩| 中日韩美女免费视频网址在线观看 | 欧美视频在线观看 亚洲欧| 久久只有精品| 国产一区二区毛片| 亚洲一区二区三区精品动漫| 亚洲欧洲日韩综合二区| 久久精品国产亚洲高清剧情介绍 | 欧美成人一品| 国产精品一页| 日韩亚洲精品视频| 亚洲精品乱码久久久久久黑人| 欧美一级欧美一级在线播放| 亚洲欧美另类在线观看| 欧美巨乳波霸| 亚洲国产欧美一区| 在线播放不卡| 久久爱91午夜羞羞| 久久久91精品| 国产亚洲精品高潮| 欧美日韩亚洲一区二区| 国内外成人在线视频| 亚洲男女自偷自拍| 午夜精品一区二区三区四区| 国产精品hd| 亚洲无毛电影| 欧美一区二区成人6969| 国产精品视频yy9299一区| 亚洲一级特黄| 久久超碰97中文字幕| 国产香蕉97碰碰久久人人| 欧美在线视频不卡| 葵司免费一区二区三区四区五区| 欧美影院一区| 久久一区二区三区四区| 影音先锋欧美精品| 免费观看一区| 91久久国产综合久久蜜月精品 | 宅男精品导航| 欧美日韩久久不卡| 一区二区三区欧美成人| 香港久久久电影| 欧美一区二区三区喷汁尤物| 黄色成人片子| 老**午夜毛片一区二区三区| 欧美激情视频在线播放 | 欧美国产免费| 亚洲伦理在线免费看| 欧美日本免费| 亚洲在线成人| 在线观看福利一区| 欧美激情视频一区二区三区不卡| 亚洲精品在线一区二区| 午夜精品久久久| 在线观看精品视频| 欧美人与性动交α欧美精品济南到| 夜夜嗨av色综合久久久综合网 | 欧美中文字幕视频| 蜜臀av在线播放一区二区三区| 亚洲欧洲精品一区二区| 国产精品xxx在线观看www| 久久成人免费视频| 亚洲伦理一区| 蜜臀久久久99精品久久久久久| 99精品国产在热久久下载| 国产精品一区毛片| 欧美黄色影院| 欧美在线视频观看免费网站| 亚洲人成在线观看一区二区| 亚洲欧美怡红院| 亚洲黄一区二区三区| 国产女精品视频网站免费| 亚洲精品免费电影| 久久久欧美精品sm网站| 一区二区三区国产精华| 在线成人激情视频| 国产精品免费区二区三区观看| 欧美日韩中文字幕在线视频| 久久精选视频| 亚洲在线成人精品| 亚洲精品无人区| 欧美高清在线| 老司机67194精品线观看| 午夜精品久久| 亚洲一区二区三区久久| 亚洲日本精品国产第一区| 国自产拍偷拍福利精品免费一| 亚洲精品一品区二品区三品区| 久久五月婷婷丁香社区| 亚洲一区二区三区视频播放| 亚洲伦理在线免费看|