<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    依賴--關聯

     

    依賴是比關聯弱的關系,關聯代表一種結構化的關系,體現在生成的代碼中,以java為例:  
     
    若類A單向關聯指向類B,則在類A中存在一個屬性B   b  
     
    若類A依賴類B,則不會有這個屬性,類B的實例可能存在于某個方法調用的參數中,或某個方法的局部變量中。

    關聯會對關系的類增加屬性  
     
    依賴則并不對關系的類增加屬性 

    從業務角度來講:關聯表示的是擁有關系(根據擁有的程度又可分為一般關聯,聚合,合成),依賴表示的是涉及關系。如汽車跟輪子,車身的關系是關聯,但跟汽油、公路的關系就是依賴。  
     

    關聯關系就是兩個類誰都知道誰,可以相互通信,也就是說只要存在相互通信的連接,就是關聯。關聯關系分為7類:普通、遞歸、限定、或、有序、三元、聚合關聯。如人類和計算機類,使用就是他們的關聯。  
     
    依賴:類A是獨立的,若類A的改變將導致類B的改變,則說明類B依賴于類A,他們是依賴關系。

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

    1.依賴關系的特征


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



    1-39 Bicycle類與Pump類的依賴關系

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

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


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

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

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

    1-40 主人和自行車的關聯關系


    Person
    類與Bicycle類之間存在關聯關系,這意味著在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();
    }
    }


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

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

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

    posted on 2007-04-02 14:03 leoli 閱讀(263) 評論(0)  編輯  收藏 所屬分類: java

    導航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案(17)

    文章分類(86)

    收藏夾(3)

    flex blog

    good site

    java blog

    my friend

    tools

    抓蝦

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品亚洲人成在线观看| 国产免费人视频在线观看免费 | 亚洲一区二区三区免费视频| 国产午夜无码精品免费看动漫| 久久伊人亚洲AV无码网站| 成人a毛片免费视频观看| 亚洲成A∨人片天堂网无码| 亚洲1区2区3区精华液| 超pen个人视频国产免费观看| 亚洲人成网站免费播放| 国产卡一卡二卡三免费入口| 亚洲综合av一区二区三区| 天天天欲色欲色WWW免费| 亚洲国产成人久久精品软件 | 亚洲xxxx18| 天堂在线免费观看中文版| 美女免费精品高清毛片在线视| 免费国产成人午夜私人影视| 男人j进女人p免费视频| 亚洲日本一区二区三区在线| 午夜爽爽爽男女免费观看影院| 亚洲导航深夜福利| 日韩电影免费在线观看视频| 免费的黄色的网站| 亚洲AV永久无码区成人网站| 最近中文字幕免费2019| 国产亚洲中文日本不卡二区| 免费永久在线观看黄网站| 在线看片免费人成视频福利| 亚洲人成人77777在线播放| 国产嫩草影院精品免费网址| 好吊色永久免费视频大全| 亚洲AV人无码综合在线观看| 歪歪漫画在线观看官网免费阅读 | 野花香高清视频在线观看免费| 亚洲黄色在线视频| 国产乱子伦片免费观看中字| 在线看片免费人成视频福利| 亚洲中文字幕无码久久| 伊人久久大香线蕉亚洲| 一个人免费观看视频www|