文系大学生のプログラミング勉強日誌

経済学部2回生の自分が勉強した内容を投稿するものです。

意外と簡単? オブジェクト指向とは【Java】

こんにちは、おっけんです。

みなさん、オブジェクト指向をご存知でしょうか?

f:id:progrunner39:20170417234602j:plain

オブジェクト指向に関していろいろな説明がされると思いますが、初心者にはわかりにくい表現が多いです。それによって挫折した方もいるのではないでしょうか?

挫折したり難しいと思った人は、オブジェクト指向の学び方を変えてみると「こんなに簡単だったのか」と思えるかもしれません。それでは、オブジェクト指向をどのように学べばよいか?それはたった一つの単純なことです。

f:id:progrunner39:20170418001057j:plain

プログラミングを最初に学ぶとき、まずは文法を学びますよね?文法はルールなので、正解を学んでいるわけです。しかし、オブジェクト指向は文法ではありません。考え方なのです。この認識はオブジェクト指向を学ぶ上で重要です。よくオブジェクト指向言語の文法の入門書などに文法の説明の章が終わると続けてオブジェクト指向の章に入るものが多いです。それがオブジェクト指向を文法と同じように学んでしまう方が多い原因であると思われます。

前提の話はこの辺にしてさっそくオブジェクト指向の考え方の説明に入ります。

初めてオブジェクト指向を学ぶ際には「ラクして楽しくいいものを作るための部品化の考えのこと」と思っていただいても大丈夫でしょう。部品化とは複数のメソッドやクラスに分割したり、組み合わせるなどして1つのプログラムを組むことです。

では、なぜオブジェクト指向の考え方を使えば、ラクして楽しくいいものが作れるのかについて考えていきたいと思います。

そもそも私たちがプログラムを組むのはなぜでしょうか?それは現実世界で行われることを自動化するためであるはずです。つまり、オブジェクト指向のプログラムは現実世界と密接にかかわっているのです。ゆえにプログラムを組むことは、現実世界を反映した仮想世界を作ることだといえます。

つまり、オブジェクト指向とは、現実世界で起こっていることをJava仮想世界で再現したものであるため、わたしたちになじみのある現実世界をまねて作った仮想世界は、人間にとっても把握しやすいのです。

例えば、サッカーにおける監督を考えてみましょう。監督が選手に支持を出すことをプログラミングに見立ててみます。従来のプログラミング方法である手続き型では、全選手に一挙手一投足指示を出さなければならず、指示を出している監督自身も混乱してしまいます。

一方オブジェクト指向を使えばどうなるでしょうか。この場合、選手一人ひとりを部品=オブジェクトと考え、それぞれに役割・責任といった指示を与えます。よって監督は試合が始まれば、することはほとんどありません。どう行動すべきかをあらかじめ指示(プログラミング)しているからです。

どうでしょうか?今までオブジェクト指向を敬遠していた人や、挫折してしまった方はこの考えにのっとってもう一度チャレンジしていただけたら幸いです。