聚合、组合、关联、直接关联

2024-04-08

我正在复习面向对象编程方面的知识。在类之间的关系主题下,我遇到了一些对我来说有点模糊的关系。

我知道依赖项“uses-a”和继承“is-a”,但我对聚合、组合、关联和直接关联有点不熟悉;另外,其中哪一个是“has-a”关系。有些可以与关联互换使用聚合。

什么是直接关联?另外,什么是组合?在 UML 图中,表示它们的箭头是不同的。如果您能为我解决这些问题,我将非常感激。


请注意,对“关联”定义有不同的解释。我的以下观点很大程度上基于您在 Oracle 认证书籍和学习指南中读到的内容。

临时协会

A usage 在方法内部、其签名或作为返回值。它实际上并不是对特定对象的引用。

示例:我把车停在车库里。

作文协会

一个所谓的“牢固的关系": 链接对象的实例化通常很困难 编码在对象的构造函数内。不能从以下位置设置 物体之外。 (作品cannot成为多对多 关系。)

示例:房子是由石头组成的。

直接关联

这是一个 ”关系薄弱”。对象可以独立存在,并且通常有设置器或其他方式来注入依赖对象。

示例:汽车可以载乘客。

聚合关联

与直接关联非常相似。这也是一个“关系薄弱“具有独立的对象。然而,这里关联的对象是包含对象的关键部分。

示例:汽车应该有轮胎。

注意:直接关联和聚合关联通常统称为“关联”。差异相当微妙。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

