我应该包含另一个对象或另一个类的子类吗?有还是?

时间:2013-03-24 14:34:15

标签: class subclass hierarchy

我正在制作一个学习国际象棋开局,陷阱和其他相关事物的计划。它有一个类MoveSequence,它基本上是一个ChessPosition类的对象的有序列表。我还有一个ChessOpening类,它有一系列动作和一个名字,一个ECO代码(国际象棋开放分类系统),可能还有一些东西。

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

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

1 个答案:

答案 0 :(得分:0)

我的0.02美元价值:

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

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

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

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