成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

UML 類(lèi)圖真的很重要,十分鐘帶你掌握!

開(kāi)發(fā)
在本文中,我們將探討 UML 類(lèi)圖的構(gòu)建塊、如何表示它們、不同類(lèi)型的類(lèi)關(guān)系,并為每種表示形式提供真實(shí)世界的示例。

在日常開(kāi)發(fā)中,我們經(jīng)常會(huì)通過(guò) UML 圖形化的方式,幫助開(kāi)發(fā)人員和業(yè)務(wù)分析師進(jìn)行需求分析、系統(tǒng)設(shè)計(jì)和文檔編制,這篇文章,我們將來(lái)重點(diǎn)分析 UML 類(lèi)圖。

什么是UML?

UML,Unified Modeling Language 統(tǒng)一建模語(yǔ)言,它是可視化軟件系統(tǒng)設(shè)計(jì)的標(biāo)準(zhǔn)方法,UML 是一種經(jīng)典的建模語(yǔ)言,包含了系統(tǒng)論、工程思想,以及架構(gòu)學(xué)的元素。

UML 包含多種圖表,用于表示系統(tǒng)的不同方面,以下是主要的 UML 圖表類(lèi)型:

  • 用例圖(Use Case Diagram):描述系統(tǒng)功能及其與外部實(shí)體(如用戶或其他系統(tǒng))的交互。
  • 類(lèi)圖(Class Diagram):描述系統(tǒng)的靜態(tài)結(jié)構(gòu),包括類(lèi)、屬性、方法及類(lèi)之間的關(guān)系。
  • 對(duì)象圖(Object Diagram):展示特定時(shí)刻系統(tǒng)中對(duì)象的實(shí)例及其關(guān)系,通常是類(lèi)圖的實(shí)例化。
  • 順序圖(Sequence Diagram):顯示對(duì)象之間按時(shí)間順序進(jìn)行的交互,強(qiáng)調(diào)消息的發(fā)送和接收。
  • 通信圖(Communication Diagram):又稱(chēng)協(xié)作圖,展示對(duì)象之間的交互,強(qiáng)調(diào)對(duì)象之間的連接和消息流。
  • 狀態(tài)圖(State Diagram):描述對(duì)象在其生命周期中所經(jīng)歷的狀態(tài)變化及狀態(tài)之間的轉(zhuǎn)移。
  • 活動(dòng)圖(Activity Diagram):描述系統(tǒng)中的活動(dòng)流程,強(qiáng)調(diào)并行和分支控制流。
  • 組件圖(Component Diagram):描述系統(tǒng)的物理組件及其相互關(guān)系,通常用于顯示代碼結(jié)構(gòu)。
  • 部署圖(Deployment Diagram):描述系統(tǒng)的物理部署架構(gòu),包括硬件節(jié)點(diǎn)及其之間的通信關(guān)系。
  • 包圖(Package Diagram):組織類(lèi)和其他模型元素,展示系統(tǒng)的包及其依賴關(guān)系。
  • 定時(shí)圖(Timing Diagram):描述對(duì)象狀態(tài)或條件隨時(shí)間變化的圖表,常用于實(shí)時(shí)系統(tǒng)建模。

什么是 UML 類(lèi)圖?

UML Class Diagram(UML 類(lèi)圖),它是 UML 中使用最廣泛的一種,提供了面向?qū)ο笙到y(tǒng)的靜態(tài)視圖,展示了它的類(lèi)、屬性、方法以及對(duì)象之間的關(guān)系。

在本文中,我們將探討 UML 類(lèi)圖的構(gòu)建塊、如何表示它們、不同類(lèi)型的類(lèi)關(guān)系,并為每種表示形式提供真實(shí)世界的示例。

UML 類(lèi)圖的組成

UML 類(lèi)圖由以下構(gòu)建基塊組成:

  • Class(類(lèi))
  • Attributes(屬性)
  • Methods(方法)
  • Interfaces(接口)
  • Abstract Class(抽象類(lèi))
  • Enumeration(枚舉)

1.Class

類(lèi)是定義對(duì)象的屬性和行為的藍(lán)圖或模板。

如下示例,有一個(gè) BankAccount 類(lèi)以及用 UML 類(lèi)圖表示方式:

public class BankAccount {

    private String accountNumber;
    protected double balance;
    
    public void deposit(double amount) {
        this.balance = amount;
    }

    public void withdraw(double amount) {
        balance += amount;
    }

    private void updateBalance(double amount) {
        balance += amount;
    }

    String getAccountInfo() {
        return accountNumber;
    }
}

類(lèi)表示為矩形,分為三個(gè)區(qū)間:

  • 頂部:表示類(lèi)的名稱(chēng),類(lèi)的唯一標(biāo)識(shí)符(例如,BankAccount);
  • 中間:表示與類(lèi)關(guān)聯(lián)的屬性或數(shù)據(jù)(例如,accountNumber、balance);
  • 底部:表示類(lèi)對(duì)象可以執(zhí)行的方法(例如,deposit()、updateBalance());

