博客
关于我
2021-03-14
阅读量:201 次
发布时间:2019-02-28

本文共 1503 字,大约阅读时间需要 5 分钟。

类与类之间的关系说明

对象的关联

对象的关联可以用简单的说,是指一个对象中使用了另一个对象。

1、依赖关系(Dependency)

依赖关系是对象之间最弱的一种关联方式,是一种临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。

例如:

class A {    public B method(C c, D d) {        E e = new E();        // ...        B b = new B();        // ...        return b;    }}

这个代码结构中,表示A类依赖了B、C、D、E类。

2、关联关系(Association)

关联关系是对象之间的引用关系,比如客户类与订单类之间的关系。这种关系通常使用类的属性来表达。关联可以有方向,即导航。一般不作说明的时候,导航是双向的,不需要在线上标出箭头。大部分情况下导航是单向的,可以加一个箭头表示。

例如:

class Employee {    private int eid;    // 员工编号    private String name; // 员工姓名    private Computer computer; // 员工所使用的电脑    // ...}class Computer {}class Husband {    private Wife wife;}class Wife {    private Husband husband;}

关联表示类之间的“持久”关系,这种关系一般表示一种重要的业务之间的关系,需要保存的,或者说需要“持久化”的,或者说需要保存到数据库中的。另外,依赖表示类之间的是一种“临时、短暂”关系,这种关系是不需要保存的。

3、聚合(Aggregation)

聚合(关联关系的一种):表示has-a的关系。与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。

例如:

class Car {    private Engine engine; // 引擎    private Tyre[] tyres; // 轮胎}

关联和聚集(聚合)的区别

关联关系所涉及的两个对象是处于同一个层次上的。比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。

聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚合关系,因为主板是电脑的组成部分。

4、组合(Composite)

组合关系表示对象A包含对象B,对象B离开对象A没有实际意义。是一种更强的关联关系。组合类负责被组合类的生命周期。也使用属性表达组合关系,是关联关系的一种,是比聚合关系强的关系。

例如:

class Window {    private Menu menu; // 菜单    private Slider slider; // 滑动条    private Panel panel; // 工作区}

5、继承(Generalization,又称为泛化,is-a 的关系)

类与类的继承关系,类与接口的实现关系。例如:父与子、动物与人、植物与树。

继承关系是类与类之间的关系,是一种is-a关系。它表示一个类是另一个类的扩展或子类。

通过继承关系,可以将代码复用,并且可以在运行时使用多态。继承关系通常用于表示“是一种”的关系,比如“人是一种动物”,“汽车是一种车”。

转载地址:http://iini.baihongyu.com/

你可能感兴趣的文章
OpenCV与AI深度学习 | 初学者指南 -- 什么是迁移学习?
查看>>
OpenCV与AI深度学习 | 十分钟掌握Pytorch搭建神经网络的流程
查看>>
OpenCV与AI深度学习 | 基于GAN的零缺陷样本产品表面缺陷检测
查看>>
OpenCV与AI深度学习 | 基于OpenCV和深度学习预测年龄和性别
查看>>
OpenCV与AI深度学习 | 基于OpenCV实现模糊检测 / 自动对焦
查看>>
OpenCV与AI深度学习 | 基于Python和OpenCV将图像转为ASCII艺术效果
查看>>
OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
查看>>
OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
查看>>
OpenCV与AI深度学习 | 基于YOLO11的车体部件检测与分割
查看>>
OpenCV与AI深度学习 | 基于YoloV11自定义数据集实现车辆事故检测(有源码,建议收藏!)
查看>>
OpenCV与AI深度学习 | 基于YOLOv8 + BotSORT实现球员和足球检测与跟踪 (步骤 + 源码)
查看>>
OpenCV与AI深度学习 | 基于YOLOv8实现高级目标检测和区域计数
查看>>
VS2003 Front Page Server Extension
查看>>
OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
查看>>
OpenCV与AI深度学习 | 基于YoloV8的药丸/片剂类型识别
查看>>
OpenCV与AI深度学习 | 基于YOLO和EasyOCR从视频中识别车牌
查看>>
OpenCV与AI深度学习 | 基于图像处理的火焰检测算法(颜色+边缘)
查看>>
OpenCV与AI深度学习 | 基于拉普拉斯金字塔实现图像融合(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 基于改进YOLOv8的景区行人检测算法
查看>>
OpenCV与AI深度学习 | 基于机器视觉的磁瓦表面缺陷检测方案
查看>>