简单实用UML关系图解

简介: 一句话UML,再记不住就要DPP了: 关系 图解 代码 备注1:继承关系(Generalization)    2:实现关系(Realization)    3:依赖关系(Dependency) 方法的参数、局部变量、返回值  4:关联关系(Association)...

一句话UML,再记不住就要DPP了:

关系 图解 代码 备注
1:继承关系(Generalization) image    
2:实现关系(Realization) image    
3:依赖关系(Dependency) image 方法的参数、局部变量、返回值  
4:关联关系(Association) image 互为类属性  
5:方向关联(DirectedAssociation) image 类属性  
6:聚合关系(Aggregation) image 类属性 has a
7:组合关系(Composition) image 类属性 contains a

 

现在,稍作详细点,

一:继承关系(Generalization):

image

Class B继承与Class A

继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系之一;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性;

 

二:实现关系(Realization):

 image

Class A实现了Interface A

实现指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系之一;在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性;

 

三:依赖关系(Dependency):

 image

ClassA依赖于ClassB

可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;表现在代码层面,为类B作为参数被类A在某个method方法中使用;

 

四:关联关系(Association):

 image

ClassA与ClassB相互关联

这里的关联关系分的比较细,把相互关联和有方向的关联区分开了,相互他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,是一种长期的稳定的关系;表现在代码层面,为被关联类以类属性的形式出现在关联类中,也可能是关联类引用了一个类型为被关联类的全局变量;

 

五:有方向的关联(DirectedAssociation):

 image

ClassA关联于ClassB

是关联的一种特别形式,是单向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;

 

六:聚合关系(Aggregation):

 image

计算机 has-a cpu

聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;

 

七:组合关系(Composition):

 image

孕妇 contains-a 胎儿

组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;孕妇死了胎儿自然也就死了;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;

 

大部分来自:http://blog.csdn.net/duran1986/article/details/5573415

Creative Commons License本文基于 Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 http://www.cnblogs.com/luminji(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。
目录
相关文章
|
算法 C++
OpenCV-白平衡(完美反射算法)
OpenCV-白平衡(完美反射算法)
1273 0
|
6月前
|
机器学习/深度学习 编解码 运维
时间序列预测增强方法总结:频域、分解、patch
本文探讨时间序列预测中数据增强的独特挑战:需兼顾多样性与时间一致性。传统分类增强方法因破坏input-target连续性而失效。文章系统梳理频域(WaveMask/WaveMix)、分解(STAug)及时域(TPS)等主流方法,重点介绍TPS——通过重叠patch、方差感知置换与重叠重建,在长期/短期预测及分类任务中均达SOTA效果。
316 0
时间序列预测增强方法总结:频域、分解、patch
|
Serverless
📢大模型服务平台百炼“流程”功能下线通知
本文主要内容介绍了大模型服务平台百炼的“流程”功能将于2025年11月15日下线。自通知发布起,“流程”入口将逐步隐藏,建议用户尽快迁移至全新升级的工作流应用,支持MCP、函数计算及大模型节点编排,操作更便捷。2025年6月15日起,现存“流程”不可修改;11月15日起完全停用,智能体中需解除“流程”引用并替换为工作流。请参考相关文档完成迁移。
1241 0
|
10月前
|
运维 Prometheus 监控
运维不是救火队
运维不是救火队
406 6
|
10月前
|
存储 JavaScript 前端开发
XSS攻击
XSS(跨站脚本攻击)是攻击者通过网站漏洞注入恶意脚本,用户访问时执行,窃取数据、Cookie或劫持会话。主要分反射型和存储型,危害大。防御措施包括输入转义、白名单过滤及CSP内容安全策略,有效防止脚本注入。
|
人工智能 Rust 前端开发
前端界的未来趋势:掌握这些新技术,让你的作品走在时代前沿!
【10月更文挑战第30天】前端开发正以前所未有的速度发展,新技术层出不穷。本文探讨了AI助手(如GitHub Copilot)、低代码/无代码平台、跨平台技术(如React Native)和WebAssembly等未来主流技术,并附上示例代码,帮助你走在时代前沿。
816 1
|
SQL 数据库 数据安全/隐私保护
SQL基础:DDL、DML、DCL和TCL的区别与使用
本文详细解析了SQL语言的四大类别:数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)和事务控制语言(TCL),涵盖每类语句的功能、语法、使用场景及示例。
1769 0
|
数据采集 算法 测试技术
【硬件测试】基于FPGA的QPSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的QPSK调制解调系统的硬件实现与仿真效果。系统包含测试平台(testbench)、高斯信道模块、误码率统计模块,支持不同SNR设置,并增加了ILA在线数据采集和VIO在线SNR设置功能。通过硬件测试验证了系统在不同信噪比下的性能,提供了详细的模块原理及Verilog代码示例。开发板使用说明和移植方法也一并给出,确保用户能顺利在不同平台上复现该系统。
712 15
|
算法 关系型数据库 MySQL
分布式唯一ID生成:深入理解Snowflake算法在Go中的实现
在分布式系统中,确保每个节点生成的 ID 唯一且高效至关重要。Snowflake 算法由 Twitter 开发,通过 64 位 long 型数字生成全局唯一 ID,包括 1 位标识位、41 位时间戳、10 位机器 ID 和 12 位序列号。该算法具备全局唯一性、递增性、高可用性和高性能,适用于高并发场景,如电商促销时的大量订单生成。本文介绍了使用 Go 语言的 `bwmarrin/snowflake` 和 `sony/sonyflake` 库实现 Snowflake 算法的方法。
1216 1
分布式唯一ID生成:深入理解Snowflake算法在Go中的实现
|
人工智能 Cloud Native 安全
解锁 DeepSeek 安全接入、稳定运行新路径
解锁 DeepSeek 安全接入、稳定运行新路径

热门文章

最新文章