问题标签 [polymorphism]

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 投票
3 回答
1279 浏览

c# - SQL Server 中多态树的数据架构和查询

在我的职业生涯中,我遇到过几次这个问题,并且从来没有对这个解决方案感到非常满意,并且在我在 ASP.Net MVC、C#、SQL Server 2008 中做的一个项目中再次遇到了这个问题:

想象一下,我有一个 Person 类型(类)。我还有扩展 Person 的类型 Mother 和 Father。父亲和母亲非常相似:他们都有一个名为“Children”的属性,它是一个 Person 类型的集合。“人”可以用基本的 Person 类、Mother 类或 Father 类来表示。从这个例子你可以看到我有继承(is-a)和关联(has-a)关系。

我想使用这些 OO 类型在 SQL Server 中构建和存储家谱。我想我想要这 3 张表:Person、Mother 和 Father。每个对象在 Person 中都有一个条目,如果合适的话,可能还有在 Mother 或 Father 中的条目(与 Person 有 FK 关系)。此外,我将需要一些人行横道表来存储母亲记录与任何子记录之间的关系,与父亲相同。

这听起来像是一个很好的存储策略吗?

你将如何有效地查询这个深度和广泛的家谱?

我被挂断的问题是在树中返回和给定节点的数据的多态性。如果这只是 Person 对象的树,我会使用Recursive Common Table Expression。但是对于任何给定节点,可能会返回 3 种不同形状的数据,我想将其映射到 C# 中的 3 种 OO 类型之一。我显然可以在 C# 或存储过程中进行递归,但我对过去此类解决方案的性能不太满意。另外,如何自然地插入记录?由于 SQL Server 中的 FK 关系强制,我过去总是必须以正确的顺序插入(人,然后是父亲或母亲)。

是否有一个框架可以为我处理这种类型的 ORM?

编辑:

为了清楚起见,我需要的解决方案是检索整个家谱以进行显示,并能够向家谱添加和编辑节点。我认为最好的解决方案是在一棵深树中的一个查询中执行此操作。我要问的是如何设计模式、存储和检索?

0 投票
9 回答
55913 浏览

c++ - 从基类调用虚函数

假设我们有:

g()将从哪个调用Base::f()Base::g()还是Derived::g()

谢谢...

0 投票
31 回答
94328 浏览

oop - 多态性 - 仅用两句话定义

我看过其他定义和解释,但没有一个能让我满意。我想看看是否有人可以在不使用任何代码或示例的情况下最多用两句话定义多态性。我不想听到“所以你有一个人/汽车/开罐器......”或者这个词是如何派生的(没有人对你知道 poly 和 morph 的含义印象深刻)。如果您非常了解什么是多态性并且对英语有很好的掌握,那么您应该能够用简短但密集的定义来回答这个问题。如果您的定义准确地定义了多态性,但过于密集以至于需要进行几次阅读,那么这正是我正在寻找的。

为什么只有两句话?因为定义简短而明智。解释很长,包含示例和代码。在此处查找解释(这些页面上的答案对我的问题不满意):

多态性 vs 覆盖 vs 重载
尝试尽可能简单地描述多态性

我为什么要问这个问题?因为我被问到同样的问题,我发现我无法给出一个令人满意的定义(按照我的标准,这是相当高的)。我想看看这个网站上是否有任何伟大的头脑可以做到这一点。

如果你真的不能做到两句话的要求(这是一个很难定义的主题),那么你再过去就可以了。这个想法是有一个定义,它实际上定义了多态性是什么,而不是解释它的作用或如何使用它(得到区别?)。

0 投票
5 回答
9678 浏览

django - 如何在 Django 中定义模型之间的多态关系?

我正在开发一个包含Offer模型的 Django 应用程序。实例Offer包含定价条件并指向产品定义。产品模型实际上是一个层次结构(我有一个Television模型,一个Camcorder模型等)。所以我希望Offer模型包含一个多态(或“通用”)关联来指向任何产品。

目前,我所发现的只是在应用程序中使用通用关联ContentTypes。这可能会,但我正在寻找替代品,如果有的话。

谢谢你的帮助。

(请每个答案一个解决方案)

0 投票
4 回答
757 浏览

c++ - 多态性是否值得增加耦合?

我正在编写一个简单的游戏来学习获得更多的 C++ 经验,并且我知道我觉得多态性几乎可以工作,但没有。在这个游戏中,Party通过 a 的移动相当线性Map,但偶尔会Fork在路上遇到 a。叉子(基本上)是一个std::vector<location*>.Original 我打算在Party成员函数中编写如下代码:

但我想知道以下的一些变体是否会更好:

Fork 实际上是从 Location 派生的,并重载了一些新功能getNext()。但是在后一种情况下,location(一个低级结构)必须是向用户呈现消息而不是“传递这个备份”的那个,我不觉得它是优雅的,因为它locationUserInterface::*.

你的意见?

0 投票
4 回答
5925 浏览

c++ - C ++中的双重调度/多方法

我有一个关于 C++ 双重调度的问题。在下面的代码中,我希望第二组的结果与第一组的结果相匹配。

我不知道实际类型(除非我尝试 dynamic_cast),但我知道该对象继承自 BaseClass 类型。实现这一目标的最有效(性能方面)的方法是什么?

在谷歌搜索了一段时间后,我发现了双重调度和 loki 多方法。我在 Shape 示例中遇到的问题是,在我的应用程序中,Processor 和 BaseClass 是完全独立的,并且没有可以相互调用的通用方法。其次,只有一个处理器(即没有任何东西继承自它)。

谢谢你的帮助。

0 投票
5 回答
371 浏览

c++ - 我可以简化一下吗?

addFunction 方法将函数添加到基类中的列表中,
然后可以枚举该列表以调用所有函数。

有什么方法可以简化(减少打字工作)添加功能?

0 投票
2 回答
356 浏览

c# - 在文件系统或程序集中嵌入资源中的文件的多态搜索

我正在学习在 C# 中使用多态性,但无法弄清楚这一点。我正在尝试编写一个类,该类允许我从存储库中获取过滤后的文件列表。

存储库可以是文件系统文件夹或任意已加载程序集中的嵌入式资源(但它不是当前正在执行的程序集)。

有什么建议么?

0 投票
1 回答
1364 浏览

perl - 如何确定一个对象是否在 Perl 中实现了一个方法?

我有一个实现两个(非正式)接口的多态对象数组。我希望能够通过以下方面的反射来区分它们:

也许这样的东西有效?:

我很难说出语法何时会尝试调用子例程以及何时返回子例程引用。我对包符号表 ATM 不太熟悉,我只是想破解一些东西。:-)

提前致谢!

0 投票
1 回答
1849 浏览

c++ - 在 C++ 中的多态方法上使用 std::for_each

使用 std::for_each 时,

如果我们有从 A 继承并实现 foo() 的类,并且我们持有指向 A 的指针向量,有没有办法在 foo() 上调用多态调用,而不是显式调用 A::foo()?注意:我不能使用 boost,只能使用标准 STL。

谢谢,盖尔