UML类图的6种关系

目录

一、UML类图的6种关系(依赖关系由弱到强):

二、6种关系归纳总结

2.1 第一种归纳方式:先分组,再分组(由大到小,由宏观到微观)

2.2 第二种归纳方式:先聚合,再聚合(找共同点,逐步抽象,由微观到宏观)

2.2.1 归纳到一起其实是2种关系:依赖和关联。

2.2.2 寻根究底再归纳

2.2.1 为什么最终是两个关系呢?这两个关系是什么关系?

2.2.2 那么继续,为什么依赖的关系弱于关联的关系呢?

2.3 从根上往上推关系是如何扩展来的?如下图所示:

三、uml类图的六大关系进行结构化(通过对比它们的强弱):

3.1 维度1、改变难易程度定强弱

3.2 维度2、线型断强弱。

还有没有其他维度呢?


一、UML类图的6种关系(依赖关系由弱到强):

关系

线型

关键代码

依赖

todo:

关联

todo:

聚合

todo:

组合

todo:

实现

implements

继承

extends

二、6种关系归纳总结

2.1 第一种归纳方式:先分组,再分组(由大到小,由宏观到微观)

所有的叶子节点组成6大关系。

2.2 第二种归纳方式:先聚合,再聚合(找共同点,逐步抽象,由微观到宏观)

2.2.1 归纳到一起其实是2种关系:依赖和关联。

1、首先我们这样组合看这6种关系:

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

首先聚合和组合都属于关联关系的1对多扩展,所以合并为关联。

2、现在剩下:

依赖、关联、实现、继承

一般看的时候是这样的一个组合关系:

(依赖、关联、)(实现、继承)

我们把它们拆开打乱重新组合看,或许看到不一样的内容,比如:

(依赖、实现、)(关联、继承)

分析:

依赖是不同血缘关系的类在方法级别产生关系。

关联是不同血缘关系的类在类级别产生关系。

实现是相同血缘关系的类(接口)在方法级别,也就是行为级别产生关系。

继承是相同血缘关系的类在类级别产生关系。

那么:

依赖和实现都是方法级别,行为级别的合并到一起。可以都说是依赖。

关联和继承都是类级别的,合并到一起。可以都说是关联。

结论:

所以最终归纳为2种关系:依赖和关联。从线型上也可以进行如此归纳。

2.2.2 寻根究底再归纳

2.2.1 为什么最终是两个关系呢?这两个关系是什么关系?

再归纳就是归纳为类只有两部分内容:1、属性;2、方法。所以类的关系也就从这两部分衍生出来。

一个类的方法在另一个类的方法中出现,则是依赖。

一个类在另一个类的属性中出现,则是关联。

区分一种情况,如果是透传,则不属于有依赖关系。

只在方法里new对象,不调用该对象的方法,也不属于有依赖关系。

因为他们的行为没有产生交互。也就是方法内没有直接调用方法。

2.2.2 那么继续,为什么依赖的关系弱于关联的关系呢?

从类的组成(方法和属性)的角度分析:?

从对象的组成(行为和特征)的角度分析:?

从动静(类和对象)的角度分析:?

依赖和关联,描述的是类之间的关系还是对象之间的关系呢?

说是类之间的关系,那么只考虑类,不考虑对象,不用考虑运行时。

根据变化的容易程度吗?

强弱是个相对的,软硬也是相对的,更软更易改变,更硬更不易改变。

那么关系更强更不易改变,关系更弱更易改变。

依赖发生在方法里,关联发生在属性上。相对来说方法更容易改变?是的。

还有其他角度吗?

2.3 从根上往上推关系是如何扩展来的?如下图所示:

三、uml类图的六大关系进行结构化(通过对比它们的强弱):

3.1 维度1、改变难易程度定强弱

方法关系比属性关系更弱,无血缘关系比有血缘关系弱,关联类单个比多个弱,关联越晚发生越弱。

3.2 维度2、线型断强弱。

虚线比实线关系弱,空心比实心关系弱,没菱形比有菱形关系弱,普通箭头比三角箭头关系弱。

还有没有其他维度呢?

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

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

相关文章

计算机毕业论文内容参考|基于微信小程序和云开发的小区垃圾分类知识手册平台的设计与实现

