2013-03-24 58 views
0

我正在製作一個學習國際象棋開局,陷阱和其他相關事情的程序。它有一個MoveSequence類,它基本上是一個來自類ChessPosition的對象的有序列表。我還有一個班級ChessOpening,它有一系列動作和一個名字,一個ECO代碼(國際象棋開放分類系統),可能還有一些東西。我應該在類中包含另一個對象還是另一個類的子類?是或是否?

我是否應該將ChessOpening作爲MoveSequence的子類實現,還是應該只包含MoveSequence對象?同一個問題將適用於ChessTrap類。

不要以爲這個問題太重要了,我在這個簡單的問題中選擇了什麼。但我想學習這些東西,所以我想知道是否有一些原則或經驗法則,在做出這樣的決定時應該考慮。

+0

沒錯。謝謝。試圖搜索,但沒有使用正確的搜索條件(繼承,組合) – 2013-03-24 14:46:41

回答

0

我的0.02 $價值:

如果可能的子類,基本上不共享的屬性和它的超類的方法所有,我開始懷疑。

重寫方法來更改行爲或添加新的屬性和方法是正常的。但是,當某些超類屬性/方法不適用於子類時,如果碰到這種尷尬,它會令人毛骨悚然。 (你做什麼,只是忽略無效/不適當的部分?希望沒有人給它們打過電話?如果它們被使用,將它們提出並提出錯誤)

如果xxx不是真的是yyy,也許xxx和yyy都是zzz的。 (或者,如果他們只是有着共同的行爲,也許創建一個模塊,包括,這是一個標準的Ruby/Rails的做法。)

一個真正的計算機科學家可以有一個更簡潔,明確的答案......

相關問題