前提・実現したいこと
下記の実行したいのですが、
CommandManagerクラスの定義の仕方がわかりません。
コマンドを追加する・コマンドを削除するメソッドとはどのように定義したらよいのでしょうか?
また、それを呼び出すにはどのように記述すればよいのでしょうか?
実行内容
アイテムコマンド、ゲームコマンドクラスを作る。
各コマンドクラスは、コマンドクラスを継承する。
各コマンドの管理を行うコマンドマネージャークラスを作る。
コマンドクラスは、executeメソッドを「抽象メソッド」として定義。
各コマンドクラスでexecuteメソッドを実装し、何かしらのメッセージを表示。
コマンドマネージャークラスでは、コマンドを管理したいので以下のメソッドを作る。
・コマンドを追加が出来るメソッド
・コマンドを削除が出来るメソッド
abstract class Command { abstract public function execute(); } class ItemCommand extends Command { function __construct(){ $this->execute(); } public function execute() { echo "hello"; } } class GameCommand extends Command { function __construct(){ $this->execute(); } public function execute() { echo "happy"; } } class CommandManager { public $commands; function add() { } function remove() { } } $command = new ItemCommand(); $command = new GameCommand();
ここに問題に対して試したことを記載してください。
「コマンドを管理する」というのがどのようにしたらよいかわかりません。
PHPについてかなりの初心者のため、
よくわからないまま書いていることが多いため、教えていただけますと助かります
これは課題か何かでしょうか?
課題であれば非推奨質問になります。
https://teratail.com/help/avoid-asking
質問はタイトルにある
>ポリモーフィズムの考え方・書き方
ですよね。
で質問内容は
「CommandManagerクラスの定義の仕方」
とされています。
ポリモーフィズムに言及されたいのでしたらもう少し質問内容を工夫されたほうが良いかと思いますし、違うのでしたらタイトルを調整されたほうが良いです。
また、コードを提示するのであればマークダウン利用してください。
回答依頼は良いのですが、
丸投げに近く、課題っぽい質問には応えかねます。
質問内容についてわかりづらく申し訳ございません。
「コマンドを管理する」はどこから出てきた要件なのでしょうか。
そもそもここで使っている「コマンド」はどういう概念なのでしょうか。
CommandManagerで定義したメソッドを
GameCommandやItemComanndでも使用できるようにするために、
CommandManagerでそれらのメソッドを管理し、実行したいと思っています。
その場合にポリモーフィズムの考え方が使用できるのではないかと思いました。
ただ、自分自身で、ポリモーフィズムの理解ができていないため、
質問の意図が伝わらずすみません。。
ポリモーフィズムの理解を深めたいのでしたら
もっと簡単なコードから進めたほうが良いと思います。
https://qiita.com/ritukiii/items/a1979c3bcdcea9454d53#%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0%E5%A4%9A%E6%A7%98%E6%80%A7
参考になる情報をいただきありがとうございます。
まずいただいたものを理解してから、上記再度試して見たいと思います
ありがとうございました
やりたいのはDIなんじゃないか説
回答2件
あなたの回答
tips
プレビュー