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

目录

下载语雀

泛化关系(Generalization)

实现关系(Realization)

关联关系(Association)

依赖关系(Dependency)

聚合关系(Aggregation)

组合关系(Composition)


下载语雀

语雀 - 用语雀,构建你的数字花园 · 语雀

泛化关系(Generalization)

继承指的是一个类(子类、子接口)继承另外的一个类(父类、父接口)的功能、并可以为自己增加新功能的能力。在 Java 中继承关系通过关键字 extends 明确标识。就像Java ArrayList 继承了 AbstractList 并拓展了属于自己的功能。

 UML图

继承用一条带空心三角箭头的实线表示,从子类(子接口)指向父类(父接口)

@startumltitle Generalization
class AbstractList
class ArrayListAbstractList <|-- ArrayList@enduml

实现关系(Realization)

实现指的是一个 class 类实现 interface 接口(可以是多个)的功能,在 Java 中通过关键字 implements 明确标识。就像编程语言是一个泛化的概念,Java与Python就是它的具体落地实现。

public interface ProgrammingLanguage {
}class Java implements ProgrammingLanguage {
}class Python implements ProgrammingLanguage {
}

UML图 

实现用一条带空心三角箭头的虚线表示

@startumltitle Generalization
interface ProgrammingLanguage
class Java
class PythonProgrammingLanguage <|.. Java
ProgrammingLanguage <|.. Python@enduml

关联关系(Association)

表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。比如学生和学校就是一种关联关系,一个学校可以有很多学生,但是一个学生只属于一个学校,因此这是一种多对一的关系,在运行开始之前就可以确定。

public class School {List<Student> studentList;
}class Student {
}

UML图

在关联的两端可以标注关联双方的角色和多重性标记。

@startumltitle Associationclass School
School : StudentListclass StudentSchool "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 的带箭头虚线表示:

@startumlclass Bank {+allAccountBalance
}class BankCard {-deposit(BigDecimal money)-cashWithdrawal(BigDecimal money)
}Bank <.. BankCard@enduml

聚合关系(Aggregation)

聚合是关联关系的一种特例,它体现的是整体与部分的关系,即 has-a 的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。例如电脑和鼠标键盘的关系,电脑作为整体,而鼠标键盘作为电脑的非必要组成部分,两者生命周期互不干扰。

public class Computer {
}class Mouse {
}class Keyboard {
}

UML图

聚合关系以实线空心菱形表示

@startumlclass Computer
class Mouse
class KeyboardComputer o-- Mouse
Computer o-- Keyboard@enduml

组合关系(Composition)

和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。比如公司和部门,公司没了部门就不存在了。但是公司和员工之间属于聚合关系,因为公司没了员工还在。

public class Company {
}class DepartmentA {}
class DepartmentB {}
class DepartmentC {}

UML图

组合关系用实心菱形表示

@startumlclass Company
class DepartmentA
class DepartmentB
class DepartmentCCompany *-- DepartmentA
Company *-- DepartmentB
Company *-- DepartmentC@enduml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26556.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[精华] UML (统一建模语言) 各种图总结

UML&#xff08;Unified Modeling Language&#xff09;是一种统一建模语言&#xff0c;为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。下面将对UML的九种图包图的基本概念进行介绍以及各个图的使用场景。 一、基本概念   如下图所示&#xff0c;UML…

迅速掌握统一建模语言UML图

统一建模语言 是非专利的第三代建模和规约语言。UML是一种开放的方法&#xff0c;用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践&#xff0c;这些最佳实践在对大规模&#xff0c;复杂系统进行建模方面&…

UML建模三个工具: StarUML ,Telelogic TAU 和 Rose

UML建模软件目前用的主要有3种&#xff1a; 商业版本&#xff1a;Telelogic TAU 和 Rational Rose 开源版本&#xff1a;StarUML Telelogic TAU与Rational Rose的功能很强&#xff0c;但是需要买License。 StarUML就是希望能提供和TAU/Rose一样功能的开源版本。 目前使用起来…

统一建模语言UML(5)活动图

与其他图的区别 活动图与传统的流程图十分相似&#xff0c;活动图与流程图的最主要的区别在于&#xff0c;活动图能够支持活动的并行行为。 交互图和活动图都是用来对系统动态方面进行建模&#xff0c;区别&#xff1a; 交互图的节点是对象&#xff0c;描述了对象之间通过消息…

一、设计模式 - UML (统一建模语言) - 类图

文章目录 前言UML 类图1. 类图的自身结构2. 关联关系2.1. 自关联2.2. 单向关联2.3. 双向关联 3. 聚合关系4. 组合关系5. 依赖关系6. 继承关系7. 实现关系 前言 统一建模语言&#xff08;Unified Modeling Language&#xff0c;UML&#xff09;是用来设计软件的可视化建模语言&a…

redux在react中的应用,使用antdDesign完成购物车

目录 一.redux的认识 二.什么时候使用redux 三.安装redux 四.redux的使用 1.创建store 2.创建reducer 3.创建action 4.在页面中引入store (1)在商品列表页引入store (2)在购物车页面引入store 五.运行效果图 一.redux的认识 redux 和react没有什么直接的关系&#x…

小黑跟老黑们夜骑车拍完了毕业照面试了两场的leetcode之旅:793. 阶乘函数后 K 个零

