汎化 ⇔ 特化
ここまで勉強すると、設計の方針は2種類の方向性が出てくる。
問題1
汎化+オーバーライドで、RPGのキャラを作ってみよう!
まずはベースクラスを作ろう。
ゲームキャラのベースクラス\\ cCharBase 属性(メンバ変数) ・名前(string) ・ライフ(int) ・攻撃力 (int) ・防御力 (int) ・職業ID(enum? int?) ------------------------- 機能(メンバ関数:この時点ではすべて純粋仮想関数で宣言) ・名乗る(自己紹介) 表示のみ ・戦う(基本攻撃) ・防御(身を守る) ・逃げる(逃亡) setter getter constructorも欲しいね ------------------------- 問題2\\ 派生で、以下のクラスを作る それぞれ、基本機能のほかに ・必要な属性(まりょく、MP?) ・特殊攻撃(職業別攻撃)を追加 →戦士(cWarrior) ・特殊攻撃はない、戦うのコマンドが以上に強い →魔法使い(cWizard) ・戦うは弱い、魔法が攻撃のメイン ・魔法(ターゲットを魔力で攻撃) →僧侶(cCleric) ・ある程度戦えるけど、戦士ほどではない ・魔法(ターゲットを魔力で回復) →盗賊(cThief) ・戦うのは弱い ・ぬすむ(たーげーっとから金を盗む) 問題3 それぞれのインスタンスを作って、行動させてみよう。\\ インスタンス作成⇒メンバ関数呼び出し