忘れないようにメモっとく

機械学習とかプログラミングとか。

「オブジェクト指向ってなんですか?」と聞かれたとき。

オブジェクト指向てなんだよ - 絶望?なにそれ?美味しいの?

この記事から引用。

オブジェクト指向とは何ぞや?と面接とかでよく聴かれるのですが
基本的に、説明なんか出来ないよ。

これは、その通り。

「オブジェクト指向」は考え方であり、バズワードであり、大げさにいうと哲学みたいなものだから、面接の短い時間で説明するのは無理です。

オブジェクト指向の書籍を地面に叩き付けたり、先輩プログラマに「ggrks」と罵られながら、戸惑い学んで汗を流して、体に染み付けるものなのです。

「オブジェクト指向ってなんですか?」と聞かれたとき。

とはいえ、表題のように「オブジェクト指向ってなんですか?」と聞かれるときは結構あります。

『オブジェクト指向は「データ」と「データに対する処理」をまとめたもの』。

と答えましょう。 カプセル化とか継承の説明したいところをグッとこらえて言うのです。

非オブジェクト指向言語、例えば、C言語では、

int var;

というふうに、データを宣言します。でも、これに対する処理(操作)は、varを関数に渡すとかですよね。つまり、データに対する処理は、データとは切り離されてます。これをひとまとめにして、クラスと呼ぶのがオブジェクト指向です。(誤解を恐れずに書くと...)

「クラスって何ですか」と聞かれる。

「クラス」という言葉がでてきました。多分、この新出単語について聞かれます。 ここは、具体例で答えましょう。

『クラスはお弁当の作り方です。』

のり弁の作り方。米を炊いて、のりを乗せて、たくあんを切って添えます。簡単ですね。

米、のり、たくあんは食材です。炊く、乗せる、切って添えるは調理です。バラバラにしておくと、新人バイトが間違えて、たくあんを炊くとか、米を切って添えるとかしてしまいます。ええ、してしまいます。だから、食材と食材に対する調理は、作り方としてひとまとめにしておきます。

これで「のり弁」クラスができました。

さて、のり弁以外にも唐揚げ弁当を作りたくなりますね。1から作り方を考えるのはめんどくさいので、のり弁クラスを利用します。 のり弁の作り方が書いてある紙をコピーしましょう。上書きしちゃだめです。コピーしたら、鳥肉と揚げ方を書き加えて、「唐揚げ弁当」クラスの完成です。

同じように「鮭弁当」クラスも作れます。 これで、 継承 の説明もできました。

付け加えると、鮭弁当の作り方がクラスで、鮭弁当はインスタンスですかね。

のり弁作るところを、バイトの先輩にお願いすれば、カプセル化も説明できるかな。。