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

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

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

    Loading...

    java .net

    偷來的學習

    類與類之間的關系對于理解面向對象具有很重要的作用,以前在面試的時候也經常被問到這個問題,在這里我就介紹一下。

    類與類之間存在以下關系:

    (1)泛化(Generalization)

    (2)關聯(Association)

    (3)依賴(Dependency)

    (4)聚合(Aggregation)

    UML圖與應用代碼例子:

    1.泛化(Generalization)

    [泛化]

    表示類與類之間的繼承關系,接口與接口之間的繼承關系,或類對接口的實現關系。一般化的關系是從子類指向父類的,與繼承或實現的方法相反。

    [具體表現]

    父類 父類實例=new 子類()

    [UML圖](圖1.1)



    圖1.1 Animal類與Tiger類,Dog類的泛化關系



    [代碼表現]



    1. class Animal{}
    2. class Tiger extends Animal{}
    3. public class Test
    4. {
    5. public void test()
    6. {
    7. Animal a=new Tiger();
    8. }
    9. }


    2.依賴(Dependency)

    [依賴]

    對于兩個相對獨立的對象,當一個對象負責構造另一個對象的實例,或者依賴另一個對象的服務時,這兩個對象之間主要體現為依賴關系。

    [具體表現]

    依賴關系表現在局部變量方法的參數,以及對靜態方法的調用

    [現實例子]

    比如說你要去擰螺絲,你是不是要借助(也就是依賴)螺絲刀(Screwdriver)來幫助你完成擰螺絲(screw)的工作

    [UML表現](圖1.2)



    圖1.2 Person類與Screwdriver類的依賴關系



    [代碼表現]

    1. public class Person{
    2. /** 擰螺絲 */
    3. public void screw(Screwdriver screwdriver){
    4. screwdriver.screw();
    5. }
    6. }


    3.關聯(Association)

    [關聯]

    對于兩個相對獨立的對象,當一個對象的實例與另一個對象的一些特定實例存在固定的對應關系時,這兩個對象之間為關聯關系。

    [具體表現]

    關聯關系是使用實例變量來實現

    [現實例子]

    比如客戶和訂單,每個訂單對應特定的客戶,每個客戶對應一些特定的訂單;再例如公司和員工,每個公司對應一些特定的員工,每個員工對應一特定的公司

    [UML圖] (圖1.3)



    圖1.3 公司和員工的關聯關系




    [代碼表現]
    1. public class Company{
    2. private Employee employee;
    3. public Employee getEmployee(){
    4. return employee;
    5. }
    6. public void setEmployee(Employee employee){
    7. this.employee=employee;
    8. }
    9. //公司運作
    10. public void run(){
    11. employee.startWorking();
    12. }
    13. }
    (4)聚合(Aggregation)

    [聚合]

    當對象A被加入到對象B中,成為對象B的組成部分時,對象B和對象A之間為聚集關系。聚合是關聯關系的一種,是較強的關聯關系,強調的是整體部分之間的關系。

    [具體表現]

    與關聯關系一樣,聚合關系也是通過實例變量來實現這樣關系的。關聯關系和聚合關系來語法上是沒辦法區分的,從語義上才能更好的區分兩者的區別。

    [關聯與聚合的區別]

    (1)關聯關系所涉及的兩個對象是處在同一個層次上的。比如人和自行車就是一種關聯關系,而不是聚合關系,因為人不是由自行車組成的。

    聚合關系涉及的兩個對象處于不平等的層次上,一個代表整體,一個代表部分。比如電腦和它的顯示器、鍵盤、主板以及內存就是聚集關系,因為主板是電腦的組成部分。

    (2)對于具有聚集關系(尤其是強聚集關系)的兩個對象,整體對象會制約它的組成對象的生命周期。部分類的對象不能單獨存在,它的生命周期依賴于整體類的對象的生命周期,當整體消失,部分也就隨之消失。比如張三的電腦被偷了,那么電腦的所有組件也不存在了,除非張三事先把一些電腦的組件(比如硬盤和內存)拆了下來。

    [UML圖](圖1.4)



    圖1.3 電腦和組件的聚合關系



    [代碼表現]
    1. public 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. }




    [參考資料]

    1.《Java與模式》(閻宏 編著) 第2章 統一建模語言UML簡介
    作者寫的很好,偷來了就,希望不會被追究,原始鏈接:http://www.javaeye.com/topic/37302

    posted on 2008-08-26 22:06 閱讀(98) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    公告

    希望有一天

    我能用鼠標雙擊我的錢包

    然后選中一張100元

    按住“ctrl+c”

    接著不停的“ctrl+v”

    嘻嘻~~~笑醒~~~



    導航

    <2008年8月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    統計

    常用鏈接

    留言簿(6)

    隨筆分類(102)

    隨筆檔案(398)

    文章分類

    文章檔案(10)

    有趣網絡

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 精品无码国产污污污免费网站| 波多野结衣免费一区视频| 韩国免费一级成人毛片| 亚洲色图校园春色| 久草视频免费在线观看| 亚洲视频网站在线观看| 国产成人精品免费视频大全麻豆| 亚洲综合一区二区| 亚洲高清中文字幕免费| 亚洲一区精彩视频| 国产免费啪嗒啪嗒视频看看| 国产精品亚洲精品爽爽| 国产成人亚洲综合| 免费的全黄一级录像带| 亚洲国产中文在线视频| 成人免费男女视频网站慢动作| 亚洲成a人无码亚洲成av无码| 免费人成视频x8x8入口| 国产成人无码精品久久久久免费| 亚洲精品无码久久久久去q| 午夜无码A级毛片免费视频| 亚洲国产高清在线精品一区| 午夜视频免费观看| 一级做a爰片性色毛片免费网站 | 免费特级黄毛片在线成人观看 | 亚洲一级毛片免观看| 全免费一级午夜毛片| 久久久精品视频免费观看| 亚洲国产精品久久久久婷婷软件| 91网站免费观看| 猫咪www免费人成网站| 亚洲av永久无码精品国产精品| 国产福利在线观看免费第一福利| 特级毛片aaaa级毛片免费| 亚洲国产婷婷六月丁香| 成人免费大片免费观看网站| 香港一级毛片免费看| 在线免费观看亚洲| 亚洲人成无码网WWW| 国产香蕉免费精品视频| 一级毛片大全免费播放下载 |