天天看點

【UML】UML類圖

原文出處:http://www.cnblogs.com/skywang12345/p/3523185.html

概要

本章介紹類圖中類的UML表示方法。内容包括:

類圖介紹

實體類的UML表示

抽象類和接口的UML表示

類圖介紹

類圖,是UML(統一模組化語言)中用于描述"類"以及"類與類"之間的示意圖。它形象的描述出了系統的結構,幫助人們了解系統。

類圖是在"所有的UML圖"中,實用頻率非常之高;掌握它對于我們軟體設計,以及交流都很有幫助。

對于類圖而言,它的基本機關是類。類主要由三部分組成:類名、屬性、操作(函數)。UML類的表示大緻如下:

【UML】UML類圖

下面,分别介紹"實體類", "抽象類", "接口"的UML表示方法。

實體類的UML表示

實體類的UML示例

【UML】UML類圖

對應的java代碼

【UML】UML類圖
public class Student {
    private int id;
    protected int age;
    public String name;

    private void setId(int id);
    private int getId() ;
    protected void setAge(int age);
    protected int getAge() ;
    private void setName(String name);
    private String getName() ;
}      
【UML】UML類圖

1. 類名

類名是類的名稱。 

2. 屬性

UML類圖中,屬性的基本格式:     可見性  名稱: 類型 [=預設值]

【UML】UML類圖
(01) 可見性 -- 表示該屬性對于類外的元素而言是否可見。
     主要包括公有(public)、私有(private)和受保護(protected)三種,在類圖中分别用符号+、-和#表示。

 ┏━━━━━━┳━━━━━━━━━━━━━━━━━━┓
 ┃ 标志  ┃   可見性          ┃
 ┣━━━━━━╇━━━━━━━━━━━━━━━━━━┫
 ┃  +   │   Public         ┃
 ┠──────┼──────────────────┨
 ┃  #   │   Protected      ┃
 ┠──────┼──────────────────┨
 ┃  -   │   Private        ┃
 ┗━━━━━━┷━━━━━━━━━━━━━━━━━━┛
(02) 名稱   -- 表示屬性名。
(03) 類型   -- 表示屬性的資料類型。可以是基本資料類型,也可以是使用者自定義類型。
(04) 預設值 -- 屬性的初始值。它是一個可選項。      
【UML】UML類圖

3. 操作

UML類圖中,屬性的基本格式:   可見性 名稱(參數類表)  [:傳回類型]

【UML】UML類圖
(01) 可見性 -- 表示該屬性對于類外的元素而言是否可見。它的表示方法與"屬性的可見性"相同。
 ┏━━━━━━┳━━━━━━━━━━━━━━━━━━┓
 ┃ 标志 ┃   可見性           ┃
 ┣━━━━━━╇━━━━━━━━━━━━━━━━━━┫
 ┃  +   │   Public         ┃
 ┠──────┼──────────────────┨
 ┃  #   │   Protected      ┃
 ┠──────┼──────────────────┨
 ┃  -   │   Private        ┃
 ┗━━━━━━┷━━━━━━━━━━━━━━━━━━┛
(02) 名稱 -- 表示方法名。
(03) 參數清單 -- 表示方法的參數。參數個數是任意的,多個參數之間用逗号","隔開。
(04) 傳回類型 -- 表示方法的傳回值類型。它是一個可選項;可以是具體的傳回類型,可以是void,也可以無傳回類型(構造方法)。      
【UML】UML類圖

抽象類和接口的UML表示

1. 抽象類的UML表示

抽象類和實體類的UML表示法類似。差別是: "抽象類的類名是斜體",而"實體類的類名不是斜體"!

抽象類的UML示例

将上面"實體類示例"中的實體類Student改為抽象類AbstractStudent,對應的UML圖如下:

【UML】UML類圖

2. 接口的UML表示

在UML中,通過在"類名"位置添加“interface”關鍵字來表示接口。示意圖如下:

【UML】UML類圖

對應的代碼:

public interface Runnable {
    public void run();
}