设计模式 — UML 类图
UML 类图类的表示方式具体类具体类在类图中用矩形框表示矩形框分为三层第一层是类名字。第二层是类的成员变量第三层是类的方法。成员变量以及方法前的访问修饰符用符号来表示表示public-表示private#表示protected~表示default加方法参数的话格式如下# method2(int par1, String par2): int返回值可以省略不写抽象类抽象类在 UML 类图中同样用矩形框表示但是抽象类的类名以及抽象方法的名字都用斜体字表示接口接口在类图中也是用矩形框表示但是与类的表示法不同的是接口在类图中的第一层顶端用构造型interface表示下面是接口的名字第二层是方法。此外接口还有另一种表示法俗称棒棒糖表示法就是类上面的一根棒棒糖圆圈实线。圆圈旁为接口名称接口方法在实现类中出现。包类和接口一般都出现在包中UML 类图中包的表示形式如下类之间的关系类和类、类和接口、接口和接口之间存在一定关系UML 类图中一般会有连线指明它们之间的关系。关系共有六种类型分别是实现关系、泛化关系、关联关系、依赖关系、聚合关系、组合关系。实现关系实现关系是指接口及其实现类之间的关系。在 UML 类图中实现关系用空心三角和虚线组成的箭头来表示从实现类指向接口。在 Java 代码中实现关系可以直接翻译为关键字implements。泛化关系泛化关系Generalization是指对象与对象之间的继承关系。如果对象 A 和对象 B 之间的 “is a” 关系成立那么二者之间就存在继承关系对象 B 是父对象对象 A 是子对象。例如一个年薪制员工 “is a” 员工很显然年薪制员工 Salary 对象和员工 Employee 对象之间存在继承关系Employee 对象是父对象Salary 对象是子对象。在 UML 类图中泛化关系用空心三角和实线组成的箭头表示从子类指向父类。在 Java 代码中对象之间的泛化关系可以直接翻译为关键字extends。关联关系关联关系Association是指对象和对象之间的连接它使一个对象知道另一个对象的属性和方法。在 Java 中关联关系的代码表现形式为一个对象含有另一个对象的引用。也就是说如果一个对象的类代码中包含有另一个对象的引用那么这两个对象之间就是关联关系。关联关系有单向关联和双向关联。如果两个对象都知道即可以调用对方的公共属性和操作那么二者就是双向关联。如果只有一个对象知道即可以调用另一个对象的公共属性和操作那么就是单向关联。大多数关联都是单向关联单向关联关系更容易建立和维护有助于寻找可重用的类。在 UML 图中双向关联关系用带双箭头的实线或者无箭头的实线双线表示。单向关联用一个带箭头的实线表示箭头指向被关联的对象。这就是导航性Navigatity。一个对象可以持有其它对象的数组或者集合。在 UML 中通过放置多重性multipicity表达式在关联线的末端来表示。多重性表达式可以是一个数字、一段范围或者是它们的组合。多重性允许的表达式示例如下数字精确的数量*或者0..*表示0到多个0..1表示0或者1个在 Java中 经常用一个空引用来实现1..*表示1到多个关联关系又分为依赖关联、聚合关联和组合关联三种类型。依赖关系依赖Dependency关系是一种弱关联关系。如果对象 A 用到对象 B但是和 B 的关系不是太明显的时候就可以把这种关系看作是依赖关系。如果对象 A 依赖于对象 B则A “use a” B。比如驾驶员和汽车的关系驾驶员使用汽车二者之间就是依赖关系。(和驾驶员拥有汽车是不一样的)在 UML 类图中依赖关系用一个带虚线的箭头表示由使用方指向被使用方表示使用方对象持有被使用方对象的引用。依赖关系在 Java 中的具体代码表现形式为 B 为 A 的构造器或方法中的局部变量、方法或构造器的参数、方法的返回值或者 A 调用 B 的静态方法。代码演示如下classB{publicStringfield1;//成员变量publicvoidmethod1(){System.println(在类B的方法1中);}publicstaticvoidmethod2(){//静态方法System.out.println(在类B的静态方法2中);}}publicclassA{publicvoidmethod1(){// A 依赖于 B 的第一种表现形式B 为 A 的局部变量BbnewB();b.method1();}publicvoidmethod2(){// A 依赖于 B 的第二种表现形式 调用 B 的静态方法B.method2();}publicvoidmethod3(Bb){// A 依赖于 B 的第三种表现形式B 作为 A 的方法参数Stringsb.field1;}// A 依赖于 B 的第四种表现形式B 作为 A 的方法的返回值publicBmethod4(){returnnewB();}}聚合关系聚合Aggregation是关联关系的一种特例它体现的是整体与部分的拥有关系即has a的关系。此时整体与部分之间是可分离的它们可以具有各自的生命周期部分可以属于多个整体对象也可以为多个整体对象共享所以聚合关系也常称为共享关系。例如公司部门与员工的关系一个员工可以属于多个部门一个部门撤消了员工可以转到其它部门。又或者前面说的驾驶员拥有车。在 UML 图中聚合关系用空心菱形加实线箭头表示空心菱形在整体一方箭头指向部分一方组合关系组合Composition也是关联关系的一种特例它同样体现整体与部分间的包含关系即contains a的关系。但此时整体与部分是不可分的部分也不能给其它整体共享作为整体的对象负责部分的对象的生命周期。这种关系比聚合更强也称为强聚合。如果 A 组合 B则 A 需要知道 B 的生存周期即可能 A 负责生成或者释放 B或者 A 通过某种途径知道 B 的生成和释放。例如人包含头、躯干、四肢它们的生命周期一致。当人出生时头、躯干、四肢同时诞生。当人死亡时作为人体组成部分的头、躯干、四肢同时死亡。在 UML 图中组合关系用实心菱形加实线箭头表示实心菱形在整体一方箭头指向部分一方。在 Java 代码形式上聚合和组合关系中的部分对象是整体对象的一个成员变量。但是在实际应用开发时两个对象之间的关系到底是聚合还是组合有时候很难区别。在 Java 中仅从类代码本身是区分不了聚合和组合的。如果一定要区分那么如果在删除整体对象的时候必须删掉部分对象那么就是组合关系否则可能就是聚合关系。从业务角度上来看如果作为整体的对象必须要部分对象的参与才能完成自己的职责那么二者之间就是组合关系否则就是聚合关系。例如汽车与轮胎汽车作为整体轮胎作为部分。如果用在二手车销售业务环境下二者之间就是聚合关系。因为轮胎作为汽车的一个组成部分它和汽车可以分别生产以后装配起来使用但汽车可以换新轮胎轮胎也可以卸下来给其它汽车使用。如果用在驾驶系统业务环境上汽车如果没有轮胎就无法完成行驶任务二者之间就是一个组合关系。再比如网上书店业务中的订单和订单项之间的关系如果订单没有订单项也就无法完成订单的业务所以二者之间是组合关系。而购物车和商品之间的关系因为商品的生命周期并不被购物车控制商品可以被多个购物车共享因此二者之间是聚合关系。参考 30分钟学会UML类图

