オブジェクト指向という言葉はさまざまな捉え方があり、専門用語も多いため理解するのに苦労する方も多いと思います。
オブジェクト指向ができたことにより、膨大で複雑なプログラムを効率よく作ることができるようになりました。これを理解することは、プログラミングを扱う技術者には必須です。
ここではオブジェクト指向について、基本概念から習得方法、メリット・デメリットまでお伝えしていきます。
オブジェクト指向とは?4つの基本概念とは何か
オブジェクト指向とは、プログラムを「物」と「操作」に分けて作り上げる概念です。
例えば◯、△、◇があったとしてすべてのサイズを1cm大きくしたいと思ったら、従来では一つ一つプログラムしなければなりませんでした。3つであればすぐに終わりますが、1,000個あったらどうでしょう?1,000個一つ一つに手を加えていたら日が暮れてしまいます。
これにオブジェクト指向を使うとどうなるか?まず図形という「物」をつくります。その中に◯、△、◇を入れ、すべてのサイズを1cm大きくするという指示を出します。すると一瞬ですべての図形のサイズが変更されるのです。
プログラムは作り上げるごとに量も膨大になっていきますから、より複雑化しているシステム開発ではなくてはならないものです。
4つの基本概念
オブジェクト指向を習得するには、次の4つの基本概念を理解することが必要となります。
カプセル化
カプセル化は、オブジェクト指向でつくった「物」を他から影響を受けたり反対に影響を与えたりしないように独立させることです。
例えば先ほどの◯、△、◇がカプセル化(独立)していないとします。◯を変更したら他2つにも何かしら影響を与えてしまう状態です。その中で◯だけ黒く色を塗りたいと思ったら、他への影響を考えなくてはならなくなります。しかしカプセル化させて独立していれば、◯だけに指示を出すことで解決します。
継承
継承とは、「物」の属性を引き継ぐことです。再利用という言い方もできます。◯に新たに情報を加えた「物」をつくりたいとき、一から情報をプログラムすることなく、◯の属性を引き継いで作ることができます。
抽象化
抽象化とは、「物」の共通する部分を抜き取って考えるものです。◯、△、◇でいうとその共通する部分は図形ということができます。さらにわかりやすい例でいうと、クロワッサン、あんぱん、食パンの共通する部分はパン、美術部、映画部、吹奏楽部は文化部というように抽象化できます。プログラムでみると、変わらない共通点・カテゴリを見つけ出すことです。
ポリモーフィズム
ポリモーフィズムは拡張化とも言われます。継承によって再利用する際に「物」の要素の一部分を変更することができる機能です。そっくりそのままコピーするのではなく、少し変更を加えたいときに便利な機能です。
オブジェクト指向を習得するには
オブジェクト指向を習得するには、その概念に基づいて指示を出すためのプログラミング言語を覚えなくてはなりません。オブジェクト指向言語と呼ばれる言語には、Java、JavaScript、C++、Swift、PHP、Python、VBAなどたくさんの種類があります。
またその言語を使って「物」をつくり「操作」をプログラムしていくわけですが、ここでも重要な用語があります。
・プロパティ:「物」が持つ属性のこと。車なら色やメーカーなど。
・メソッド:「物」が持つ操作、アクションのこと。車だったら走る・止まるなど。
・クラス:プロパティやメソッドをまとめた「物」の設計図。
・インスタンス:クラスから新しい実体「物」を生み出すこと。車というクラスからタクシーを生み出すなど。
オブジェクト指向を習得するには、これらを正しく理解して使う必要があります。
オブジェクト指向のメリットとデメリット
ここでは、オブジェクト指向のメリットとデメリットをお伝えします。
オブジェクト指向のメリット
オブジェクト指向のメリットは大きく分けて以下の3つです。
1.プログラムを効率よく作ることができる
2.不具合が起きたときに対処しやすい
3.プログラムに変更を加えやすい
一つ一つみていきましょう。
1、プログラムを効率よく作ることができる
オブジェクト指向の「物」と「操作」で分ける概念、それらを再利用したり一部変更を加えられることは、プログラムを効率的に作る点で手間を大幅に削減できます。
2、不具合が起きたときに対処しやすい
プログラムに不具合が起きたとき、オブジェクト指向ができる前は長文のプログラミングから原因を探らなければなりませんでした。これがオブジェクト思考によって独立した「物」と「操作」に分けられたことにより、どこでどんな不具合が起こったか見つけやすくなっています。
3、プログラムに変更を加えやすい
オブジェクト指向によってプログラムを作ることで、例えば100個あるものでも「物」の属性でまとめてしまえば一つ変更するだけで全てが変更できます。情報を加えたり削除したりする必要ができたとき、対処しやすいというのは大きなメリットです。
オブジェクト指向のデメリット
オブジェクト指向のデメリットは、少々複雑化するために、正しく理解して使いこなすまでに時間を要することです。特に初心者の場合はオブジェクト指向でつまずき、プログラミングから離れてしまうケースもあります。
オブジェクト指向を習得するには、ある程度の時間と経験が必要だということを念頭に置いてください。
オブジェクト指向のプログラミング言語
オブジェクト指向のプログラミング言語には、Java、JavaScript、C++、Swift、PHP、Python、VBAなどたくさんの種類があります。
中でも特に人気の高いJavaについて、その特徴をご紹介します。
JavaはGoogle3大言語の一つであり、その最大の特徴は使える場面が多いことです。
OSはMacでもWindowsでも対応可能で、アプリケーション開発やシステム開発、Web開発などで利用できます。特に大企業での大規模なシステム開発に適しています。
同じような名前にJavaScriptがありますが、実は全く別物です。JavaScriptはWeb開発によく使われるプログラミング言語で、ページの色を変えたりポップアップを表示させるのに使われます。
これらのオブジェクト指向のプログラミング言語は、それぞれの特徴をおさえて選ぶ必要があります。
エンジニアとオブジェクト指向
エンジニアがプログラミングでシステム開発を行う場合、実は3つの方法があります。
1.オブジェクト指向プログラミング
2.手抜き型プログラミング
3.関数型プログラミング です。
とはいっても現代ではオブジェクト指向が主流となっているため、ここで紹介した基本概念を理解しておくことは非常に重要です。
エンジニアとして長く活躍するためには必須と言えるでしょう。時間をかけてでもしっかり身につける必要があります。