可見(jiàn)性標(biāo)記:可見(jiàn)性標(biāo)記指示類(lèi)中屬性和方法的可訪問(wèn)權(quán)限,可見(jiàn)性通常有以下 4種:

  • + (Public):可以從任何類(lèi)訪問(wèn)屬性或方法。
  • - (Private):屬性或方法只能在同一類(lèi)中訪問(wèn)。
  • # (Protected):屬性或方法在同一類(lèi)及其子類(lèi)中是可訪問(wèn)的。
  • ~(Package):屬性或方法在同一包中是可訪問(wèn)的。

2.Attributes

UML 類(lèi)圖中的屬性表示類(lèi)的屬性或數(shù)據(jù)字段。

屬性的定義通常為下面的形式:

- username : String
  • -:代表屬性的訪問(wèn)權(quán)限。
  • username:代表屬性的名稱(chēng)。
  • String:代表屬性的數(shù)據(jù)類(lèi)型。

如下示例,有一個(gè) Person類(lèi),以及用 UML 類(lèi)圖表示方式:

public class Person {
    private String name;
    protected int age;
    public String email;
    String phoneNumber = "187xxxx1234";
}

2.Methods

UML 類(lèi)圖中的方法(或操作)表示類(lèi)可以執(zhí)行的功能或行為。

屬性的定義通常為下面的形式:

+ sum(int a, int b): int
  • +,代表屬性的訪問(wèn)權(quán)限;
  • sum:代表方法的名稱(chēng);
  • (int a, int b),代表參數(shù)列表,以逗號(hào)分隔的參數(shù)列表,每個(gè)參數(shù)都指定為名稱(chēng)和類(lèi)型;
  • int,代表方法返回的數(shù)據(jù)類(lèi)型。

如下示例,展示一個(gè) Person類(lèi)中 4種訪問(wèn)權(quán)限的方法:

3.Interfaces

接口被描述為一個(gè)類(lèi)矩形,接口名稱(chēng)上方帶有關(guān)鍵字 ?interface?,接口中的方法大部分上是抽象的,但是也有一些 default 方法。

如下示例,定義了一個(gè) Drawable 接口,以及用 UML 類(lèi)圖表示的方式:

public interface Drawable {

    public void draw();
    private void erase(){ }
}

4.Abstract Class

抽象類(lèi)是無(wú)法實(shí)例化的類(lèi),在 UML 中的抽象類(lèi)用斜體表示類(lèi)名,在類(lèi)名上方用關(guān)鍵字 《abstract》表示。類(lèi)中的抽象方法通常也以斜體顯示。

如下示例,定義了一個(gè) Shape 抽象類(lèi),以及用 UML 類(lèi)圖表示的方式:

public abstract class Shape {

    public double area;
    public abstract double getArea();
}

5.Enumeration

枚舉是一種數(shù)據(jù)類(lèi)型,用于定義一組命名值(例如,顏色、星期、月份等)。在 UML 類(lèi)圖中,在枚舉名稱(chēng)上方用關(guān)鍵字 ?enumeration? 表示,枚舉的值列在類(lèi)框中。

如下示例,定義了一個(gè) Color 枚舉,以及用 UML 類(lèi)圖表示的方式:

public enum Color {
    RED, GREEN, BLUE
}

UML 類(lèi)圖中的關(guān)系

在 UML 類(lèi)圖中,類(lèi)之間的關(guān)系主要有以下 6種類(lèi)型:

  • Association(關(guān)聯(lián))
  • Aggregation(聚合)
  • Composition(組合)
  • Inheritance(繼承)
  • Implementation(實(shí)現(xiàn))
  • Dependency(依賴)

這六種關(guān)系的箭頭如下所示:

1.Association

Association(關(guān)聯(lián)),表示兩個(gè)類(lèi)之間的 uses-a 關(guān)系,其中一個(gè)類(lèi)使用另一個(gè)類(lèi)或與另一個(gè)類(lèi)交互。

如下示例:學(xué)生班級(jí)與課程班級(jí)相關(guān)聯(lián),因?yàn)閷W(xué)生可以注冊(cè)多個(gè)課程。

2.Aggregation

Aggregation(聚合),表示 has-a關(guān)系, 一個(gè)類(lèi)(整體)包含另一個(gè)類(lèi)(部分),但包含的類(lèi)可以獨(dú)立存在。

如下示例:Car 類(lèi)具有 Engine 類(lèi),但 Engine 類(lèi)可以在沒(méi)有 Car 類(lèi)的情況下存在。

3.Composition

