スポンサーリンク

【応用情報技術者試験】オブジェクト指向プログラミング

システムの構築や設計において、処理や対象となるもの(オブジェクト)同士のやり取りの関係としてシステムをとらえる考え方です。データと手続きをひとまとめにしてカプセル化することで実現します。オブジェクト指向の考え方を取り入れたプログラム言語(オブジェクト指向言語)にはC++やJavaなどがあり、カプセル化、継承、多態性などの特徴を持っています。

カプセル化(情報隠蔽)

カプセル化とは、データ(属性)とそれを操作するメソッド(振る舞い)を一つの単位(クラス)にまとめ、内部の詳細を外部から隠蔽(情報隠蔽)して直接アクセスを制限するオブジェクト指向プログラミングの概念です。データの不適切な変更を防ぎ、安全性を高める役割を果たします。

具体例

銀行口座クラス:

  • 残高 (データ) と、入金・出金 (メソッド) をカプセル化します。
  • 外部からは、入金や出金といったメソッドを通してのみ残高にアクセスできます。直接残高フィールドにアクセスすることはできません。
  • 例えば、出金時に残高が不足している場合は、エラーを返すなど、内部で不正な操作を防ぐ処理を実装できます。

カプセル化のメリット

  • 情報の隠蔽:外部から内部構造を見えなくすることで、不要なアクセスや誤った操作を防ぎます。
  • 保守性の向上:内部実装の詳細を隠蔽することで、外部への影響を最小限に抑え、変更や修正が容易になります。
  • 再利用性の向上:独立したオブジェクトとして他の場所でも再利用しやすくなります。
  • バグの局所化:問題が発生した場合、影響範囲を特定しやすくなります。

カプセル化は、オブジェクト指向プログラミングにおいて、オブジェクトの信頼性と保守性を高めるための重要な設計手法です。

継承(インヘリタンス)

継承(インヘリタンス)は、オブジェクト指向プログラミングにおいて、既存のクラス(親/スーパークラス)の機能や性質を新しいクラス(子/サブクラス)が引き継ぐ機能です。コードの再利用性を高め、効率的な開発や機能拡張(オーバーライドなど)を可能にする仕組みです。

例えば、自動車クラスに対して、それを特化させた乗用車クラスやトラッククラスなどとの関係がこれにあたります。上位の特性を引き上げることで差分プログラミングが可能となります。

差分プログラミング:主にオブジェクト指向プログラミングにおいて、既存のクラスを継承して、そのクラスに無い部分(差分)だけを実装するプログラミング手法

多態性(ポリモルフィズム)

多態性(ポリモーフィズム)とは、オブジェクト指向プログラミングにおいて、「同じ命令(メソッド)でも、対象となるオブジェクトの種類によって異なる動作をする」性質です。一つのインターフェースで異なる実装を扱えるため、コードの柔軟性、保守性、拡張性が高まり、複雑な条件分岐を減らすことができます。

例えば、犬クラスの「鳴く」という手続きを呼び出せば「ワン」、猫クラスの「鳴く」という手続きを呼び出せば「ニャー」というように、同じメッセージを送っても受け手のオブジェクトによって行われる操作が異なる様子を表します。

コメント