はじめに
本記事は、オブジェクト指向について学習した内容をまとめています。言語は PHP を使用し、以下の内容についてまとめています。
- クラスの使用方法
- プロパティについて
- コンストラクタについて
- アクセス権とカプセル化について
- 継承について
- オーバーライドについて
- トレイトについて
サンプルコードの PHP のバージョンは8.1.20
で、開発環境に Docker を使用しています。
オブジェクト指向とは?
オブジェクト指向とはプログラミングをする際の考え方のことで、プログラムを設計する設計手法(アーキテクチャ)のことです。
プログラムでオブジェクトというデータと振る舞い(メソッド)を組み合わせたコードを書くことで、プログラムでやりたいことを明確に設計することが出来ます。
オブジェクトとは「物体」や「実態」という意味で使用され、データと振る舞い(メソッド)を持った「モノ」であり、クラスと言った設計図からこのオブジェクトを生成してプログラム内で使用していきます。
具体的に言うと、「人」をオブジェクトとして考えると、「名前」や「年齢」と言った属性(プロパティ)と、「歩く」、「話す」と言った動作(メソッド)を持つイメージです。
オブジェクト指向プログラミングのメリット
オブジェクト指向プログラミングを実践することで以下のメリットがあります。
- 関連するデータと振る舞いがオブジェクト内に集まるため、コードの変更やデバッグがしやすくなり保守性が高くなる
- 保守性が高いとは、何か仕様変更が合った際にバグを生み出しにくかったり、誰が見てもわかりやすいコードであったりすることをいう
- ポリモーフィズム(多態性)といった概念を用いることで、同じメソッドでも異なる振る舞いや動作を実現できるので柔軟なコードを書くことができる
- 具体的な実装を隠蔽する(抽象化)することで、複雑な問題をシンプル且つ理解し易い形で管理することができる
オブジェクト指向プログラミングのデメリット
オブジェクト指向プログラミングのデメリットのデメリットとして以下の点が挙げられます。
- オブジェクト指向プログラミングの概念(クラス、オブジェクト、継承、カプセル化、ポリモーフィズムなど)は、初学者にとっては理解が難しく時間がかかる
- 適切なクラス設計や継承の設計、インターフェースの設計がされていないとコードの複雑化が増しメンテナンス性を損なう可能性がある
- オブジェクトの生成やメソッドの呼び出しなどが、特に大規模なアプリケーションやリソースが限られた環境でパフォーマンスに影響を与えることがある
- 現代のハードウェアの進歩ににより、これらの問題はあまり問題にならない事が多いが注意が必要