使用语雀绘制 Java 中六大 UML 类图

目录
下载语雀
泛化关系()
实现关系()
关联关系()
依赖关系()
聚合关系()
组合关系()
下载语雀
【使用语雀绘制 Java 中六大 UML 类图】语雀 - 用语雀 , 构建你的数字花园 · 语雀
泛化关系()
继承指的是一个类(子类、子接口)继承另外的一个类(父类、父接口)的功能、并可以为自己增加新功能的能力 。在 Java 中继承关系通过关键字 明确标识 。就像 继承了并拓展了属于自己的功能 。
UML图
继承用一条带空心三角箭头的实线表示 , 从子类(子接口)指向父类(父接口)
@startumltitle Generalizationclass AbstractListclass ArrayListAbstractList <|-- ArrayList@enduml
实现关系()
实现指的是一个 class 类实现接口(可以是多个)的功能 , 在 Java 中通过关键字明确标识 。就像编程语言是一个泛化的概念 , Java与就是它的具体落地实现 。
public interface ProgrammingLanguage {}class Java implements ProgrammingLanguage {}class Python implements ProgrammingLanguage {}
UML图
实现用一条带空心三角箭头的虚线表示
@startumltitle Generalizationinterface ProgrammingLanguageclass Javaclass PythonProgrammingLanguage <|.. JavaProgrammingLanguage <|.. Python@enduml
关联关系()
表示不同类对象之间有关联 , 这是一种静态关系 , 与运行过程的状态无关 , 在最开始就可以确定 。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示 。比如学生和学校就是一种关联关系 , 一个学校可以有很多学生 , 但是一个学生只属于一个学校 , 因此这是一种多对一的关系 , 在运行开始之前就可以确定 。
public class School {List studentList;}class Student {}
UML图
在关联的两端可以标注关联双方的角色和多重性标记 。
@startumltitle Associationclass SchoolSchool : StudentListclass StudentSchool "1"--"n" Student@enduml
依赖关系()
和关联关系不同的是 , 依赖关系是在运行过程中起作用的 。
A 类和 B 类是依赖关系主要有三种形式:
例如个人银行卡的存款与提现会影响银行的总账户余额
public class Bank {public static volatile BigDecimal allAccountBalance = new BigDecimal("1000000000");public static void setAllAccountBalance(BigDecimal allAccountBalance) {Bank.allAccountBalance = allAccountBalance;}}class BankCard {void deposit(BigDecimal money){Bank.setAllAccountBalance(Bank.allAccountBalance.add(money));}void cashWithdrawal(BigDecimal money){Bank.setAllAccountBalance(Bank.allAccountBalance.subtract(money));}}
UML图
依赖关系用由类 A 指向类 B 的带箭头虚线表示:
@startumlclass Bank {+allAccountBalance}class BankCard {-deposit(BigDecimal money)-cashWithdrawal(BigDecimal money)}Bank <.. BankCard@enduml
聚合关系()
聚合是关联关系的一种特例 , 它体现的是整体与部分的关系 , 即 has-a 的关系 。此时整体与部分之间是可分离的 , 它们可以具有各自的生命周期 , 部分可以属于多个整体对象 , 也可以为多个整体对象共享 。例如电脑和鼠标键盘的关系 , 电脑作为整体 , 而鼠标键盘作为电脑的非必要组成部分 , 两者生命周期互不干扰 。