当前位置: 首页 > news >正文

UML类图的六大关系,最佳学习理解方式

UML 是什么?

比较官方的描述是这样的:

UML(Unified Modeling Language)是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。

而我的描述:
 

UML算是 研发与非研发之间的其中一种  对于业务设计的 沟通方式。

而且,在写代码之前, 设计肯定是先行的。

没有经过思考写出来的代码...是没有含思量的。


 类图结构

接口图结构


UML类图 的 六大关系

继承、实现、组合、聚合、关联、依赖

每种关系都有自己的表示方式,也就是 线 + 箭头 组成

专业的线和箭头

专业的符号 

属性和方法前面的“+”、“-”和“#”表示访问级别:

 

+:public

-:private

#:protected


结合实例、简图 学习

继承关系

 类跟类之间的继承关系,大家肯定不陌生,父子关系,子继承父。

 图示:


实现关系

类跟接口之间的实现关系,大家肯定也不陌生。

 图示:


 聚合关系

体现的是A对象(学校)可以包含B对象(老师、学生),但B对象不是A对象的一部分。

老师、学生,如果学校不存在了,他们还是可以单独存在。

聚合表示一种弱的‘拥有’关系。

图示 :


组合关系

体现的是 A对象(凤凰)可以包含B对象 (翅膀、爪子等)。A作为整体, B作为部分。

如果A没了,B也就没了。 凤凰没了, 它的翅膀也是相当于没了。

整体和部分有一致的生命周期。

组合表示一种强的‘拥有’关系。

图示 : 


关联关系

关联关系,显然就是存在 类和类之间都有关联,那就是 双向奔赴 双向关联

好比如,学生和老师之间的关联, 学生关联多个老师,老师也可以管理多个学生。


那当然也是有单向关联, 也就是学生关联多门课程, 但是课程是没法主动关联学生的。


其实,还有自己关联自己,自关联

 图示:

 


依赖关系 

其实有点点类似关联关系,但是 依赖关系有个非常个性的特点,

就是 某个类的方法使用另一个类的对象作为参数。

图示:


 

好了,该篇就到这。

相关文章:

  • Springboot 整合 Socket 实战案例 ,实现 单点发送、广播群发,1对1,1对多
  • Springboot Mybatis 、JPA 调用存储过程,实战教程
  • 写代码的七八九十宗罪,多图、胆小慎入!
  • Springboot byte[] 转 MultipartFile ,InputStream 转 MultipartFile
  • Springboot 最细节全面的接口传参接参介绍,总有你喜欢的一种方式
  • Springboot 整合RabbitMq ,用心看完这一篇就够了
  • 用过Apifox这个API接口工具后,确实感觉postman有点鸡肋......
  • ClickHouse 挺快,esProc SPL 更快
  • 苹果6sp内存可以扩展吗_饮用苹果醋可以减肥吗?
  • tcpdump抓两个网卡的包_Kubernetes 疑难杂症排查分享:神秘的溢出与丢包
  • 使用vim的重不重要_如何优雅地使用 Vim?
  • hbase 使用disruptor_HBase和Kryo混合使用时出现的jar包冲突
  • mediacodec延时_ijkplayer播放rtsp流卡顿、延迟问题解决
  • ei拼音的四个声调对应的字_【ei的四个声调有汉字】作文写作问答 - 归教作文网...
  • 高斯模糊java代码_一行java代码实现高斯模糊效果
  • CAP 一致性协议及应用解析
  • Javascript设计模式学习之Observer(观察者)模式
  • k8s如何管理Pod
  • Octave 入门
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Sequelize 中文文档 v4 - Getting started - 入门
  • vue-router 实现分析
  • XForms - 更强大的Form
  • 闭包--闭包作用之保存(一)
  • 关于List、List?、ListObject的区别
  • 理清楚Vue的结构
  • 前言-如何学习区块链
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 微信小程序:实现悬浮返回和分享按钮
  • 一个SAP顾问在美国的这些年
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 硬币翻转问题,区间操作
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • !!Dom4j 学习笔记
  • # Java NIO(一)FileChannel
  • $.each()与$(selector).each()
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (多级缓存)多级缓存
  • (六)c52学习之旅-独立按键
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (四)模仿学习-完成后台管理页面查询
  • (转)Linux下编译安装log4cxx
  • (转)Sublime Text3配置Lua运行环境
  • ./configure,make,make install的作用
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Core中Emit的使用
  • .NET MVC 验证码
  • .net web项目 调用webService