相关新闻

北京大兴机场用的AR运维系统是哪家做的

北京大兴机场用的AR运维系统是哪家做的

在大型交通枢纽、高端制造及能源化工等复杂场景中,传统运维模式正面临“专家资源稀缺”、“现场信息孤岛”以及“响应时效滞后”的三重挑战。以北京大兴国际机场为例,其庞大的基础设施网络对运维的实时性、精准度提出了极高要求。近期备受关注的北京大兴…

2026/8/1 2:38:45 阅读更多 →
【python】Flask 贵州省兴仁市藠头价格数据分析和可视化系统(源码+文档)【独一无二】

【python】Flask 贵州省兴仁市藠头价格数据分析和可视化系统(源码+文档)【独一无二】

贵州省兴仁市藠头价格数据分析和可视化系统 一、项目描述 本项目是一个面向贵州省兴仁市藠头产业的数据分析与可视化系统,围绕 2015—2025 年藠头价格、品种、种植面积和气象数据开展数据处理、统计分析与图形展示。系统采用 Python 完成数据生成、采集与清洗&#…

2026/8/1 2:38:45 阅读更多 →
如何快速实现智能图片分层:Layerdivider终极指南

如何快速实现智能图片分层:Layerdivider终极指南

如何快速实现智能图片分层:Layerdivider终极指南 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 在数字设计领域,手动分离图片图层…