Composition(組成),代表了一種強(qiáng)烈的 has-a  關(guān)系,在這種關(guān)系中,沒(méi)有整體,部分就無(wú)法存在。如果整體被破壞,部分也被破壞。

如下示例:House 類(lèi)由 Room 類(lèi)組成,但 Room 類(lèi)不能沒(méi)有 House 類(lèi)而存在。

4.Inheritance

Inheritance(繼承或泛化),表示一種 is-a 關(guān)系,其中一個(gè)類(lèi)(子類(lèi))繼承另一個(gè)類(lèi)(超類(lèi))的屬性和方法。

如下示例:Dog 類(lèi)和 Cat 類(lèi)繼承自 Animal 類(lèi),因?yàn)楣泛拓埗际莿?dòng)物。

5.Implementation

Implementation(實(shí)現(xiàn)),表示類(lèi)和接口之間的關(guān)系,其中類(lèi)實(shí)現(xiàn)接口中聲明的方法。

示例:Rectangle 類(lèi)和 Circle 類(lèi)實(shí)現(xiàn)了 Shape 接口,該接口聲明了 getArea() 方法。

6.Dependency

Dependency(依賴),代表一種 uses 關(guān)系,其中一個(gè)類(lèi)別的變化可能會(huì)影響另一個(gè)類(lèi)別。

如下示例:Customer 類(lèi)使用 Order 類(lèi)下訂單。

最后,我們?cè)賹?duì)上面幾種關(guān)系給出一個(gè)全面的示例:

總結(jié)

UML 類(lèi)圖是軟件工作中很重要的一個(gè)知識(shí)點(diǎn),作為程序員,我們一定要掌握,最后對(duì) UML 類(lèi)圖做個(gè)總結(jié):

UML 類(lèi)圖由以下構(gòu)建基塊組成:

  • Class(類(lèi))
  • Attributes(屬性)
  • Methods(方法)
  • Interfaces(接口)
  • Abstract Class(抽象類(lèi))
  • Enumeration(枚舉)

類(lèi)之間的關(guān)系主要有以下 6種類(lèi)型:

  • Association(關(guān)聯(lián))
  • Aggregation(聚合)
  • Composition(組合)
  • Inheritance(繼承)
  • Implementation(實(shí)現(xiàn))
  • Dependency(依賴)
責(zé)任編輯:趙寧寧 來(lái)源: 猿java
相關(guān)推薦

2024-10-25 15:56:20

2022-06-16 07:31:41

Web組件封裝HTML 標(biāo)簽

2022-08-26 09:01:07

CSSFlex 布局

2024-11-07 16:09:53

2025-01-07 12:00:00

RedisPipelineJava

2024-07-02 11:22:35

2024-08-30 10:51:51

2024-12-13 15:29:57

SpringSpringBeanJava

2020-12-17 06:48:21

SQLkafkaMySQL

2024-07-12 09:00:00

2019-04-01 14:59:56

負(fù)載均衡服務(wù)器網(wǎng)絡(luò)

2023-09-26 22:12:13

數(shù)據(jù)倉(cāng)庫(kù)Doris

2020-09-27 14:41:37

C語(yǔ)言編程語(yǔ)言計(jì)算機(jī)

2023-10-07 00:06:09

SQL數(shù)據(jù)庫(kù)

2020-12-09 16:41:22

LinuxIT開(kāi)發(fā)

2024-06-19 09:58:29

2021-09-07 09:40:20

Spark大數(shù)據(jù)引擎

2023-04-12 11:18:51

甘特圖前端

2023-08-15 15:50:42

2023-10-11 08:18:55

DjangoPython
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩欧美理论片 | 免费观看一区二区三区毛片 | 成人在线免费观看 | 夜夜久久 | a久久久久久 | 国产精品久久久久久久久久妇女 | 中文在线一区二区 | 中文字幕一区二区三区不卡 | 亚洲精品一区中文字幕乱码 | 日韩精品亚洲专区在线观看 | www.日本在线 | 国产成人一区二区三区久久久 | 久久国产精品99久久久久 | 久久国产精品久久久久久 | 天堂网avav| 亚洲第一网站 | 午夜精品久久久久久久久久久久久 | 国产欧美一级二级三级在线视频 | 欧美成年人网站 | 欧美一区在线视频 | 欧美在线亚洲 | 91国产精品 | 国产精品久久久久久久久久久久 | 草久久 | 日韩视频免费看 | 日韩视频二区 | 电影午夜精品一区二区三区 | 成人免费在线观看 | 成人在线网 | 日韩在线精品 | 特级毛片 | 日韩成人免费视频 | 狠狠操电影| 2018天天干天天操 | 有码在线| 午夜精品久久久久久久久久久久久 | 视频1区 | 亚洲香蕉| 欧美lesbianxxxxhd视频社区 | 97伦理| 国产一区二区三区四区五区加勒比 |