0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用UML(圖)表示類之間的6種關(guān)系

jf_78858299 ? 來源:技術(shù)工作筆記 ? 作者:HarmonySpring ? 2023-05-05 10:18 ? 次閱讀

java以及其他的面向?qū)ο笤O(shè)計(jì)模式中,類與類之間主要有6種關(guān)系,他們分別是:依賴、關(guān)聯(lián)、聚合、組合、繼承、實(shí)現(xiàn)。他們的耦合度依次增強(qiáng)

1. 依賴(Dependence)

圖片

依賴關(guān)系的定義為:對(duì)于兩個(gè)相對(duì)獨(dú)立的對(duì)象,當(dāng)一個(gè)對(duì)象負(fù)責(zé)構(gòu)造另一個(gè)對(duì)象的實(shí)例,或者依賴另一個(gè)對(duì)象的服務(wù)時(shí),這兩個(gè)對(duì)象之間主要體現(xiàn)為依賴關(guān)系。定義比較晦澀難懂,但在java中的表現(xiàn)還是比較直觀的:類A當(dāng)中使用了類B,其中類B是作為類A的方法參數(shù)、方法中的局部變量、或者靜態(tài)方法調(diào)用。類上面的圖例中:People類依賴于Book類和Food類,Book類和Food類是作為類中方法的參數(shù)形式出現(xiàn)在People類中的。

public class People{   
    //Book作為read方法的形參   
     public void read(Book book){   
        System.out.println(“讀的書是”+book.getName());   
    }   
}

2.關(guān)聯(lián)(Association)圖片圖片圖片

單向關(guān)聯(lián):

圖片

雙向關(guān)聯(lián):

圖片

對(duì)于兩個(gè)相對(duì)獨(dú)立的對(duì)象,當(dāng)一個(gè)對(duì)象的實(shí)例與另一個(gè)對(duì)象的一些特定實(shí)例存在固定的對(duì)應(yīng)關(guān)系時(shí),這兩個(gè)對(duì)象之間為關(guān)聯(lián)關(guān)系。關(guān)聯(lián)關(guān)系分為單向關(guān)聯(lián)和雙向關(guān)聯(lián)。在java中,單向關(guān)聯(lián)表現(xiàn)為:類A當(dāng)中使用了類B,其中類B是作為類A的成員變量。雙向關(guān)聯(lián)表現(xiàn)為:類A當(dāng)中使用了類B作為成員變量;同時(shí)類B中也使用了類A作為成員變量。

public class Son{
   //關(guān)聯(lián)關(guān)系中作為成員變量的類一般會(huì)在類中賦值
    Father father = new Father();
    public void getGift(){
        System.out.println(“從”+father.getName()+”獲得禮物”);
    }
}

public class Father{
    Son son = new Son();
    public void giveGift(){
        System.out.println(“送給”+son.getName()+“禮物”);
    }
}

3.聚合(Aggregation)圖片

圖片

聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,耦合度強(qiáng)于關(guān)聯(lián),他們的代碼表現(xiàn)是相同的,僅僅是在語義上有所區(qū)別:關(guān)聯(lián)關(guān)系的對(duì)象間是相互獨(dú)立的,而聚合關(guān)系的對(duì)象之間存在著包容關(guān)系,他們之間是“整體-個(gè)體”的相互關(guān)系。

public class People{
    Car car;
    House house; 
    //聚合關(guān)系中作為成員變量的類一般使用set方法賦值
     public void setCar(Car car){
        This.car = car;
    }
    public void setHouse(House house){
        This.house = house;
    }

    public void driver(){
        System.out.println(“車的型號(hào):”+car.getType());
    }
    public void sleep(){
        System.out.println(“我在房子里睡覺:”+house.getAddress());
    }
}

4.組合(Composition)圖片

圖片

相比于聚合,組合是一種耦合度更強(qiáng)的關(guān)聯(lián)關(guān)系。存在組合關(guān)系的類表示“整體-部分”的關(guān)聯(lián)關(guān)系,“整體”負(fù)責(zé)“部分”的生命周期,他們之間是共生共死的;并且“部分”單獨(dú)存在時(shí)沒有任何意義。在下圖的例子中,People與Soul、Body之間是組合關(guān)系,當(dāng)人的生命周期開始時(shí),必須同時(shí)有靈魂和肉體;當(dāng)人的生命周期結(jié)束時(shí),靈魂肉體隨之消亡;無論是靈魂還是肉體,都不能單獨(dú)存在,他們必須作為人的組成部分存在。