2026/8/1 2:38:45 阅读更多 →

最新新闻

Altair Inspire 2021 安装与配置全攻略:从零部署到拓扑优化实战

Altair Inspire 2021 安装与配置全攻略:从零部署到拓扑优化实战

1. 项目概述:为什么选择Altair Inspire 2021?如果你是一名机械工程师、结构设计师,或者对产品轻量化、拓扑优化和运动仿真感兴趣,那么“Altair Inspire”这个名字你一定不陌生。它是一款将“仿真驱动设计”理念平民化的强大工具&a…

2026/8/1 3:14:59 阅读更多 →
知识管理与笔记软件(Obsidian)- 综合指南与Cherry AI集成技巧

知识管理与笔记软件(Obsidian)- 综合指南与Cherry AI集成技巧

知识管理与笔记软件(Obsidian) 搜素关注 WXGZH 大熊资源分享站 回复 03获取对应资源Obsidian 是一款颠覆传统笔记概念的本地优先知识管理工具。2020年,在滑铁卢大学相识的Shida Li和Erica Xu,在新冠疫情隔离期间联合创办了Obsidian&#xff…

2026/8/1 3:14:59 阅读更多 →
STM32 ADC从入门到精通:多通道采集、DMA与精度优化实战

STM32 ADC从入门到精通:多通道采集、DMA与精度优化实战

1. 项目概述:从模拟世界到数字世界的桥梁在嵌入式开发,尤其是基于STM32这类微控制器的项目中,我们经常需要与真实的物理世界打交道。温度、压力、光照、声音,这些物理量在自然界中都是连续变化的模拟信号。但微控制器这颗“数字大…

2026/8/1 3:14:59 阅读更多 →
Unity语音交互毕设实战:从云端ASR到场景集成的完整指南

Unity语音交互毕设实战:从云端ASR到场景集成的完整指南

1. 项目概述:为什么选择Unity语音交互作为毕设?如果你正在为计算机、数字媒体或相关专业的毕业设计选题发愁,想找一个既有技术深度、又能做出直观交互效果,同时还能为简历增色的项目,那么“Unity语音交互”绝对是一个值…

2026/8/1 3:14:59 阅读更多 →
深圳一站式定制异形珍珠棉内托配套纸箱源头工厂支持24小时打样

深圳一站式定制异形珍珠棉内托配套纸箱源头工厂支持24小时打样

在深圳宝安制造业产业链高速发展的今天,越来越多电子、新能源、跨境电商企业都被包装痛点困扰:找珍珠棉内托一家、定做外箱另找一家,两头对接耗时耗力;新品急着上线,打样周期动辄一周以上;异形产品没有精准…

2026/8/1 3:14:59 阅读更多 →
可灵视频时长封顶真相曝光:为什么你的45秒作品总被截断?3大底层限频机制深度拆解

可灵视频时长封顶真相曝光:为什么你的45秒作品总被截断?3大底层限频机制深度拆解

更多请点击: https://codechina.net 第一章:可灵视频时长封顶真相曝光:为什么你的45秒作品总被截断? 当你精心制作一段45秒的AI生成视频,上传至可灵(Kling)平台后却意外发现结尾被硬生生截断为…

2026/8/1 3:13:59 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →