【问题标题】:Should I class contain another object or subclass another class? Has or Is? [duplicate]我应该类包含另一个对象还是子类另一个类?有还是有? [复制]
【发布时间】:2013-03-24 14:34:15
【问题描述】:

我正在制作一个程序来研究国际象棋开局、陷阱和其他相关事物。它有一个类 MoveSequence,它基本上是来自 ChessPosition 类的对象的有序列表。我还有一个 ChessOpening 类,它有一系列移动和一个名称、一个 ECO 代码(国际象棋开局分类系统)以及可能更多的东西。

我应该将 ChessOpening 实现为 MoveSequence 的子类,还是应该只包含一个 MoveSequence 对象?同样的问题也适用于 ChessTrap 类。

不要认为我在这个简单的问题中选择什么很重要。但是我想学习这些东西,所以我想知道在做出这样的决定时是否应该考虑一些原则或经验法则。

【问题讨论】:

  • 是的。谢谢你。尝试搜索,但没有使用正确的搜索词(继承、组合)

标签: class subclass hierarchy


【解决方案1】:

我的 0.02 美元价值:

如果一个可能的子类基本上不共享其父类的所有属性和方法,我开始怀疑。

重写方法来改变行为,或者添加新的属性和方法是正常的。但是,当某些超类属性/方法不适用于子类时,当您遇到这种尴尬时,它会变得令人毛骨悚然。 (那你会怎么做,只是忽略无效/不适当的部分?希望没有人调用它们?将它们存根并在使用它们时引发错误?)

如果 xxx 不是真正的 yyy,也许 xxx 和 yyy 都是 zzz。 (或者如果他们只是共享共同的行为,也许可以创建一个要包含的模块,这是标准的 Ruby/Rails 实践。)

真正的计算机科学家可能会有更简洁和确定的答案...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    相关资源
    最近更新 更多