はいっ今回はですね
いい加減ネタも尽きてきて
オブジェクト指向をカレー作りに例えて雑に!!!!!解釈したものを!どっかどっかと!記述しようかと!思います!
(自分の頭の中整理・言語化が主な目的です。)
前提
オブジェクト指向というのはあくまで「概念」であって、特に正解は無いんじゃないかなと思ってます。
人によって捉え方はマチマチなので、この記事も
「この人はこういう風に捉えてるんだな」・「こういう考え方も確かにできるね」と思っていただけると。
間違ってたら優しくコメントください。
もう一度復唱しましょう、はい、一緒に。せーの。
や さ し く
では、いっていみよう
誰向け
私(初心者)向けです。
もし勘違いがあったら優しく教えてください。
オブジェクト
オブジェクトというのは「物」と捉えてください。とにかく「物」です。
今回はカレーの材料としましょう。
とすると、以下がオブジェクトになるでしょう。
- 豚バラブロック
- にんじん
- 玉ねぎ
- じゃがいも
- カレールー
- 水
- サラダ油
- 米
ここでは上記を定義しましたが、定義によってはカレーライスもオブジェクトになったりします。
とりあえず、「物」です。
クラス
ここではクラスを「役割ごとに分類したもの」とします。
今回は「カレーができあがるまでの工程の1つ1つ」を役割と定義し、分類します。
そうすると
- 具材を揃えるクラス
- 調味料を揃えるクラス
- 道具を揃えるクラス
- 調理クラス
- 盛り付けクラス
ざっとこんなもんでしょうか。
こんな感じで雑に分類します。
(実務では雑に分類しちゃだめですよ!)
プロパティ
プロパティはオブジェクトの説明です。
今回で言うところの「材料の説明」になります。
class にんじん {
色 = オレンジ色;
味 = 少し甘い;
産地 = 国産;
量 = 1本;
}
メソッド
メソッドは、実際の命令(function)に値するかと思います。
具体的な動作(何をどうするか)を指定し、カレーを作っていきます。
class 調理 {
function 野菜を切る {
具材を揃えるクラス呼び出して切る
}
function 具材を炒める {
具材を揃えるクラスを呼び出して切る
}
function 煮込む {
水を入れてカレールーを入れて20分煮込む
}
}
class 盛り付け {
function しゃもじを取り出す {
しゃもじ出す
}
function ルーをごはんにかける {
調理クラスを呼び出してご飯にかける
}
}
盛り付け();
最後に盛り付けてカレーライスの完成です。
おまけ?インスタンス
カレーが1週間とか続いたらしんどいと思うんです。
だから、カレールーを再利用しましょう。
ということで、インスタンス(オブジェクトもメソッドも)で再利用します。
カレーうどんでも作りましょうか。
new(カレーうどん).調理 {
function カレーうどん作る {
調理クラスを呼び出し、だし汁と麺追加
}
}
結局何が言いたいのか
今回は雑of雑にオブジェクト指向を紹介しました。
言いたいことは3つ。
- 定義や分類の仕方はまちまち。これが正解でも不正解でも無いと思ってます。
- オブジェクト指向は使い回しや再利用できて便利。
- 優しくして
結局は実際にDB設計であったりコードに落とし込んで実践的にやったほうが
なるほどなとなると思います。文章だけではなかなか難しいです。
参考URL
以下のURLを参考に書かせていただきました!ありがとうございます。