憨厚生

          ----Java's Slave----
          ***Java's Host***

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            165 隨筆 :: 17 文章 :: 90 評論 :: 0 Trackbacks

          轉(zhuǎn) http://www.aygfsteel.com/liuwentao253/archive/2008/08/01/219416.html
          一  :


          二 :





          三 :



          四 :



          五 :




          類與類之間的關(guān)系對于理解面向?qū)ο缶哂泻苤匾淖饔茫嬖谝韵玛P(guān)系:
          (1)泛化(Generalization)   :狗與動物  (空箭頭)
          (2)關(guān)聯(lián)(Association)       :公司與員工有特定的某種關(guān)系 (實線)
          (3)依賴(Dependency)    :人依賴螺絲刀 (虛線箭頭)
          (4)聚合(Aggregation)     : 電腦和CPU,主板 (菱形空間頭)







          詳細(xì)展開  :
          一 .泛化(Generalization)
           表示類與類之間的繼承關(guān)系接口與接口之間的繼承關(guān)系或類對接口的實現(xiàn)關(guān)系
           一般泛化的關(guān)系是從子類指向父類的:
           父類 父類實例=new 子類()




          1/**
          2* 一個測試類
          3*/

          4public class Demo{    
          5    public void test() {
          6        //老虎的實例 也屬于動物類型 
          7        Animal animal = new Tiger();  
          8    }
              
          9}
           



          1/**
          2*  動物類
          3*/

          4public class Animal{
          5
          6}
              


          1/**
          2* 老虎類 
          3*/

          4public class Tiger extends Animal{
          5
          6}
            


          二 .依賴(Dependency)

          對于兩個相對獨立的對象,當(dāng)一個對象(螺絲刀)負(fù)責(zé)構(gòu)造另一個對象(人)的實例,或者一個對象(人)依賴另一個對象(螺絲刀)的服務(wù)時,這兩個對象之間主要體現(xiàn)為依賴關(guān)系。

          下面這個例子顯然屬于后者 :人要做一個擰螺絲的動作,他就要依賴于 螺絲刀對象,因為只有螺絲刀對象才提供擰螺絲的服務(wù)。



           1/**
           2 * 說明 :人 這個 類 
           3 */

           4public class Person {
           5    /**
           6     * 人擁有的一個  擰螺絲  的  動作 依賴于螺絲刀這個類
           7     * @param screwdriver :螺絲刀類
           8     */

           9     public void screw(Screwdriver screwdriver)
          10        //螺絲刀類提供了擰螺絲這個服務(wù)
          11        screwdriver.screw();    
          12    }
            
          13}


          三 .關(guān)聯(lián)(Association)
          對于兩個相對獨立的對象,當(dāng)一個對象的實例與另一個對象的一些特定實例存在固定的對應(yīng)關(guān)系時,這兩個對象之間為關(guān)聯(lián)關(guān)系。
          關(guān)聯(lián)關(guān)系是使用實例變量來實現(xiàn)
          比如客戶和訂單,每個訂單對應(yīng)特定的客戶,每個客戶對應(yīng)一些特定的訂單;再例如公司和員工,每個公司對應(yīng)一些特定的員工,每個員工對應(yīng)一特定的公司




           1/**
           2 * 公司
           3 */

           4public class Company{   
           5    //員工
           6    private Employee employee;
           7
           8    /**
           9     * 公司運作
          10      */

          11    public void run(){    
          12        employee.startWorking();    
          13    }

          14    
          15    public Employee getEmployee(){    
          16        return employee;    
          17    }
              
          18    public void setEmployee(Employee employee){    
          19        this.employee=employee;    
          20    }
            
          21}
           

          四 : 聚合(Aggregation)
          當(dāng)對象A被加入到對象B中,成為對象B的組成部分時,對象B和對象A之間為聚集關(guān)系。聚合是關(guān)聯(lián)關(guān)系的一種,是較強的關(guān)聯(lián)關(guān)系,強調(diào)的是整體與部分之間的關(guān)系。
          [關(guān)聯(lián)與聚合的區(qū)別]
          (1)關(guān)聯(lián)關(guān)系所涉及的兩個對象是處在同一個層次上的。比如人和自行車就是一種關(guān)聯(lián)關(guān)系,而不是聚合關(guān)系,因為人不是由自行車組成的。
          聚合關(guān)系涉及的兩個對象處于不平等的層次上,一個代表整體,一個代表部分。比如電腦和它的顯示器、鍵盤、主板以及內(nèi)存就是聚集關(guān)系,因為主板是電腦的組成部分。
          (2)對于具有聚集關(guān)系(尤其是強聚集關(guān)系)的兩個對象,整體對象會制約它的組成對象的生命周期。部分類的對象不能單獨存在,它的生命周期依賴于整體類的對象的生命周期,當(dāng)整體消失,部分也就隨之消失。比如張三的電腦被偷了,那么電腦的所有組件也不存在了,除非張三事先把一些電腦的組件(比如硬盤和內(nèi)存)拆了下來。



           1public class Computer{    
           2    private CPU cpu;    
           3    public CPU getCPU(){    
           4        return cpu;    
           5    }
              
           6    public void setCPU(CPU cpu){    
           7        this.cpu=cpu;    
           8    }
              
           9    //開啟電腦    
          10    public void start(){    
          11        //cpu運作    
          12        cpu.run();    
          13    }
              
          14}
            
          posted on 2009-03-10 17:55 二胡 閱讀(192) 評論(0)  編輯  收藏 所屬分類: 設(shè)計相關(guān)
          主站蜘蛛池模板: 土默特右旗| 淮南市| 普安县| 全南县| 岑巩县| 资溪县| 凤冈县| 佛学| 建湖县| 麟游县| 南陵县| 丰顺县| 贵港市| 琼海市| 慈溪市| 余姚市| 彭泽县| 靖安县| 分宜县| 尚志市| 天祝| 镇雄县| 奉新县| 无极县| 镇宁| 惠来县| 上饶县| 昌平区| 洪湖市| 印江| 福安市| 绥棱县| 云南省| 扎赉特旗| 阳西县| 鹿泉市| 淮北市| 昌邑市| 柘城县| 武宣县| 博白县|