4

ゲームを再現する課題があります。文字のリストを実装する必要があります。たとえばCharacter、キャラクターの名前だけを持つクラスがあります。

Warrior次に、ゲームの敵となるキャラクターを作成する必要があります。このように継承を実装する必要がありますか:Character --> Enemy --> Warrior基本的に敵のクラスに属性がない場合。何よりも分類です。

anEnemyと aWarriorを同じクラスで定義する方法WarriorEnemyありCharacterますか? 敵は増えますが、1つだけWarriorです。

ありがとう

4

2 に答える 2

4

敵のクラスは基本的に無属性だとおっしゃっています。

現在はそうですが、Enemy クラスと継承を使用する理由の 1 つは、現時点で (ほぼ) 透過的な柔軟性を組み込むことで、コードの未知の将来のニーズをより適切に予測できることです。

Enemy クラスのタイプを作成することもできますが、敵を追加するにつれて、このソリューションでは、タイプをチェックするためのswitchステートメントと句の形式で、より多くのコードが必要になる場合があります。if

于 2012-11-09T17:56:04.693 に答える
2

すべてのウォリアーが敵であり、敵のすべての特性を持っている場合、そうです、ウォリアーを敵のサブクラスにすることは理にかなっています。

一部のコメントが指摘しているように、複雑な継承チェーンを持つことは問題であり、貧弱なプログラム アーキテクチャの兆候ではありません。

敵と戦士を同じクラスで定義する方法はありますか?

これまで説明してきた継承チェーンでは、ウォリアーはキャラクターのタイプである敵のタイプです。

クラスとそれを定義するファイルを混同している可能性があると思います。2 つの型を持つクラスを定義することはできません。単一の .h 内で複数のクラスを定義し、単一の cpp ファイル内でそれらを実装できますが、スタイルに関しては、単一の .h/.cpp ペアで単一のクラスを定義することをお勧めします。

于 2012-11-09T17:56:45.543 に答える