国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

powerDesigner繪制類圖

2019-11-09 18:52:39
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

今天玩下PowerDesigner工具玩下怎么畫(huà)類圖,在大型的項(xiàng)目中可能會(huì)有類圖,因?yàn)橛辛怂麄€(gè)項(xiàng)目的類結(jié)構(gòu)更加清晰,或者說(shuō)一個(gè)剛?cè)肼氝M(jìn)入你項(xiàng)目組的成員能更快的了解整個(gè)項(xiàng)目,畫(huà)類圖之前要明白類和類之間有幾種關(guān)系,如果這幾種關(guān)系都不知道,畫(huà)圖就是紙上談兵,常見(jiàn)的類和類之間的關(guān)系有如下幾種關(guān)系:

泛化(Generalization)

實(shí)現(xiàn)(Realization)

關(guān)聯(lián)(Association)

聚合(Aggregation)

組合(Composition)

依賴(Dependency)

現(xiàn)在一一講下上面幾種類之間關(guān)系的概念以及畫(huà)uml類圖結(jié)構(gòu):

泛化(Generalization)

是一種繼承關(guān)系, 表示一般與特殊的關(guān)系, 它指定了子類如何特化父類的所有非PRivate修飾的特征和行為,比如說(shuō)人有男人和女人,男人和女人即有共性的地方也有差異的地方

箭頭指向:帶三角箭頭的實(shí)線,箭頭指向父類

我們看到父類Person中有二個(gè)屬性age和name,還有三個(gè)三個(gè)方法eat(),sleep(),work()方法,二個(gè)子類Man和Woman都繼承了Person父類2個(gè)屬性age,name和二個(gè)方法eat(),sleep(),這些都是二個(gè)子類共有的屬性和父類,但是Man和Woman子類也有各自不同于父類的方法,在PowerDesigner中繼承的圖標(biāo)是這個(gè),如果不知道的話可以使用鼠標(biāo)放在每個(gè)圖標(biāo)上,如果上面有Generalization單詞就表示這是泛化關(guān)系。

實(shí)現(xiàn)(Realization)

實(shí)現(xiàn)和我們java中的實(shí)現(xiàn)是一個(gè)意思,是一種類與接口的關(guān)系, 表示類是接口所有特征和行為的實(shí)現(xiàn)

箭頭指向:帶三角箭頭的虛線,箭頭指向接口

類圖如下:

關(guān)聯(lián)(Association)

是一種擁有的關(guān)系, 它使一個(gè)類知道另一個(gè)類的屬性和方法,這個(gè)概念聽(tīng)起來(lái)感覺(jué)有點(diǎn)蒙,其實(shí)吧,就是一個(gè)對(duì)象A中持有對(duì)象B的引用,這樣對(duì)象B中的屬性和方法是不是A也知道了,就是這個(gè)意思,在實(shí)際的代碼中體現(xiàn)在一個(gè)類上聲明一個(gè)成員變量,類似這個(gè)

箭頭及指向:帶普通箭頭的實(shí)心線,指向被擁有者

package com.power;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {    private Person person;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        person = new Man();    }}上面的activity中聲明了一個(gè)Person類型的成員變量,這就是關(guān)聯(lián),其實(shí)也是一種依賴,類圖如下:

它也可以自關(guān)聯(lián),比如在android中我們也經(jīng)常寫這種代碼:

package com.power;import android.app.application;/** * Created by admin on 2017/2/6. */public class MyApp extends Application {    private static MyApp myApp;    @Override    public void onCreate() {        super.onCreate();        myApp = this;    }}它就是一種自關(guān)聯(lián)的關(guān)系

聚合(Aggregation)

是整體與部分的關(guān)系, 且部分可以離開(kāi)整體而單獨(dú)存在,如車和輪胎是整體和部分的關(guān)系,輪胎離開(kāi)車仍然可以存在

聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是強(qiáng)的關(guān)聯(lián)關(guān)系;關(guān)聯(lián)和聚合在語(yǔ)法上無(wú)法區(qū)分,必須考察具體的邏輯關(guān)系

比如一個(gè)學(xué)校有高中部和初中部,這些學(xué)生加起來(lái)都是屬于這個(gè)學(xué)校的,那么從聚合的概念上講整體就是這個(gè)學(xué)校,部分就是學(xué)生了,且部分可以離開(kāi)整體而單獨(dú)存在,這意思是說(shuō)學(xué)生可以轉(zhuǎn)校去別的學(xué)校,但是這個(gè)學(xué)校還是存在的,不會(huì)因?yàn)橐粋€(gè)學(xué)生轉(zhuǎn)校了找個(gè)學(xué)校就沒(méi)了,

