プログラミングを勉強していると、「オブジェクト指向」という言葉をよく耳にしませんか?
「オブジェクト指向って何?」
「どういうものなの?」
「何のためにあるの?」
このような、疑問が上がると思います。
私も初めは全然分かりませんでした。
そこで、この記事ではなんとなく「オブジェクト指向ってこういうことか」というイメージを作ってもらえるように解説します。
オブジェクト指向とは?
オブジェクト指向とは、物事の考え方・捉え方の一つです。
オブジェクト指向プログラミング(または、オブジェクト指向プログラミング言語)という言葉も聞きます。
それは、オブジェクト指向という考え方に基づいて作るプログラム(または、プログラミング言語)のことを指します。
では、一体どのような考え方なのか、次の章で解説していきます。
オブジェクト指向という考え方
端的に言うと、いくつもの「モノ」を作り、それらを組み合わせて何かを完成させる。
これがオブジェクト指向の考え方です。
何を言っているのかさっぱり分からないと思うので、RPGを例にして説明します。
RPGには、プレイヤーや敵、フィールド、武器、NPCなどが必要ですよね?
このプレイヤーや敵、フィールド、武器、NPCが「モノ」に当たります。
そして、それらを組み合わせた結果として完成するのがRPGです。
今まではRPGを一つの「モノ」として作っていたのを、オブジェクト指向では、細かい「モノ」に分けて、それぞれを組み合わせたものをRPGとして呼ぶことにしています。
オブジェクト指向のメリット
なぜこのような考え方をするのでしょうか?
メリットは、プログラムが分かりやすくなることです。
具体的に例を使って説明していきましょう。
オブジェクト指向プログラムでは、主に「モノ」とその「役割(モノができること)」を決めていきます。
「敵」と「武器」の例で見てみましょう。
「銃を装備した敵」と「剣を装備した敵」を作るとします。
オブジェクト指向プログラムでは、「敵」、「銃」、「剣」に分けて作ります。
その中から「敵」と「銃」、「敵」と「剣」を組み合わせて「銃を装備した敵」、「剣を装備した敵」を作ります。
従来のプログラムでは、「銃を装備した敵」、「剣を装備した敵」をそれぞれ作る必要があるのです。
オブジェクト指向プログラムで作るモノ
- 敵
- 銃
- 剣
従来のプログラムで作るモノ
- 剣を装備した敵
- 銃を装備した敵
これでも、よく違いが分かりませんね…
ここで、「敵」について考えてみましょう。
「敵」はHPと攻撃力、守備力が備わっているとします。
新たにMPを追加することになりました。
オブジェクト指向プログラムでは「敵」について書いたプログラムにMPを追加するだけで、「銃を装備した敵」も「剣を装備した敵」もMPが追加されます。
しかし、従来のプログラムだと、「銃を装備した敵」、「剣を装備した敵」それぞれのプログラムにMPを追加しなければいけません。
今回の例では2種類の敵しか取り上げてないので、さほど苦労はありません。
では、敵の種類が100種類になったらどうでしょう?
100種類それぞれの敵に追加するのはかなり大変です。
また、どこにどの「敵」のプログラムを書いたか探すのも一苦労です。
このように、それぞれの「モノ」に分けて、「役割」をまとめて書いておくことができるため、プログラムが分かりやすくなるのです。
まとめ
オブジェクト指向って何?・・・物事の考え方、捉え方
どういうもの?・・・「モノ」毎に分けて「役割」をまとめて書く
オブジェクト指向のメリット・・・プログラムが分かりやすくなる
コメント
[…] […]
[…] オブジェクト指向は……理解してない。Pythonを学び始めた頃に図書館で「なぜオブジェクト指向なのか」みたいな本買って読んだことあるけど、まじで学びたてだったから1ミリも理解できずに返却した。ホントに、何となく理解するならこのサイトだろうか。後々本でも買って学習しよう。 […]
[…] オブジェクト指向は……理解してない。Pythonを学び始めた頃に図書館で「なぜオブジェクト指向なのか」みたいな本買って読んだことあるけど、まじで学びたてだったから1ミリも理解できずに返却した。ホントに、何となく理解するならこのサイトだろうか。後々本でも買って学習しよう。 […]