Class 类应该包含另一个对象还是另一个类的子类?已经或正在?

Class 类应该包含另一个对象还是另一个类的子类?已经或正在?,class,subclass,hierarchy,Class,Subclass,Hierarchy,我正在做一个程序来研究国际象棋的开口、陷阱和其他相关的东西。它有一个类MoveSequence,它基本上是一个类ChessPosition中对象的有序列表。我还有一个类ChessOpening,它有一系列的动作和一个名字,一个生态代码(国际象棋开场分类系统),可能还有更多的东西 我应该将ChessOpening实现为MoveSequence的一个子类,还是应该只包含一个MoveSequence对象?同样的问题也适用于类棋盘 在这个简单的问题上,我选择什么并不重要。但我想学这些东西,所以我想知道在

我正在做一个程序来研究国际象棋的开口、陷阱和其他相关的东西。它有一个类MoveSequence,它基本上是一个类ChessPosition中对象的有序列表。我还有一个类ChessOpening,它有一系列的动作和一个名字,一个生态代码(国际象棋开场分类系统),可能还有更多的东西

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

在这个简单的问题上,我选择什么并不重要。但我想学这些东西,所以我想知道在做出这样的决定时,是否应该有一些原则或经验法则。< / P> <我的0.02美元的价值:

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

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

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


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

是的。非常感谢。尝试搜索,但未使用正确的搜索词(继承、组合)