Ruby、Python、Javaに代表される「オブジェクト指向」の特徴と必要性【21回】

Ruby、Python、Javaに代表される「オブジェクト指向」の特徴と必要性
ビジネスパーソンのためのプログラミング講座【第21回】


プログラミングを学ぶ上で現在では「オブジェクト指向」は避けて通れないと言っても過言ではないでしょう。
プログラミング言語で人気のあるJavaや、Ruby、Pythonもオブジェクト指向の言語となっています。
しかしオブジェクト指向を言葉で説明しようとすると今一つ抽象的なためプログラミング初心者にとっては理解し難いものです。

そこで・・・今回はオブジェクト指向の特徴などについてご説明します!


■オブジェクト指向とは
まず、オブジェクト指向について・・・。
オブジェクト指向とは、ソフトウェアの設計・開発における考え方のことです。
操作手順より操作対象に重点を置く考え方であり、操作対象を現実世界の「モノ(Object)」になぞらえて考えるためオブジェクト指向といわれます。
この「モノ」とはデータの集合や手続き(メソッド)を一つのまとまりとして指しています。

例えば「エアコン」というモノに対して私たちは「暖房、設定温度は〇〇℃」などの命令を、リモコンなどを通してだすことで、エアコンからは温風という結果が返ってきます。
この時私たちはエアコンの構造などは意識することなく、ただ必要な命令を出すだけです。

これと同様に、ある操作対象に対して内部構造を意識せずに操作を指示するという考え方、そしてこのプログラミング技法がオブジェクト指向プログラミング(OOP:Object Oriented Programming)ということです。

オブジェクトはデータやメソッドの集まり、ということですが、これらの集まりをひとまとめにしているのが「クラス」です。
例えば計算や表の作成をずらずらと続けて書くことはオブジェクト指向とは言えません。
機能などによって「計算」クラス「表」クラス、といった風にそれぞれ分けて管理をします。

それから「インスタンス」もオブジェクト指向を理解する上で重要です。
インスタンスは「実体」のことで、これに対しクラスは「型」のようなものです。
そのため処理を行うには必ずインスタンスの生成を行う必要があります。
処理を依頼される度にインスタンスを生成することで新たな領域が作られ、前回処理したデータが残っている…ということもありません。


■オブジェクト指向の特徴
次に、オブジェクト指向の特徴について・・・。

まずは「カプセル化」についてです。
カプセル化は、クラス内の処理や構造を外部から隠蔽することをいいます。
それにより内部構造を意識せず利用できますし、外部から操作できないことで保守性も高まります。
具体的には変数の操作を外部からできないようprivateなどで宣言する、などがあります。
ただ単に外部からデータを触らせない、というのがカプセル化という訳ではありません。
内部の処理を意識せずにすみ、間違いが起きない設計にできる、というのがカプセル化です。

次に「継承」です。
継承は既にあるクラスの機能を受け継ぎ、新たなクラスを作成する機能のことをいいます。
単に機能を受け継ぐだけでなく、新たなクラスで一部を書き換えることができるのです。
この時既存のクラスを「スーパークラス」、新たなクラスを「サブクラス」といいます。
例えば「計算」というクラスを継承して「家計簿」クラスを作る、といった具合です。

次に「ポリモーフィズム」です。
ポリモーフィズムは多様性・多態性とも呼ばれます。
変数などの様々な要素について、データ型が異なっていても共通的な手順で操作ができるという性質を指します。
または同一のメソッドでオブジェクトの種類に左右されず処理ができる、ともいえます。
ポリモーフィズムの性質により、サブクラスにおいてスーパークラスから継承した同一名であるメソッドを使うことができるのです。


■オブジェクト指向の必要性
前述のオブジェクト指向の特徴を踏まえると・・・。
オブジェクト指向の良いところは、オブジェクトごとに処理が分けて書いてあるため再利用がしやすいということ、仕様変更にも強いということ、カプセル化の機能により不正なデータが入りづらいということなどが挙げられます。
またオブジェクトまたはクラスごとに分けられるので複数名で開発する際に分業しやすいという点も挙げられます。

システム開発は複数名で行うことが多いですので、分業のしやすさは大きな利点ではないでしょうか。


■まとめ
オブジェクト指向は理解するまでは少々時間は必要かと思いますが、使いこなせるようになると便利なものです♪
オブジェクト指向言語も広く使われるようになっているので、是非オブジェクト指向について理解を深めましょう!
Java講座の詳細はこちら
Ruby関連講座の詳細はこちら



次回ビジネスパーソンのためのプログラミング講座【第22回】ではLinux、Python等の「オープンソース」を扱うメリットデメリットについてご紹介していきたいとおもいます。
>プログラミング豆知識 記事一覧へ


投稿日: 2017年1月11日

前後の記事

気になることは何でもお気軽にお問合せください。

0120-188-024 受付時間 平日9:00~19:00