<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)

    [依賴]

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

    [具體表現]

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

    [現實例子]

    比如說你要去擰螺絲,你是不是要借助(也就是依賴)螺絲刀(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之間為聚集關系。聚合是關聯關系的一種,是較強的關聯關系,強調的是整體部分之間的關系。

    [具體表現]

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

    [關聯與聚合的區(qū)別]

    (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章 統(tǒng)一建模語言UML簡介
    作者寫的很好,偷來了就,希望不會被追究,原始鏈接:http://www.javaeye.com/topic/37302

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


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


    網站導航:
     

    公告

    希望有一天

    我能用鼠標雙擊我的錢包

    然后選中一張100元

    按住“ctrl+c”

    接著不停的“ctrl+v”

    嘻嘻~~~笑醒~~~



    導航

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

    統(tǒng)計

    常用鏈接

    留言簿(6)

    隨筆分類(102)

    隨筆檔案(398)

    文章分類

    文章檔案(10)

    有趣網絡

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久国产亚洲精品麻豆| 久久久无码精品亚洲日韩软件| 97se亚洲综合在线| 免费观看成人久久网免费观看| 亚洲精品乱码久久久久久中文字幕| 免费一级毛片在线播放视频免费观看永久| 国外成人免费高清激情视频| WWW国产亚洲精品久久麻豆| 国产麻豆剧传媒精品国产免费 | 亚洲av无码乱码国产精品| 人妻在线日韩免费视频| 亚洲精品白浆高清久久久久久| a在线观看免费视频| 亚洲电影一区二区三区| 成人免费在线看片| 亚洲一区二区三区成人网站| 日本免费一区二区三区最新vr| 污视频网站免费在线观看| 亚洲国产精品一区二区第四页| 在线免费视频你懂的| 久久青草亚洲AV无码麻豆| 91av免费观看| 亚洲国产精品无码中文lv| 一级毛片直播亚洲| 免费无码一区二区三区蜜桃| 亚洲视频在线观看地址| 成年人性生活免费视频| 色哟哟国产精品免费观看| 亚洲成在人线av| 最近中文字幕无吗免费高清| 四虎影视久久久免费 | 亚洲福利秒拍一区二区| 97无码免费人妻超级碰碰碰碰 | 亚洲国产精品综合久久一线| 国产一二三四区乱码免费| 亚洲午夜电影在线观看高清| 国产无遮挡吃胸膜奶免费看视频 | 91亚洲国产成人久久精品| 国内一级一级毛片a免费| 精品一区二区三区免费观看| 亚洲jjzzjjzz在线观看|