UML — — 类图目录

前言

这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系; 能看懂类图中各个类之间的线条、箭头代表什么意思后,也就足够应对 日常的工作和交流; 同时,我们应该能将类图所表达的含义和最终的代码对应起来; 有了这些知识,看后面章节的设计模式结构图就没有什么问题了;

类图基本概念

类图的3个基本组件:类名、属性、方法。

类名、属性、方法

类之间的关系

依赖关系的强弱程度依次为:实现 = 继承 > 组合 > 聚合 > 关联 > 依赖;

实现关系(realize)

实现关系用一条带空心箭头的虚线表示;

实现

泛化关系(generalization)

继承关系为 is-a的关系;两个对象之间如果可以用 is-a 来表示,就是继承关系:(..是..)

泛化关系用一条带空心箭头的直接表示;如下图表示(A继承自B);

泛化关系(generalization)

依赖关系(dependency)

对象之间最弱的一种关联方式,是临时性的关联。依赖关系是用一套带箭头的虚线表示的;如下图表示A依赖于B;他描述一个对象在运行期间会用到另一个对象的关系;

依赖关系(dependency)

关联关系(association)

对象之间的强关联方式,是长期性的关联。关联关系默认不强调方向,表示对象间相互知道;如果特别强调方向,如下图,表示A知道B,但 B不知道A;

关联关系(association)

聚合关系(aggregation)

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

合关系用一条带空心菱形箭头的直线表示,如下图表示A聚合到B上,或者说B由A组成;

聚合关系(aggregation)

组合关系(composition)

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

组合关系用一条带实心菱形箭头直线表示,如下图表示A组成B,或者B由A组成;

组合关系(composition)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏颇忒脱的技术博客

Elasticsearch中将Doc根据A字段排序获得第一个Doc的B字段值的方法

最近遇到这样一个需求,要通过Elasticsearch将Doc根据A字段降序,然后获得B字段的值,最终根据B字段的值再去做Pipeline Aggregatio...

18420
来自专栏Dawnzhang的开发者手册

数据结构与算法学习笔记之 复杂度分析

大家都知道数据结构和英语,就如同程序员的两条腿一样;只有不断的积累,学习,拥有了健壮的“双腿”才能越走越远;在数据结构和算法的领域,不得不承认自己就是一只菜...

15630
来自专栏服务端技术杂谈

算出实体箱子之间可以存多少水

出题 ? 下午,群里面有同学出了一个简单的算法题,意思是一个房间内,有多个1立方米的箱子,多个箱子可以垂直落在一起,问:剩下的空间可以存多少立方的水(如图)。 ...

33970
来自专栏C语言及其他语言

[每日一题]台球碰撞

今天这题可大有来头了,湖南省第六届大学生计算机程序设计竞赛题目,比较经典也比较有名 题目描述 在平面直角坐标系下,台球桌是一个左下角在(0,0),右上...

37360
来自专栏工科狗和生物喵

【我的漫漫跨考路】有生之年·调完了BUG--冒泡排序C++版本

正文之前 今天去牛客网试了试一些实战编程题,感觉贼有意思,但是也很难,挑了个成绩排序的算法题我就开始怼! 对我一个编程经验并不是很丰富的人来说,确实算是个挑战了...

37660
来自专栏美团技术团队

函数式编程在Redux/React中的应用

本文简述了软件复杂度问题及应对策略:抽象和组合;展示了抽象和组合在函数式编程中的应用;并展示了Redux/React在解决前端状态管理的复杂度方面对上述理论的实...

36890
来自专栏web前端教室

javascript填坑之排序

image.png 排序嘛,很多同学一听这个就怕怕,尤其是数学不OK的同学。 现在的许多技术类教程吧,偏见来了啊,注意姿势,很多技术教程写的都太吊了,完全看不...

200100
来自专栏趣学算法

数据结构 第10讲 好玩贪吃蛇——数字矩阵

11130
来自专栏机器学习算法与Python学习

资料 | Python的14张思维导图(可后台下载)

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 来自:AI科技大本营 下载方式请见文...

38580
来自专栏数说工作室

统计师的Python日记【第八天:数据清洗(2)文本处理】

本文是【统计师的Python日记】第8天的日记 回顾一下: 第1天学习了Python的基本页面、操作,以及几种主要的容器类型。 第2天学习了python的函数、...

73460

扫码关注云+社区

领取腾讯云代金券