箭頭指向:帶空心菱形的實(shí)心線,菱形指向整體

代碼體現(xiàn):

package com.power;import java.util.List;/** * Created by admin on 2017/2/6. */public class School {    private List<Student> students;}學(xué)生:
package com.power;/** * Created by admin on 2017/2/6. */public class Student {    public int age;    public String name;    public void listener(){    }}類圖如下:

組合(Composition)

是整體與部分的關(guān)系, 但部分不能離開(kāi)整體而單獨(dú)存在. 如公司和部門是整體和部分的關(guān)系, 沒(méi)有公司就不存在部門

組合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強(qiáng)的關(guān)系,它要求普通的聚合關(guān)系中代表整體的對(duì)象負(fù)責(zé)代表部分的對(duì)象的生命周期

代碼體現(xiàn):成員變量

箭頭指向:帶實(shí)心菱形的實(shí)線,菱形指向整體

比如一個(gè)大廈肯定是由很多種材料構(gòu)成的,如果沒(méi)有這些材料,這大廈就不存在了,意思是這個(gè)大廈生命周期over了,

package com.power;/** * Created by admin on 2017/2/6. * 材料 */public class Material {    private int reinforced;//鋼筋 在這就用int類型表示了意思下}House.java
package com.power;import java.util.ArrayList;import java.util.List;/** * Created by admin on 2017/2/6. * 大廈 */public class House {    private List<Material> materials;    public House(){        materials = new ArrayList<>();    }}類圖:

依賴(Dependency)

是一種使用的關(guān)系,  即一個(gè)類的實(shí)現(xiàn)需要另一個(gè)類的協(xié)助,所以要盡量不使用雙向的互相依賴

代碼表現(xiàn):局部變量、方法的參數(shù)或者對(duì)靜態(tài)方法的調(diào)用

箭頭指向:帶箭頭的虛線,指向被使用者
package com.power;/** * Created by admin on 2017/2/6. */public class Student {    public int age;    public String name;    public void listener(){    }    public void notice(){        System.out.print("高三學(xué)生初八開(kāi)始上課");    }}
package com.power;import java.util.List;/** * Created by admin on 2017/2/6. */public class School {    public void notiy(List<Student> students){        if(students!=null&&!students.isEmpty()){            for(Student stu:students){                stu.notice();//學(xué)校通知所有學(xué)生去上課            }        }    }}這個(gè)School類中的notity()方法功能就是通知所有高三的學(xué)生什么時(shí)候開(kāi)始上課,我們看到notiy()方法中的形參是一個(gè)集合,這種就是依賴關(guān)系,即一個(gè)類的實(shí)現(xiàn)需要另一個(gè)類的協(xié)助,也就是說(shuō)School這個(gè)類要實(shí)現(xiàn)notiy()方法必須得依賴Student這個(gè)類,不然沒(méi)辦法實(shí)現(xiàn)!

類圖:

各種關(guān)系的強(qiáng)弱順序:

泛化 >實(shí)現(xiàn)>組合>聚合> 關(guān)聯(lián)> 依賴

最后把這些關(guān)系在java代碼中的體現(xiàn)總結(jié)下:

1) 依賴關(guān)系:關(guān)系對(duì)象出現(xiàn)在局部變量或者方法的參數(shù)里,或者關(guān)系類的靜態(tài)方法被調(diào)用 (2) 關(guān)聯(lián)關(guān)系:關(guān)系對(duì)象出現(xiàn)在實(shí)例變量中 (3) 聚合關(guān)系:關(guān)系對(duì)象出現(xiàn)在實(shí)例變量中 (4) 組合關(guān)系:關(guān)系對(duì)象出現(xiàn)在實(shí)例變量中 (5) 泛化關(guān)系: extends (6) 實(shí)現(xiàn): implements


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新安县| 阳东县| 北碚区| 固原市| 安阳市| 凤城市| 新丰县| 通山县| 克什克腾旗| 云和县| 怀安县| 浙江省| 苍山县| 蒙阴县| 安徽省| 阿荣旗| 枣庄市| 南京市| 资源县| 深圳市| 巫山县| 瓦房店市| 湟中县| 象州县| 个旧市| 巢湖市| 乌鲁木齐县| 施秉县| 泊头市| 阳谷县| 新龙县| 南澳县| 开平市| 临澧县| 南漳县| 盱眙县| 开阳县| 苍山县| 秦安县| 玉林市| 达孜县|