聚合、组合、关联、直接关联 的相关文章

  • 我缺少什么:可以使用多个参数进行函数组合吗?

    我了解 F 中函数组合的基础知识 例如所述here http blogs msdn com b chrsmith archive 2008 06 14 function composition aspx 不过 也许我错过了一些东西 这 gt
  • 错误 - 仅返回类型不同的函数不能重载。由 小码哥发布于

    我正在尝试创建一个图书馆管理系统 我收到一些我不明白的错误 我在 Mac 操作系统中使用 Eclipse 我的主要代码是 include
  • 我应该如何使用 Perl URI 类?

    我需要在 Perl 程序中处理一些 HTTP URL 但我怀疑应该如何处理URI https metacpan org module URI类帮助我 特别是 我想使用URI用于解析相对 URL 并获取其组件的类 然而 问题是 我需要一个可以
  • Python 对象属性 - 访问方法

    假设我有一个具有某些属性的类 在 Pythonic OOP 中 如何访问这些属性是最好的 就像obj attr 或者也许编写 get 访问器 此类事物可接受的命名风格是什么 Edit 您能否详细说明使用单下划线或双前导下划线命名属性的最佳实
  • 如何重定向Python中包含的类的所有方法?

    如何实现组合模式 我有课Container它有一个属性对象Contained 我想重定向 允许访问所有方法Contained班级来自Container只需调用my container some contained method 我是否以正确
  • 为什么json序列化器不符合多态性?

    我在 NET 4 5 Windows 应用商店应用程序中使用库存 JSON 序列化器 System Runtime Serialization Json DataContractJsonSerializer 我有一个由 API 提供商提供的
  • 不在对象上下文中时使用 $this php

    我刚刚开始学习 php 中的 OOPS 我写了一个简单的程序来实现继承 当不在对象上下文中时 我收到 this 的致命错误 谁能解释一下这个错误 它是什么意思 这是我的代码
  • ASP.NET/ADO.NET:处理 .NET 对象内的许多数据库连接?

    我们有一个 NET 对象 它对数据库进行大量读 写操作 在该对象 或使用它的 ASP 页 的整个生命周期中 它可能会通过查询 更新来访问数据库 1 到 10 次 它不是在每次对象需要访问数据库时打开和关闭数据库连接 而是只是在实例化期间打开
  • 如何让枚举存储每个条目的额外信息

    我有一组包含相关信息的项目 这些项目是由我 程序员 定义的 用户不需要更改它们 它们永远不需要根据配置进行更改 并且它们唯一可能更改的时间是在我的应用程序的未来版本中 我事先知道这些项目应该有多少 以及它们的确切数据是什么 枚举是一种很棒的
  • Mootools 使用“extend”方法扩展“Function”类,导致 jQuery 无法使用

    Mootools 扩展了 Function 类 并在其中添加了一个名为 extend 的新方法 现在 jQuery 尝试使用 jQuery prototype extend 添加 扩展 功能 然而 由于 extend 已经是 jQuery
  • 界面与组合

    我想我理解接口和抽象之间的区别 抽象设置默认行为 在纯抽象的情况下 行为需要由派生类设置 接口是您所需要的 无需基类的开销 那么接口相对于组合的优势是什么 我能想到的唯一优点是在基类中使用受保护的字段 我缺少什么 你的标题没有意义 你的解释
  • 如何从类外部更改公共 R6 类方法?

    我希望能够在我的 R6 类中重新定义公共方法 以便它根据该类保存的数据类型进行更改 如下所示 library R6 Simple lt R6Class Simple public list dt mtcars my print functi
  • 在 Typescript 中从基类创建子类的新实例[重复]

    这个问题在这里已经有答案了 我想创建新实例Child班级来自Base类方法 这有点复杂 但我会尽力解释 这是一个例子 class Base constructor clone Here i want to create new instan
  • 如何获取MATLAB句柄对象的ID?

    当我尝试使用时出现问题MATLAB 句柄对象 http www mathworks com help techdoc ref handle html作为关键值MATLAB 容器 Map http www mathworks com help
  • 如何使组合键唯一?

    I am making a database of students in one school Here is what I have so far 如果您不喜欢阅读 请跳至 简而言之 部分 问题是我对这个设计并不满意 我想要的组合gra
  • 工厂模式和策略模式

    我需要创建一个类来负责结果集处理 但可能会发生应该使用不同的算法来处理该结果集的情况 我知道以下选项 1 使用策略模式 伪代码如下 interface Strategy processResultSet ResultSet rs class
  • 树的递归和非递归过程

    我们知道树是递归数据结构 我们在编写树的过程中使用递归 例如BST的删除方法等 递归的好处是 我们的程序变得非常小 例如中序遍历的代码只有4或5行 而不是非递归程序 虽然会很长 但从理解的角度来看 不像递归程序那么复杂 这就是为什么我讨厌递
  • 在javascript中访问函数内的实例变量?

    如何以最简单的方式访问函数内的实例变量 function MyObject Instance variables this handler Methods this enableHandler function var button doc
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 接口中的构造方法

    接口中的构造方法不好吗 为什么人们认为有人想要实例化接口 我们想要做的是强制实现者实现构造函数 就像其他接口方法一样 接口就像一个合同 假设我有一个接口 Queue 并且我想确保实现者创建一个带有一个参数的构造函数 该构造函数创建一个单例队

