オブジェクト指向って説明が難しいですね。どうやったら理解できるか一晩考えたら、キャバクラに例えるのが面白そうなのでチャレンジしてみます。
何かに例えると分かりやすい
数年前SEOを恋愛に例えて、モテたきゃ出会い系や街コンでチャンスを増やすために金かけろと遠回しに言ったブログを書いたことがあります。
また合コンをABテストに例えてコンバージョン上げる方法をブログ化したこともありました。
一部の層からひんしゅくをかいつつ、概ね面白くて分かりやすかったとのご意見をいただきました。
オブジェクト指向プログラミングを何かに例えてみたい!
オブジェクト指向の説明はとても難しいです。よく車に例えた例を見ますが、とにかく頭に入ってこない。ポリモーフィズム(多様性)とか拒絶反応出ちゃう名前出すのやめて欲しい。
何に例えたら頭に入るんだろうと悩んでおりました。
実は激白すると以前、
ボーナスが出ない腹いせに熟女キャバクラでバイトしたことがあります。
大切なことなので二度言います。
ボーナスが出ない腹いせに熟女キャバクラでバイトしたことがあります。
どんな経験も無駄にはなりませんね。昨晩、店長とキャバ嬢の関係性がオブジェクト指向に近いんじゃね?!とピコーーンと思いつきました。
なので遠慮なくキャバクラに例えてみることにしました。
オブジェクト指向がなぜキャバクラなのか
キャバの店長の教育通りにすると、それなりにキャバ嬢が稼げるようになる
キャバクラといえば見た目やスタイルが大切と思いますが、そんなことないです。
顔がポンコツ(悪口)でも稼ぐキャバ嬢はいます。
オブジェクト指向プログラミングは店長の教育に似ています。
たとえ顔がポンコツ(悪口)でも、いくつか決まり切った対応をすれば顧客は満足してお金を落としてくれるようになります。
クラスとは?
キャバクラでいう店長の作ったマニュアル
この教育のセットがいわゆるオブジェクト指向プログラミングでいう「クラス」に当たります。
クラスというものはキャバクラでいう売れるキャバ嬢になるための「お客様対応マニュアル」みたいなものです。
以下のような感じで、売れるための対応がセットになっています。
class 店長の教育{
連絡先を聞く
{
//処理
}
お酒を作る
{
//処理
}
延長させる
{
//処理
}
ねだる
{
//処理
}
お酒を作る
{
//処理
}
延長させる
{
//処理
}
ねだる
{
//処理
}
}
インスタンスとは?
マニュアルに従うキャバ嬢を育成
クラスとはキャバクラの店長が編み出した売れるキャバ嬢になるためのお客様対応マニュアルと例えました。店長はマニュアルに従うキャバ嬢を育成します。
マニュアルを伝授して実行するのが新人キャバ嬢で、これをオブジェクト指向ではインスタンスと呼びます。
$キャバ嬢 = new 店長の教育();
$キャバ嬢2 = new 店長の教育();
$キャバ嬢3 = new 店長の教育();
これで店長の教育通りに仕事をするキャバ嬢(インスタンス)が量産されるわけです。
メソッドとは?
キャバ嬢が店長から伝授された売り上げをあげるための手段
キャバ嬢が連絡先を聞くのも、食事に行きたがるのも別にあなたに気があるわけではありません。リピートを取る、つまり売り上げをあげるためです。
これも彼女たちは言いたくて言っているわけではありません。目的のために用意されたマニュアルを実行しているだけです。
- 褒めたり気分を良くさせる
- 何かねだる
このようにあらかじめ用意された一連のタスクをオブジェクト指向ではメソッドと呼びます。
店長の教育からねだるというメソッドを実行するだけです。
ねだる(何か){
褒める、もしくは気分を良くさせる処理
return 何かねだる
}
「何」(引数)をねだるのかはお客さんによって変わります。
オブジェクト指向プログラミングではクラスからメソッドを取り出し実行できます。
$キャバ嬢->ねだる(シャンパン);
ちなみにクラスからはメソッド(関数)だけではなくプロパティ(変数)を呼び出すこともできます。