「Hello」って表示させて何が楽しいの?と思っていた阿部洋太郎です、おこんばんわー。さて、プログラミングの勉強をしていた時に理解できずに終わった「オブジェクト指向」の意味を、先日ある本を読んだことでようやく理解することができました。
オブジェクト指向は「もの」を中心に考える。
分厚いJavaの本にそう書かれていたものの、「で、どういうこと?」と思っていたのですが、小林健一郎著「プログラミング20言語習得法」にはオブジェクト指向ではない”指向”が書かれていて、対比することでようやく理解できました。
オブジェクト(もの)指向の反対は手続き(手順)指向。
例えば「車を運転できるゲーム」。「ドアを開けるとシートがある」「シートに座るとハンドルとアクセルとブレーキがある」「アクセルを踏むと車が動き始める」・・・というように、どういうことをしたらどうなったらいいかと手順を考えてプログラムを組んでいくのが手続き指向。
オブジェクト指向の場合は「車を運転できるゲームではどういうモノが必要か→車、道、障害物、・・・」「車とはどういうモノか?→ハンドルとアクセルとブレーキとシートとドアがあって、アクセルを踏むと前に進んで、・・・」「ハンドルとはどういうモノか?→右に回すと右に曲がり、左に回すと左に曲がる」・・・というように「もの」を中心に考えていく。
「もの」ができたら転用できる。
わざわざ「○○はどういうモノか?」と1個ずつ考えていくのは非効率的に感じます。しかし、たくさんプログラムを作る場合は「もの」のストックを作っておく方が効率が良くなります。例えば「ドア」「アクセル」「ブレーキ」「ハンドル」の”プログラムの部品”を作っておいたら、その部品は自転車にもバイクにも飛行機にも転用できます。部品を組み合わせてプログラムを書けるようになると、手順を一から考えるよりも効率はよくなります。
プログラムをたくさん書かない場合は必要ない。
特定の用途で1個か2個作る必要があるだけなら、手続き指向で考えた方が簡単です。意外とエクセルでできたりもします。用途に合わせて「やり方」は選びましょう。
コメント