文章目录 导文摘要前言绪论1课题背景2国内外现状与趋势相关技术与方法介绍系统分析总结与展望1本文总结2后续工作展望导文 计算机毕业论文内容参考|基于微信小程序和云开发的小区垃圾分类知识手册平台的设计与实现 摘要 本文介绍了基于微信小程序和云开发的小区垃圾分类知识手…

网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用

文章目录 前言一、网络发展各阶段二、网络通信的三大要素1.IP地址2.端口号3.网络协议 三、TCP/IP五层网络模型各层级的用处网络设备所在分层 四、封装和分用封装分用网络传输的实际情况 总结 前言 本人是一个刚刚上路的IT新兵,菜鸟!分享一点自己的见解,如果有错误的地方欢迎各…

Flutter流式组件Wrap

Wrap组件类似Row组件都是横向依次排列,唯一的区别就是Wrap能自动换行。 主要代码: Wrap(spacing: 10, //左右间距runSpacing: 10, //上下间距// direction: Axis.vertical,//主轴的方向,默认横向// alignment: WrapAlignment.spaceBetween, …

React hooks之useCallback的使用与性能分析

使用useCallback优化代码 useCallback是对传过来的回调函数优化,返回的是一个函数;useMemo返回值可以是任何,函数,对象等都可以。 简单来说就是返回一个函数,只有在依赖项发生变化的时候才会更新(返回一个…

《项目实战》构建SpringCloud alibaba项目(二、构建微服务鉴权子工程store-authority-service)

系列文章目录 构建SpringCloud alibaba项目(一、构建父工程、公共库、网关) 构建SpringCloud alibaba项目(二、构建微服务鉴权子工程store-authority-service) 文章目录 系列文章目录前言1、在公共库增加 UserInfo类2、微服务鉴权…

电脑文件怎么加密?哪个文件加密软件好用?

不少人的电脑中都存放着一些重要文件,这些文件需要使用专业的方式进行加密保护。那么电脑文件该怎么加密呢?下面我们就通过本文来一起了解一下吧。 超级加密3000 作为一款备受好评的文件加密软件,超级加密3000在安全性、便捷性、全面性等方面…

记录征战Mini开发板从无到有

前言 我们店铺的开发板目前主要有Altera,Xilinx以及国产安路,高云。Xilinx只有Spartan6系列,这个系列的芯片只支持ISE软件,但是很多客户用的是VIVADO软件,所以导致我们无法满足客户的需求。基于此原因,我们经过几个月…

AST-抽象语法树

js加密解混淆首先想到的是AST语法树,那么什么是AST呢,学习AST过程的一些笔记 1.AST是JS执行的第一步是读取 js 文件中的字符流,然后通过词法分析生成令牌流Tokens,之后再通过语法分析生成 AST(Abstract Syntax Tree&a…

读取摄像机的内参和畸变系数并对畸变图像进行去畸变

这个程序的目标是读取摄像机的参数(内参和畸变系数),并对畸变图像进行去畸变操作,然后进行一些特征点和矩形框的绘制。 #include 语句引入所需的库。using namespace std; 和 using namespace cv; 语句是在代码中使用std和opencv命名空间,这样就不用在每次使用这些库的函数…

ChatGPT 有什么新奇的使用方式?

先来看看ChatGPT对此问题如何作答 ChatGPT对此问题如何作答 ChatGPT是什么 ChatGPT是一种基于自然语言处理的语言模型,由OpenAI开发。它是建立在GPT(Generative Pre-trained Transformer)架构的基础上的,采用了深度学习技术。GP…

Todo-List案例版本一

初级使用e.target.value 记得安装npm i nanoid与UUID类似 快捷键ctrlH替换内容 src/components/MyHeader.vue <template><div class"todo-header"><input type"text" placeholder"请输入你的任务名称&#xff0c;按回车键确认&quo…

浅谈RPC协议

RPC协议 RPC简介为啥需要RPCRPC的调用过程gRPCProtoBuffergRPC实战 RPC简介 RPC&#xff08;Remote Procedure Call Protocol&#xff09;远程过程调用协议&#xff0c;目标就是让远程服务调用更加简单、透明。RPC 框架负责屏蔽底层的传输方式&#xff08;TCP 或者 UDP&#x…