支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • オブジェクト指向とは?(カプセル化、

オブジェクト指向型プログラミング言語

プログラムやアプリケーションを作成する時、プログラミング言語が使用されます。

プログラミング言語の中にはオブジェクト指向型のものがあります。メジャーなオブジェクト指向型のプログラミング言語ではJava、C++、Rubyなどがあります。

オブジェクト指向はよく耳に入るものですが、ここではオブジェクト指向について説明します。

オブジェクト指向とは?

オブジェクト指向は複数のデータとそのデータに対する処理内容をオブジェクトという1つの塊として扱い、それらを組み合わせてプログラムを構築します。

オブジェクト指向は必要に応じて使用するオブジェクトを選び、オブジェクトが持っているデータや処理命令を利用するため、1からコードを書くという作業をなくす事が出来ます。

存在しているオブジェクトを使用するときは、内部構造や動作原理の詳細を知る必要は無く外部から呼び出しを行えば機能します。そのため、大規模なプログラムを開発を行う時にオブジェクト指向は有効な考え方であるとされています。

ゲームでコントローラーを動かすと、内部でどんな処理が行っているか分からなくてもゲーム内で動作します。オブジェクトも同様で内部で行われている動作の定義を知らなくても使い方さえ知っていればプログラムを動かすことが出来ます。つまり用意されているものを使用することで、簡単にプログラムを作成することができるのがオブジェクト指向の利点です。

オブジェクト指向の重要な概念

オブジェクト指向の重要な概念として、「カプセル化」、「継承」、「ポリモーフィズム」の3つがあります。

「カプセル化」、「継承」、「ポリモーフィズム」3つを説明します。

カプセル化

カプセル化とはなるべく他のプログラムから干渉されないようにする仕組みのことをいいます。

カプセル化を行うことにより、他のプログラムから干渉されない部分を明確にできます。プログラムをある程度まとめてカプセル化することにより、他のプログラムから干渉をなるべく行えないようにしたり、管理しやすくなります。干渉をなるべく行えないようにすることでプログラムが誤動作することを防ぎ、全てのコードを認識する必要もなくすことができます。

「カプセル化」はオブジェクト指向のプログラミング言語では「クラス」というもので表現しています。

継承

「継承」はプログラムの再利用性を高める考え方であり、特定のオブジェクトの機能を引き継いで使用することです。

「継承」を行わないと同じようなプログラムを複数作成後、1つのプログラムに修正などを行った時に他のプログラムも同じように修正などを行うことになります。同じようなプログラムを1つにまとめて、1つにまとめたプログラムから継承し再利用することで、修正箇所があった場合1つにまとめたプログラムだけの修正を行うだけで済みます。

さらに具体的にいうと「継承」はクラス定義の共通部分を別クラスにまとめる仕組みです。

実際にプログラム開発中に継承を行う時「スーパークラス」と「サブクラス」という言葉がでてきます。継承されるクラスを「スーパークラス」といい、継承し新しく作成したクラスを「サブクラス」といいます。「サブクラス」では「スーパークラス」の変数定義やメソッドを使用することができます。

そのため、「継承」はコードの再利用、拡張性を高めたり、同じような機能を持つ重複したコードを記述しなくてもよくなるため、トラブルを防止することが可能となります。

ポリモーフィズム

ポリモーフィズムは「多様性」とよばれています。

処理内容は違うが目的が同じ機能であれば、同じ振る舞いをする部分は共通化しつ、違う振る舞いにしたい部分は目的に合わせて変えられるのがポリモーフィズムです。

ポリモーフィズムを実現することで操作方法が統一され、利便性を高めることもでき、他のプログラムから再度利用することも簡単になります。ポリモーフィズムによって共通化した部分を使用しながら、簡単な処理から様々な処理までパフォーマンスの異なる処理を目的に合わせ実行が可能となります。

ポリモーフィズムの一例を挙げますとクラスによって同一のメソッドで異なる処理を行えるというものがあります。

まとめ

オブジェクト指向とオブジェクト指向の「カプセル化」、「継承」、「ポリモーフィズム」3つの概念について説明しました。

オブジェクト指向型のプログラミング言語にはJavaやC++といった様々なものがあります。

オブジェクト指向の考え方はコードの再利用、拡張性を高めるなどのメリットもありプログラムを開発を行う上で有効な考え方でもあります。

オブジェクト指向や「カプセル化」、「継承」、「ポリモーフィズム」3つの概念に対して理解することは難しいと言われています。ですが、オブジェクト指向を理解することでプログラムを効率的に記述することが可能となります。