问题标签 [object-composition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
447 浏览

c# - C#中是否有方法继承

我想知道是否有像方法继承而不是整个类继承这样的特性,让我详细说明我要解释的内容:

我知道这看起来很奇怪,但我正在阅读如何在对象组合模式中进行委托,并且出于某种原因我认为这种模式。

0 投票
4 回答
4833 浏览

oop - 继承和组合的区别

我已经提取了继承和组合之间的以下差异。我想知道后端对象创建延迟是什么意思?请找出下面的区别。

组合允许您延迟后端对象的创建,直到(除非)需要它们,以及在前端对象的整个生命周期内动态更改后端对象。通过继承,您可以在创建子类后立即在子类对象图像中获得超类的图像,并且在子类的整个生命周期中它仍然是子类对象的一部分

0 投票
5 回答
3192 浏览

c++ - 对象组合促进代码重用。(T/F,为什么)

我正在为考试而学习,并试图弄清楚这个问题。具体问题是“继承和对象组合都促进代码重用。(T/F)”,但我相信我理解问题的继承部分。

我相信继承促进了代码重用,因为类似的方法可以放在抽象基类中,这样类似的方法就不必在多个子类中以相同的方式实现。例如,如果你有三种形状,并且每种形状的方法“getName”只是返回一个数据成员“_name”,那么当它可以在抽象基中实现一次时,为什么要在每个子类中重新实现这个方法类“形状”。

但是,我对对象组合的最佳理解是对象/类之间的“具有”关系。例如,一个学生有一所学校,一个学校有许多学生。这可以看作是对象组合,因为没有彼此它们就不能真正存在(没有任何学生的学校不完全是一所学校,是吗?等等)。但是我认为这两个对象“拥有”彼此作为数据成员不会促进代码重用。

有什么帮助吗?谢谢!

0 投票
2 回答
206 浏览

asp.net-mvc - 在 ASP.NET MVC3 项目中组合多态对象

我的问题的本质是如何使用 MVC3 和 Ninject 以合理的方式组合这些对象(见下文)(尽管我不确定 DI 是否应该在解决方案中发挥作用)。我不能透露我的项目的真实细节,但这里有一个近似值来说明问题/问题。VB 或 C# 中的答案表示赞赏!

我有几种不同的产品,它们的特性各不相同,但它们都需要在目录中表示。每个产品类在我的数据库中都有一个对应的表。目录条目具有一些特定于作为目录条目的属性,因此具有自己的表。我已经为目录条目定义了一个接口,其意图是调用 DescriptionText 属性将根据底层的具体类型给我非常不同的结果。

鉴于 DescriptionText 是一个表示层问题,我不想在我的产品类中实现 IATAlogEntry 接口。相反,我想将其委托给某种格式化程序。

在某处的控制器中会有这样的代码:

在某处的视图中会有这样的代码:

所以问题是构造函数是什么样的?如何设置它以便在正确的位置实例化适当的对象。似乎泛型或 DI 可以帮助解决这个问题,但我似乎有一个心理障碍。我想出的唯一想法是将 ProductType 属性添加到 IATAlogEntry ,然后实现这样的工厂:

恕我直言,除了必须为每个出现的新产品类别更改工厂外,我并没有真正从这段代码中得到任何气味。然而,我的直觉告诉我这是旧的做事方式,现在 DI 和/或泛型可以做得更好。非常感谢有关如何处理此问题的建议(以及有关更好标题的建议......)

0 投票
1 回答
1115 浏览

c# - c# 对象组合

我有一个名为 LetterRect 的类,其中两个字段的类型为 LetterSquare。例如:

我希望能够通过 square1 和 square2 获得对 LetterRect 对象的引用。我最初的解决方案是给 LetterRect 和对应的 square1 和 square2 相同的 IdentificationNumber 和一个长整数。但是,有没有办法在没有识别号的情况下访问 LetterRect?绝对不存在继承关系,它是一种组合,或“具有”关系。如果我没记错的话,Java 中有一个内部类的概念,其中内部类可以直接引用它所属的类的实例。那么,有没有更好的方法通过 square1 和 square2 来获取对 LetterRect 对象的引用呢?

感谢所有的帮助!

0 投票
2 回答
304 浏览

vb.net - vb.net - 继承类的对象聚合

我正在玩几个对象的组合。

我有两个课程(笔记和任务)。Task 类派生自 Note 类,因为任务是扩展的注释。

每个便笺都有一个属性Property Child as list (of note),因为可以将便笺或任务添加到现有便笺或任务中(因此,此“子”便笺可能是任务或便笺)

IE。

最后的子笔记对象实际上是一个任务,我怎样才能使这个聚合工作?我不在乎它是笔记还是任务,但我想释放基类或扩展类的功能。

我的直接想法是每个对象都需要有一个任务列表和一个笔记列表,但感觉可能有一个更优雅的解决方案。

有人对此有任何想法吗?

0 投票
8 回答
19500 浏览

python - 如何使python类支持项目分配?

在查看Think Complexity中的一些代码时,我注意到他们的Graph类为自己赋值。我从该类中复制了一些重要的行并编写了一个示例类,该类ObjectChild在这种行为上失败了。

我确信不同的内置类型都有自己的使用方式,但我不确定这是否应该尝试构建到我的类中。有可能吗,怎么做?这是我不应该打扰的事情,而是依靠简单的构图,例如self.l = [1, 2, 3]?是否应该在内置类型之外避免它?

我问是因为有人告诉我“你几乎不应该从内置的 python 集合继承”;我不愿限制自己的建议。

澄清一下,我知道这ObjectChild不会“工作”,我可以很容易地让它“工作”,但我对这些内置类型的内部工作原理感到好奇,这使得它们的界面不同于object.

0 投票
3 回答
187 浏览

c++ - 对象组合 - 无法访问对象属性

嗨,我对对象组合有疑问。CInvoice 类内部需要有一个 CCustomer 对象,所以我创建了一个需要客户的构造函数。

在 Invoice.h 文件中有一行:

提到的构造函数如下所示:

当我尝试在发票上打印客户姓名时,它会返回一些随机字符

我是否正确实现了对象组合?

另外我有一个类 CInvoiceElement 并且有一个关于它的问题。我应该在不创建发票对象的情况下创建发票元素还是相反?哪个更符合逻辑?

0 投票
1 回答
1192 浏览

oracle - 是否可以在 PL/SQL 中使用对象组合?

我试图弄清楚如何使用 pl/sql 对象类型来实现对象组合。这是我的超级简单的例子。

您可以看到那个人(所有者对象)包含学生对象。您还可以看到学生包含一个人员对象(否则,学生将无权访问人员的数据......对吗?)

然而,PL/SQL 不喜欢这些对象相互引用并引发以下错误:

所以,如果有人能给我建议,让我通过作文让学生成为人的一部分,而且让学生能够分辨出它属于哪个人对象,我将不胜感激。

谢谢。

0 投票
2 回答
1263 浏览

oracle - PL/SQL 对象组合:对象实例化/构造函数的问题

这是对是否可以在 PL/SQL 中使用对象组合的后续问题

该问题解决了如何在 PL/SQL 中创建相互依赖的对象类型(即每个对象的一个​​属性是对另一个对象的引用)。

我遇到的下一个问题与对象构造函数有关。这是代码(从逻辑上讲,学生存在于人体内)。此外,只是为了在评论中排除这一点,使用继承不是我的选择。

人物对象

学生对象

除了在 PERSON 构造函数中实例化 PERSON 中的 STUDENT 对象的以下行之外,此代码将编译而不会出现任何错误:

这会引发以下错误:

所以,亲爱的朋友们,我再次寻求你们的帮助。我猜测有一个附加参数被隐式传递给 STUDENT 构造函数,但这只是一个猜测。

谢谢。