#背景
laravelを使用していて「なぜこうなるのか」が分からないことが多々ある。
原因はオブジェクト指向についての理解が浅いからだと思う。
理解を深めるために、ここに自分なりに噛み砕いた解釈を書いていく。
##オブジェクト、クラス、インスタンス
クラスとは、機能の仕様(設計図、レシピ)であり、そのクラスの仕様から作られたものがオブジェクト。
厳密に言えば、クラスから作られたものはインスタンスと呼ぶ。
オブジェクトとは、「機能とデータを持ったもの」。
プログラミング的に言うと、「メソッド(処理)とプロパティ(属性)を持ったもの」。
車(オブジェクト)は走るという機能と、色や車種というデータを持っている。
オブジェクトにどんなプロパティがあり、メソッドがあるかを定義したものがクラスともいえる。
##オブジェクトとインスタンスの違い
重要なのはオブジェクトは一つ上の概念であるということ。
意味的にインスタンスは「~の子ども」、オブジェクトは「人間」に相当する。
鈴木さんの子ども(インスタンス)は人間(オブジェクト)である
iPhoneはスマートフォンである
レクサスは車である
というようにどのインスタンスもオブジェクトといえる。
この概念をもう少し広げれば、世の中のほとんどのものがクラスとインスタンスの関係にあるといえる。