Public class People{
    Soul soul;
    Body body; 
    //組合關(guān)系中的成員變量一般會(huì)在構(gòu)造方法中賦值
     Public People(Soul soul, Body body){ 
        This.soul = soul;
        This.body = body;
    }

    Public void study(){
        System.out.println(“學(xué)習(xí)要用靈魂”+soul.getName());
    }
    Public void eat(){
        System.out.println(“吃飯用身體:”+body.getName());
    }
}

5.繼承(Generalization)圖片

圖片

繼承表示類與類(或者接口與接口)之間的父子關(guān)系。在java中,用關(guān)鍵字extends表示繼承關(guān)系。UML圖例中,繼承關(guān)系用實(shí)線+空心箭頭表示,箭頭指向父類。

6.實(shí)現(xiàn)(Implementation)圖片

圖片

表示一個(gè)類實(shí)現(xiàn)一個(gè)或多個(gè)接口的方法。接口定義好操作的集合,由實(shí)現(xiàn)類去完成接口的具體操作。在java中使用implements表示。UML圖例中,實(shí)現(xiàn)關(guān)系用虛線+空心箭頭表示,箭頭指向接口.

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    UML詳解

    UML
    電子學(xué)習(xí)
    發(fā)布于 :2023年01月14日 10:12:47

    UML狀態(tài)和Petri網(wǎng)絡(luò)在測(cè)試用例生成的應(yīng)用

    【作者】:陳志德;曾凡平;【來源】:《小型微型計(jì)算機(jī)系統(tǒng)》2010年03期【摘要】:分析和研究UML狀態(tài)、擴(kuò)展?fàn)顟B(tài)機(jī)和Petri網(wǎng)在測(cè)試用例生成的特點(diǎn),提出結(jié)合三者優(yōu)勢(shì)的測(cè)試用例
    發(fā)表于 04-24 09:52

    編寫電視TV,UML和說明

    編寫電視TV,UML和說明如下:注意:(1)電視只有在打開的狀態(tài)下才可以調(diào)音量和設(shè)置新頻道;(2)設(shè)置音量和頻道時(shí),應(yīng)該在規(guī)定的范圍,如音量值為1-7。解題要求:編寫測(cè)試
    發(fā)表于 10-29 06:09

    基于UML的考試管理系統(tǒng)設(shè)計(jì)

    文中著重解決UML在完成各階段任務(wù)中的應(yīng)用、分析設(shè)計(jì)流程等問題,就與時(shí)序兩者設(shè)計(jì)次序進(jìn)行探討。UML有利于各類人員
    發(fā)表于 12-22 17:14 ?35次下載
    基于<b class='flag-5'>UML</b>的考試管理系統(tǒng)設(shè)計(jì)

    時(shí)序關(guān)系

    和時(shí)序是在軟件系統(tǒng)設(shè)計(jì)中直接和程序代碼相關(guān)聯(lián)的,準(zhǔn)確地說,程序代碼是由直接產(chǎn)生,而時(shí)
    發(fā)表于 10-29 11:21 ?6737次閱讀
    時(shí)序<b class='flag-5'>圖</b>和<b class='flag-5'>類</b><b class='flag-5'>圖</b>的<b class='flag-5'>關(guān)系</b>

    UML可向OWL轉(zhuǎn)換原理

    本體語言是OWL,其體系是開放的,它被定義成3 個(gè)表達(dá)能力遞增的子語言O(shè)WL Lite,OWL DL與OWL Full。其中OWL DL 的表達(dá)能力較強(qiáng),推理支持能力也較強(qiáng)。UML 是軟件工程技術(shù)中一標(biāo)準(zhǔn)的建模語言,被廣大的軟件工程技術(shù)人員所接受與使用。如何對(duì)
    發(fā)表于 10-31 16:05 ?4次下載
    <b class='flag-5'>UML</b><b class='flag-5'>類</b>可向OWL<b class='flag-5'>類</b>轉(zhuǎn)換原理

    Uml建模三模型_uml建模的步驟

    描述系統(tǒng)內(nèi)部對(duì)象及其關(guān)系的靜態(tài)結(jié)構(gòu)。模型由構(gòu)建,圖中節(jié)點(diǎn)表示
    的頭像 發(fā)表于 09-25 09:51 ?1.6w次閱讀
    <b class='flag-5'>Uml</b>建模三<b class='flag-5'>種</b>模型_<b class='flag-5'>uml</b>建模的步驟

    UML之間關(guān)系

    UML中描述對(duì)象和之間相互關(guān)系的方式包括:依賴(Dependency),關(guān)聯(lián)(Association),聚合(Aggregation),組合(Composition),泛化(Gene
    的頭像 發(fā)表于 09-25 09:57 ?3801次閱讀
    <b class='flag-5'>UML</b><b class='flag-5'>類</b><b class='flag-5'>圖</b><b class='flag-5'>之間</b>的<b class='flag-5'>關(guān)系</b>

    什么是UML?常見的UML工具有哪些?

    UML是統(tǒng)一建模語言,又稱標(biāo)準(zhǔn)建模語言。是對(duì)軟件設(shè)計(jì)開發(fā)過程可視化建模的一語言。多應(yīng)用在一些軟件系統(tǒng)工程上,有時(shí)在應(yīng)用在機(jī)械系統(tǒng)和業(yè)務(wù)流程上有所應(yīng)用。這種模型通常以圖表方式呈現(xiàn)。 UML
    的頭像 發(fā)表于 06-22 14:10 ?4531次閱讀
    什么是<b class='flag-5'>UML</b><b class='flag-5'>圖</b>?常見的<b class='flag-5'>UML</b><b class='flag-5'>圖</b>工具有哪些?

    UML簡(jiǎn)介與詳解

    本篇介紹了UML的基礎(chǔ)知識(shí),包括26關(guān)系,
    的頭像 發(fā)表于 05-05 09:07 ?3917次閱讀
    <b class='flag-5'>UML</b>簡(jiǎn)介與<b class='flag-5'>類</b><b class='flag-5'>圖</b>詳解

    UML相關(guān)基本知識(shí)介紹

    UML - Unified modeling language UML (統(tǒng)一建模語言),是一用于軟件系統(tǒng)分析和設(shè)計(jì)的語 言工具, 用于幫助軟件開發(fā)人員進(jìn)行思考和記錄思路的結(jié)果。簡(jiǎn)單說,UM
    的頭像 發(fā)表于 05-05 10:22 ?608次閱讀
    <b class='flag-5'>UML</b>相關(guān)基本知識(shí)介紹

    UML學(xué)習(xí)筆記

    表示之間的聯(lián)系,如關(guān)聯(lián)、依賴、聚合等,也包括的屬性和操作,
    的頭像 發(fā)表于 05-05 10:26 ?661次閱讀
    <b class='flag-5'>UML</b><b class='flag-5'>圖</b>學(xué)習(xí)筆記

    UML圖符號(hào)等詳細(xì)介紹

    UML中描述對(duì)象和之間相互關(guān)系的方式包括:依賴(Dependency),關(guān)聯(lián)(Association),聚合(Aggregation),組合(Composition),泛化(Gene
    的頭像 發(fā)表于 05-05 10:41 ?974次閱讀
    <b class='flag-5'>UML</b><b class='flag-5'>類</b>圖符號(hào)等詳細(xì)介紹

    解析UML和時(shí)序

    這里不會(huì)將UML的各種元素都提到,我只想講講圖中各個(gè)之間關(guān)系; 能看懂圖中各個(gè)
    的頭像 發(fā)表于 05-05 11:03 ?629次閱讀
    解析<b class='flag-5'>UML</b><b class='flag-5'>類</b><b class='flag-5'>圖</b>和時(shí)序<b class='flag-5'>圖</b>

    一文帶你讀懂UML

    UML表示法的主要內(nèi)容可由下列五(共9來定義: (1)用例(Use Case
    的頭像 發(fā)表于 05-05 11:19 ?618次閱讀