随机推荐

  • 如果我的分组变量是一个因素,如何生成按组汇总统计数据?

    假设我想获得数据集的一些汇总统计数据mtcars 基础 R 版本 2 12 1 的一部分 下面 我根据汽车的发动机气缸数对汽车进行分组 并取其余变量的每组平均值mtcars gt str mtcars data frame 32 obs o
  • KMeans 是否会在 sklearn 中自动标准化特征

    我想知道 KMeans 是否在进行聚类之前自动标准化特征 似乎没有选项可以提供输入来要求标准化 其中之一是区分数据预处理 标准化 分箱 加权等 和机器学习算法应用 使用sklearn preprocessing http scikit le
  • 在sequelize.js 上查询“paranoid”表时如何包含已删除的元素?

    我希望我的应用程序上以前存在的用户已使用偏执模式删除 所以现在它的字段deletedAt is NOT null 以便能够使用同一电子邮件再次注册 因此 当 API 注意到使用以前使用过的电子邮件创建用户时 它会设置为null the de
  • 使轮廓图对于 k 均值清晰易读

    我正在尝试为 k 均值聚类制作轮廓图 但条形几乎看不见 我怎样才能使这个图表清晰易读 示例代码 require cluster X lt EuStockMarkets kmm lt kmeans X 8 D lt daisy X plot
  • jQuery .animate() 回调无限循环

    一个简单的问题 为什么我可以这样做 var start function element animate 5000 linear start 但不是这个 function start element animate 5000 linear
  • Spark 窗口函数需要 HiveContext?

    我在这个博客中尝试了 Spark 上的窗口函数的一个示例http xinhstechblog blogspot in 2016 04 spark window functions for dataframes html http xinhs
  • 使用 Ubuntu 在虚拟机上安装 Kubernetes

    我正在尝试在 Ubuntu 16 04 VM 上安装 Kubernetes 我尝试了这个https kubernetes io docs getting started guides kubeadm https kubernetes io
  • json/ld ArticleBody 值内的 Html 标签?

    如果我想创建一个Article https schema org Article schema org 类型使用 json ld 格式 我是否必须将 html 标签放入articleBody的价值 因为我发现如果我使用微观数据 结构化数据工
  • getInputStream() 上的 java.io.FileNotFoundException

    我正在尝试从 URL 获取InputStream 连接响应代码是200 但我遇到了例外FileNotFoundException当我尝试 getInputStream 时 这是我的代码 url new URL http connection
  • 未找到“Google\Cloud\Storage\StorageClient”类

    use Google Cloud Storage StorageClient require DIR vendor autoload php storage new StorageClient 这是我的代码 这里我在 Windows 上安装
  • Keras 看到我的 GPU,但在训练神经网络时不使用它

    Keras TensorFlow 不使用我的 GPU 为了尝试让我的GPU与tensorflow一起工作 我通过pip安装了tensorflow gpu 我在Windows上使用Anaconda 我有nvidia 1080ti print
  • 什么是 RMI 注册表

    什么是 RMI 注册表 它有什么作用 本质上 RMI 注册表是服务器注册其提供的服务的地方 也是客户端查询这些服务的地方 看Java RMI简介 http www javacoffeebreak com articles javarmi j
  • JEdi​​torPane 的 html 中的插入符位置

    JEdi torPane 的 getCaretPosition 方法提供 html 控件的仅文本部分的索引 是否有可能将索引放入html文本中 更具体地说 假设我有一个 html 文本 其中 表示插入符号位置 abcd img src 1
  • 使用 OOP 的闭包方法时如何实现受保护的成员?

    现在我正在使用实施 OOP 的闭包 http lua users org wiki ObjectOrientationClosureApproach在卢阿 下面是一个简短的示例 我的问题发生在尝试实施时stronger heal insid
  • 为什么选择 Eigen 作为 TensorFlow? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 TensorFlow白皮书提到使用了Eigen 是否有关于如何选择 Eigen 的公开解释 它们是在 T
  • 为 Atom feed 创建 XSL

    我正在创建一个小的自定义 XSL 文件来呈现 RSS 提要 内容是基本的 如下 除非源 XML 在提要定义中包含行 xmlns http www w3 org 2005 Atom 否则此方法可以正常工作 我该如何解决这个问题 我对命名空间不
  • 如何让不和谐机器人添加你为好友

    我正在创建一个不和谐机器人 我想将其添加到 DM 组中 这样我就可以保持较低的服务器级别 但是 您无法将不是朋友的人添加到群组 DM 中 有没有办法让不和谐机器人接受好友请求 不可能 机器人帐户无权使用 Discord 的关系端点 这意味着
  • 领事注销“失败”服务

    我有 Consul 在 Consul v0 5 2 版本上运行 服务在 Mesos 中运行 服务不断从一台服务器转移到另一台服务器 有没有办法取消领事中处于 失败 状态的服务 我可以使用此curl 获取处于失败状态的服务列表 curl ht
  • 具有多个计数子查询的 SELECT 查询

    我刚刚为报告编写了这个查询 但我最初编写它时没有在每个子查询上使用日期范围过滤器 但这没有用 所以我将它添加到每个子查询中 这很有效 但我真的不喜欢每次都重复它 是否有语法可以更简单地完成同样的事情 SELECT Count r id AS
  • 聚合、组合、关联、直接关联

    我正在复习面向对象编程方面的知识 在类之间的关系主题下 我遇到了一些对我来说有点模糊的关系 我知道依赖项 uses a 和继承 is a 但我对聚合 组合 关联和直接关联有点不熟悉 另外 其中哪一个是 has a 关系 有些可以与关联互换使