初心者必見 | 無料でPHPが学べる入門用学習サイト6選
GEEK JOB編集部
初心者のプログラミング学習者に向けて、用語をわかりやすくご紹介します。今回は「オブジェクト指向とは」です。参考書などを片手に読むと、より理解が進むと思いますのでぜひご覧ください。
ー では今回は、プログラミング学び始めた人達がよくつまづきがちな、オブジェクト指向という概念についてお話できればなと。よろしくお願いします。
よろしくお願いします。
いきなりくじく事を言ってしまうんですけど、プログラミングを始めたばっかりでオブジェクト指向全部理解するぞっていうのはかなり難しいですね。
やっぱりオブジェクト指向は専用の本とかもいっぱい出てるんで、今これからするお話ではあくまでもとっかかりというか最初のふわっとした所だけやっていこうかなと思います。
ー よろしくお願いします。こういう物なんだ。仕組みはまだ細かく分からないけどふわっとあ、こういう物なんだなっていうのが分かればっていう事ですね。
そうですね、イメージが掴んでくれればいいかなって思います。
では早速なんですけど、オブジェクト指向っていうのがプログラムを管理する方法の一つなんですね。
どうやって管理するのかっていうと、なんかプログラムがあった時に、情報と機能をまとめて一つにして管理していこうという考え方なんですね。
といってもまだ分かんないと思うんですよ。例えば、身近な例になっちゃうんですけど、携帯電話をプログラムで考えようってなった時に、携帯電話が情報として電話番号があったり、型番があったりしますよね。機能あって電話をかけることができたり、インターネットにつなげることができたりってなると、僕達の自然な考え方からして、これは携帯電話っていう一つのプログラムにまとめてしまおうと。
それがオブジェクト指向なんですね。よくこれを見てるってことは分からない事があって調べてるんだと思うんですけど、オブジェクト指向でクラスとインスタンスの違いみたいなものが出てくるんですよ。
解説サイトとしてはたいやきのひな型とたいやきの違いだよっていうような話よく出てくるんですけど、携帯で当てはめると、クラスっていうものは設計図みたいな物で、携帯って概念です。
これに対してインスタンスっていう物があって、実際携帯電話って現実世界では何なのッていう物を表してるんですね。iPhoneとかandroidとかガラケーとかっていう物ですね。
ただiPhoneであろうとandroidであろうとガラケーであろうと、結局は電話かけることできるし、ネットにつなげるじゃん。電話番号っていう情報も持ってるし、型番持ってるじゃんってなって、これらは一つの携帯っていうまとまりにしたら扱いやすいよねっていうのがオブジェクト指向の考え方ですね。
ー クラスっていうのは携帯電話っていう概念で、電話もかけられるよねとか今だとネットも見れるよね。そこから派生してインスタンスっていうのは電話もかけられるし、ネットも見れるiPhoneのような考え方って事ですね。
概念と具体例みたいな事ですね。
そもそもこれがなんで必要になっちゃったのかっていう話になるんですけど、昔はオブジェクト指向で作ってなかったんですよね。とにかくパソコンのスペックがしょぼくてどうやったら速く動かせるんだろうってこうしたらいいんじゃないか。
ああしたらもっと速くなるんじゃないかって人間が読みづらくてもとにかく速く動くプログラムを書いてたんですね。ある頃からパソコンのスペックが上がってそんな早く作らなくてもほっといても速く動くようになった。その反面システムがどんどんでかくなってって、人間が読むのが大変になってきたんですよ。
そこでなんとか読みやすいというか考えやすいプログラムの分け方、まとめ方ないかなって出てきた一つがオブジェクト指向。だから結局オブジェクト指向やると何がいいのっていうと人間にとって読みやすくなるよっていう事なんですね。
実際現在って考えると大体の開発はオブジェクト指向を意識してるし、ツールもオブジェクト指向を前提にしてる物が結構あるんですよ。例えばプログラム言語のRubyのフレームワークのRailsってありますよね。
あれもオブジェクト指向を前提に、この部品は事前に提供してあげる。この仕組みは事前に提供してあげると。っていう風に作ってます。
ー 仕事でオブジェクト指向の概念を用いる場合、細かく細部までオブジェクト指向について知っておく必要はないって事ですね。
役職にもよるんですけど、ただ最終的なレベルで考えたらちゃんと分かっていたほうがいい。ただ今の学習のとっかかりの段階でそこまで理解する必要があるかっていうと、そこまではない。
徐々に徐々に分かっていく物であるし、考え方なので、慣れていくとオブジェクト指向っぽく考えれるようになるっていうのがあるんですよ。理屈として分かるっていうだけじゃなくって能力としてそういう風に考えられるようになっていきます。
ー 今日のこの文章を読んで、それがとっかかりになれればなっていう。
全部をっていうのは時間がかかる事なので、まずは自分で作ってみたりとか、そういう便利なツールがあるんだ。これオブジェクト指向で作られてるんだっていうのをモチベーションに学習を進めていくといいかなと思います。
ー 分かりました。ありがとうございます。