类与类之间的基本关系

news/2024/11/19 12:39:19/文章来源:https://www.cnblogs.com/luoyiwen123/p/18347851

类与类之间的基本关系

类与类之间的六种关系

一、继承关系

继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子接口指向父接口。


二、实现关系

实现指的是一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性。在UML类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口。


三、依赖关系

简单的理解,依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖。表现在代码层面,为类B作为参数被类A在某个method方法中使用。在UML类图设计中,依赖关系用由类A指向类B的带箭头虚线表示。


四、关联关系

关联体现的是两个类之间语义级别的一种 强依赖关系,比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML类图设计中,关联关系用由关联类A指向被关联类B的带箭头实线表示。


五、聚合关系

聚合是关联关系的一种特例,它体现的是整体与部分的关系,即 has-a 的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。比如计算机与CPU、公司与员工的关系等。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,聚合关系以空心菱形加实线表示。(菱形指向整体)


六、组合关系

组合也是关联关系的一种特例,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,组合关系以实心菱形加实线表示。

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

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

相关文章

js 将十进制字符串转换成4字节的字节数组

函数function convertToHexArrays(input) {// 通过制表符分割输入字符串const numbers = input.split(\t);// 用于存储结果的数组const result = [];for (let num of numbers) {// 将字符串转换为数字const value = parseInt(num);// 创建一个 4 字节的 ArrayBufferconst buffe…

超异构计算杂谈

超异构计算杂谈 在这一节中要从更远的视角来看看计算机架构发展的黄金 10 年,主要将围绕异构计算和超异构来展开。在开始具体内容前,非常推荐观看以下两个视频:计算机架构的新黄金时代:A New Golden Age for Computer Architecture 编译器的黄金时代:The Golden Age of Co…

转发wsa和安卓模拟器网络

adb连接上设备后, 执行 执行端口转发 adb forward tcp:6789 tcp:888`就可以了, 把设备的8888端口转发到本机6789, 本机postman之类直接访问 127.0.0.1:6789即可 其他笔记:连接wsa: adb connect 127.0.0.1:58526 连接安卓模拟器: adb connect 127.0.0.1:58526 安装app adb -s 1…

09HTML+CSS

完成小兔鲜儿商城界面1 <!DOCTYPE html>2 <html lang="en">3 4 <head>5 <meta charset="UTF-8">6 <meta name="viewport" content="width=device-width, initial-scale=1.0">7 <!-- 提升…

macos上安装esp-idf v4.2版本

参考 https://docs.espressif.com/projects/esp-idf/en/release-v5.0/esp32/get-started/linux-macos-setup.html 安装 Prerequisites brew install cmake ninja dfu-utilgit下载idf 4.2版本并安装 git clone -b release/v4.2 --recursive https://github.com/espressif/esp-id…

VS设置 LLVM-Clang 编译器进行编译C++项目

在VS中默认的C++编译器一般为 MSVC 编译器,可以根据自己的需要将其设置为 LLVM-Clang 编译器。主要有两种方案: 1)直接使用 Visual Studio Installer来自动下载对应的 Clang 编译器和构建工具,后续无需再进行配置,便可直接使用。 2)使用自己编译或者单独下载的 LLVM-Clan…

记一次微信聊天记录导出工具的折腾

小记微信聊天记录选择性导出工具: WechatExporter 的使用目前的微信app(iOS端 v8.0.46)聊天记录中, 允许用户基于图片/视频进行筛选 单个或者少量保存到本机没啥问题 但是如果你量很大, 不好意思, 有批量操作功能, 但是我不支持全选, 因为我批量操作单次最多只支持 9 个文件 就…

《加缪情书集》-1944

用直白的话语,短句子,热烈表达感情。写很具体的细节打动人全文背诵,谢谢 【PS:加缪和玛丽亚这种不被世俗赞同的感情是不是可以直接拿来用...?】分手后

当你用bing搜索张云杰时

首页会跳出:总结一下:(张杰自称)张云杰现实中是完完全全的废物。打开张云杰相关的图片可以看到:只能说气质相符!

洛谷P3842 线段——题解

洛谷P3842题解传送锚点摸鱼环节 [TJOI2007] 线段 题目描述 在一个 \(n \times n\) 的平面上,在每一行中有一条线段,第 \(i\) 行的线段的左端点是\((i, L_{i})\),右端点是\((i, R_{i})\)。 你从 \((1,1)\) 点出发,要求沿途走过所有的线段,最终到达 \((n,n)\) 点,且所走的路…

IDEA中开启注解处理器时的问题

项目构建脚本:gradle 项目中使用mapstruct(要求开启注解处理器) 使用IDEA构建和运行:在上面的条件下,运行时会报错。解决办法参考: https://blog.csdn.net/kq1983/article/details/130740712 https://blog.csdn.net/qq_33240556/article/details/137046631

[GYCTF2020]Node Game及知识点

🚩crlf简介:CRLF 指的是回车符(CR,ASCII 13,\r,%0d) 和换行符(LF,ASCII 10,\n,%0a),CRLF即回车换行,利用回车换行。因为HTTP协议中是用回车换行来界定头部和实体的,所以如果我们可以用回车换行来恶意拆分请求或者响应 检测:CRLF注入漏洞的本质和XSS有点相似,攻击…