小黑代码 class Solution:def preimageSizeFZF(self, k: int) -> int:# 获取n的阶乘的0个数lru_cachedef get_zero(n):if not n:return 0return (n//5) get_zero(n//5)# 二分查找def bin_search(k):# 定义左右指针left 0right int(1e10)while left < right:mid (lef…

python基础 | Pandas基础

文章目录 &#x1f4da;基本数据结构&#x1f407;Series&#xff1a;存储一维&#x1f407;DataFrame:存储二维&#x1f407;Series和DataFrame的关系 &#x1f4da;常用基本函数&#x1f407;数据基本操作&#x1f955;列的查改增删&#x1f440;查看列&#x1f440;修改列&a…

Python面向对象二(第十二讲)

文章目录 知识点1.私有属性与私有方法1.私有属性2.私有方法 2.成员3.实例属性1.类属性(静态属性)2.属性总结 4.实例方法5.类方法6.静态方法7.封装介绍8.继承(重点)9.新式类与经典类练习 10.单继承1.super()练习 11.作业 知识点 私有属性与私有方法成员属性方法封装继承多态 1…

常用设计模式系列(十)—装饰者模式

第一节 前言 各位好&#xff0c;首先我要先恭喜下自己粉丝即将破百&#xff0c;也谢谢各位的捧场&#xff0c;不过也跟我自己的努力密不可分&#xff0c;我也要继续加油&#xff0c;输出更好的文章来回报大家&#xff0c;也希望大家多提建议&#xff0c;有问题我也会及时改进。…

摆摊计划1(万一以后找不到工作)

货源&#xff1a;阿里巴巴正规平台 卖炸串 硬件&#xff1a; 多功能烤肠机 购买链接&#xff1a;脆皮烤肠机燃煤气商用油炸锅商用摆摊热狗机肠机关东煮组合机批发 (1688.com) 成本&#xff1a;379.6元 食材&#xff1a; 淀粉肠&#xff08;100支试水&#xff09;&#xff…

TCP/IP协议

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录 TCP/IP协议应用层协议自定义应用层协议DNS 传输层协议端口号UDP协议UDP协议端格式 TCP协议TCP协议段格式TCP工作机制确认应答…

基于HTML+CSS+JavaScript制作美食文化网站 ——卡通创意的烧烤(5个页面) html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计

&#x1f468;‍&#x1f393;静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计&#x1f469;‍&#x1f393;,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等&#xff0c;用的最多的还是DW&#xff0c;当然不同软件写出的…

c语言-喝饮料问题

/* 喝饮料问题&#xff1a; 1瓶饮料1元&#xff0c;2个空瓶可以换一瓶饮料&#xff0c;给20元&#xff0c;可以喝多少饮料 */#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>int main() {int man 0, kong 0, sum 0;man 20; //一开始可以买的饮料数sum 0; /…

如何完美吃下二叉树?——二叉树练习题

文章目录 开胃前菜 基础概念选择题主菜 二叉树oj题1.单值二叉树题目思路1代码思路2代码递归展开图 2. 检查两颗树是否相同题目代码 3. 对称二叉树题目思路代码 4. 二叉树的前序遍历题目代码 5. 另一颗树的子树思路代码 6.二叉树遍历题目代码 7.二叉树的层序遍历准备环节代码实现…

动物园游记

这是学习笔记的第 1887 篇文章 今天本来打算去科技馆&#xff0c;结果发现就今天闭馆&#xff0c;真是不巧&#xff0c;于是改换了方向去了北京动物园。 早两年说动物园&#xff0c;基本都和服装批发能联系起来&#xff0c;我是纯粹的去看动物的。确切的说是陪孩子去看动物的。…

【Java核心技术卷】I/O详析

文章目录 概述Java io基本概念关于流流的分类 Java io框架一、以字节为单位的输出流的框架图&#xff08;1&#xff09;框架图图示&#xff08;2&#xff09;OutputStream详解&#xff08;3&#xff09;OutputStream子类&#xff08;4&#xff09;引申&#xff1a;打印流 二、以…

深圳-上海-呼伦贝尔-漠河-哈尔滨环行手记

C语言的精髓是指针&#xff0c;这是手艺人的小幸运&#xff0c;但这是程序员的悲哀。 今年&#xff08;2018年春节前&#xff09;的假期比较特殊&#xff0c;我这一出去就是20多天&#xff0c;请了十来天的年假…1月27号就出发离开深圳了&#xff0c;考虑到1月25号和1月26号两天…

魔幻的2020,对我来说却是逐渐觉醒的一年

2020年的最后一天&#xff0c;按照惯例总结一下成果&#xff0c;同时也制定一下来年的目标&#xff0c;每年不总得给自己立几个flag。 关于公众号 先说公众号&#xff0c;其实开通了很多年&#xff0c;直到今天&#xff0c;还差一百多粉丝才突破一万&#xff0c;这样的成绩算…

美团 大规模商品知识图谱的构建与应用

作者 | 曹雪智博士 美团 技术专家 来源 | DataFunTalk 在互联网新零售的大背景下&#xff0c;商品知识图谱作为新零售行业数字化的基石&#xff0c;提供了对于商品相关内容的立体化、智能化、常识化的理解&#xff0c;对上层业务的落地起到了至关重要的作用。 相比于美团大脑中…