データ抽象化
データ抽象化はオブジェクト指向プログラミングの重要な部分です。背景の詳細や実装を隠しながら、外部に必要な情報のみを提供します。これにより、オブジェクトとそのタスクが簡素化されます。
例 : ドライバーはアクセルを踏むと速度が上がることを知っていますが、車の内部エンジンの仕組みを知る必要はありません。オブジェクトがタスクを実行するために必要な重要なデータのみを含めることで、将来の変更や追加が容易になります。
カプセル化
カプセル化はデータを1つの単位にまとめることを説明し、コードとそれが操作するデータを結びつけるメカニズムです。
クラスの変数やデータは他のクラスから隠されており、自分のクラスのメンバー関数を通じてのみアクセスできます。これはデータ隠蔽とも呼ばれます。
セキュリティを強化し、意図しないデータの破損を防ぎます。
例 : 財務担当者がレポート用に営業データを必要としており、顧客関連管理システム (CRM) からその情報にアクセスするために、直接アクセスするのではなく、営業部門の誰かに連絡する必要があります。
継承
この柱は、あるクラスが別のクラスからプロパティや特性を継承する能力を指します。継承により、プロパティや関数を繰り返し記述する必要がなくなり、コードの再利用が可能になり、冗長性が減り、時間を節約できます。
例 : 従業員は一般的な人から変数や特性を継承することがあります。
ポリモーフィズム
ポリモーフィズムとは「多くの形を持つこと」を意味します。同じオブジェクトが文脈に応じて複数の機能を持つことができることを説明しています。
ポリモーフィズムは、単一のメソッド呼び出しが作用するオブジェクトに応じて異なる結果を生み出すことを可能にします。これにより、関数は特定のインターフェースを用いて、異なるクラスの実体を一様に操作することができます。
例 : 1人の人は同時に父親、夫、そして従業員でもあり、文脈が異なれば異なる行動を示すことがあります。もし円と四角のオブジェクトがある場合、これらは図形クラスに属し、両方に対して呼び出せる描画メソッドを持つことができます。
OOP の他の重要な原則には、クラス、オブジェクト、動的バインディング、メッセージパッシングが含まれます。
オブジェクト
オブジェクトはオブジェクト指向プログラミングの基本単位です。現実世界または抽象的な実体を表し、クラスのインスタンスです。オブジェクトが生成されたときにのみメモリが割り当てられます。
オブジェクトはメッセージを送受信することで相互作用し、互いの内部詳細ではなく、受け入れられるメッセージのタイプと返されるレスポンスだけを知る必要があります。
例 : 犬は、色や品種といった特性や、吠える、寝る、食べるといった行動を持つ実在のオブジェクトです。
クラス
継承と同様に、オブジェクトはクラスに分類されます。クラスは、そのタイプのすべてのオブジェクトに共通のプロパティやメソッドのセットを定義する、個人のオブジェクトのブループリントとして機能します。データメンバー (変数と属性) とメンバー関数 (メソッド) で構成されます。
例 : 自動車クラスは、四輪、速度制限、および航続距離などのプロパティを定義することがあります。
動的バインディング
動的バインディングは、関数呼び出しの実行時に実行されるコードを決定するメカニズムです。つまり、プロシージャ呼び出しに関連する正確なコードは、呼び出し時までわかりません。
動的バインディングは、継承やポリモーフィズムとよく組み合わせて使用され、オブジェクトが親クラス階層を検索して正しいメソッドのバージョンを見つけて実行することを可能にします。この柔軟性により、オブジェクトは実行時に異なる動作を取ることができます。
例 : 車両は基本クラスで、そこから車とオートバイという2つのクラスが派生します。両者は、エンジンを始動して操作するなど共通の特性を持っていますが、その動作を実行する方法はそれぞれ異なります。
メッセージパッシング
メッセージパッシングは OOP で使用され、オブジェクトは互いに情報を送受信することで相互作用します。これには、オブジェクトの名前、関数の名前、送信する情報の指定が含まれます。
例 : ドライバーは車両という他のオブジェクトと相互作用するオブジェクトです。
オブジェクト指向プログラミングの長所