UML類圖簡要語法
UML圖形中,使用最多的應該是UML類圖了,瞭解類圖的使用與結構。類:封裝了數據和行爲,具有相同屬性、操作、關係的對象的集合的總稱。
系統分析與設計階段,類分爲:實體類、控制類、邊界類。
- 實體類:對應的是系統需求中的實體對象
- 控制類:對應系統的執行邏輯和業務操作
- 邊界類:對應系統的一些對外接口界面等
1、類圖
在UML中,類使用類名、屬性和操作放置與綫框内表示。Employee
類
public class Employee{
private String name;
private int age;
private String email;
public void modifyInfo(){
...
}
}
説明:類圖中由三部分組成:
- 類名:字符串形式的類名
- 屬性:類的成員變量
權限 名稱:類型 [ = 默認值]
- 方法/函數:類的任意對象的行爲
權限 名稱(參數列表) [ : 返回類型]
其中權限有三種:public、private、protected,對應的符號是+
、-
、#
Java語言中有内部類,也就出現了第四部分
2、類圖之間關係
軟件系統中,類多不是孤立存在的,而存在多重關係
關聯
實綫鏈接
表示關聯關係,Java中可以理解為,一個類中包含了另外一個類的對象,則兩者為關聯關係。public class LoginForm{ private JButton loginButton;//定為成員變量 ... } public class JButton{ ... }
- 雙向關聯
默認情況下,關聯是雙向的,顧客與商品,學生與老師。
public class Customer { private Product[] products; ... } public class Product { private Customer customer; ... }
- 單向關聯
單向關聯則用帶箭頭的實綫表示
- 自關聯
包含自身的關聯模式
- 多重關聯
Multiplicity複雜的關聯關係,用數字對應方式表示
表示方式 多重性説明 1..1 另一類的一個對象,衹與該類的一個對象 0..* 另一類的一個對象,與該類的0個或多個對象有關係 1..* 另一類的一個對象,與該類的一個或多個對象有關係 0..1 另一類的一個對象,沒有或衹與該類的一個對象有關係 m..n 另一類的一個對象,與該類至少m,最多n個對象有關係 示例,一個界面可有多個Button,一個Button衹能屬於一個或者不屬于任何界面。
public class From{ private Button[] buttons;//button的集合 ... } public class Button{ ... }
- 聚合關係
整體與部分的關係,成員可以不必以來整體存在,使用菱形箭頭實綫
public class Car{ private Engine engine; //構造函數 public Car(Engine engine){ this.engine = engine; } //set public void setEngine(Engine engine){ this.engine = engine; } ... } public class Engine{ ... }
- 組合關係
表示整體與部分,但是部分不能脫離整體存在,用實心菱形箭頭實綫表示
public class Head{ private Mouth mouth; public Head(){ mouth = new mouth();//實例化成員類 } ... } public class Mouth { ... }
依賴關係
使用虛綫表示依賴
public class Driver { public void drive(Car car){ car.move(); } ... } public class Car{ public void move(){ ... } ... }
汎化關係
汎化關係也就是繼承關係,使用實綫空心三角箭頭表示
//父类 public class Person { protected String name; protected int age; public void move() { …… } public void say() { …… } } //子类 public class Student extends Person { private String studentNo; public void study() { …… } } //子类 public class Teacher extends Person { private String teacherNo; public void teach() { …… } }
接口實現
接口是沒有屬性的抽象方法的集合,實現使用虛綫空心三角箭頭表示,接口左上角有標志。
public interface Vehicle { public void move(); } public class Ship implements Vehicle { public void move() { …… } } public class Car implements Vehicle { public void move() { …… } }