admin管理员组文章数量:1794759
使用语雀绘制 Java 中六大 UML 类图
目录
下载语雀
泛化关系(Generalization)
实现关系(Realization)
关联关系(Association)
依赖关系(Dependency)
聚合关系(Aggregation)
组合关系(Composition)
下载语雀
语雀 - 用语雀,构建你的数字花园 · 语雀
泛化关系(Generalization)继承指的是一个类(子类、子接口)继承另外的一个类(父类、父接口)的功能、并可以为自己增加新功能的能力。在 Java 中继承关系通过关键字 extends 明确标识。就像Java ArrayList 继承了 AbstractList 并拓展了属于自己的功能。
UML图
继承用一条带空心三角箭头的实线表示,从子类(子接口)指向父类(父接口)
@startuml title Generalization class AbstractList class ArrayList AbstractList <|-- ArrayList @enduml 实现关系(Realization)实现指的是一个 class 类实现 interface 接口(可以是多个)的功能,在 Java 中通过关键字 implements 明确标识。就像编程语言是一个泛化的概念,Java与Python就是它的具体落地实现。
public interface ProgrammingLanguage { } class Java implements ProgrammingLanguage { } class Python implements ProgrammingLanguage { }UML图
实现用一条带空心三角箭头的虚线表示
@startuml title Generalization interface ProgrammingLanguage class Java class Python ProgrammingLanguage <|.. Java ProgrammingLanguage <|.. Python @enduml 关联关系(Association)表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。比如学生和学校就是一种关联关系,一个学校可以有很多学生,但是一个学生只属于一个学校,因此这是一种多对一的关系,在运行开始之前就可以确定。
public class School { List<Student> studentList; } class Student { }UML图
在关联的两端可以标注关联双方的角色和多重性标记。
@startuml title Association class School School : StudentList class Student School "1"--"n" Student @enduml 依赖关系(Dependency)和关联关系不同的是,依赖关系是在运行过程中起作用的。
A 类和 B 类是依赖关系主要有三种形式:
- A 类是 B 类中某方法的局部变量;
- A 类是 B 类方法当中的一个参数;
- A 类向 B 类发送消,从而影响 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 的带箭头虚线表示:
@startuml class Bank { +allAccountBalance } class BankCard { -deposit(BigDecimal money) -cashWithdrawal(BigDecimal money) } Bank <.. BankCard @enduml 聚合关系(Aggregation)聚合是关联关系的一种特例,它体现的是整体与部分的关系,即 has-a 的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。例如电脑和鼠标键盘的关系,电脑作为整体,而鼠标键盘作为电脑的非必要组成部分,两者生命周期互不干扰。
public class Computer { } class Mouse { } class Keyboard { }UML图
聚合关系以实线空心菱形表示
@startuml class Computer class Mouse class Keyboard Computer o-- Mouse Computer o-- Keyboard @enduml 组合关系(Composition)和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。比如公司和部门,公司没了部门就不存在了。但是公司和员工之间属于聚合关系,因为公司没了员工还在。
public class Company { } class DepartmentA {} class DepartmentB {} class DepartmentC {}UML图
组合关系用实心菱形表示
@startuml class Company class DepartmentA class DepartmentB class DepartmentC Company *-- DepartmentA Company *-- DepartmentB Company *-- DepartmentC @enduml版权声明:本文标题:使用语雀绘制 Java 中六大 UML 类图 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686533580a78793.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论