読者です 読者をやめる 読者になる 読者になる

野心なき知性

メンヘラエンジニアの戯言

スッキリわかるJava入門を読んで、オブジェクト指向が何となくつかめた

java スッキリわかるJava入門 プログラミング

ここ2週間ほどかけて

 

スッキリわかるJava入門 第2版 (スッキリシリーズ)

スッキリわかるJava入門 第2版 (スッキリシリーズ)

 

 

を読破し、今まで基本文法だけでオブジェクト指向の手前までしか理解できていなかった私が、オブジェクト指向の壁を乗り越えることができたように思います。

 

では、プログラミング初心者がつまずくオブジェクト指向とは一体何なのかという話なのですが、この本にもあるように、人によって考え方、捉え方が変わる曖昧なものであるということです。Rubyの開発者であるmatzさんも先日こんなツイートしていました。

 

ですが、これだけだとお前は一体何を学んだんだということになりそうなので、オブジェクト指向がそもそも曖昧なものだという前提条件を把握した上で、定義しますと、

現実世界に存在するものとその動作を仮想世界で再現するということになります。

 

ブジェクト指向型ではないいわゆる手続き型のプログラミング、で上から順に処理をしていくことをスポーツチームの監督でたとえると、監督が各選手の全ての行動を毎回指示しないといけません。一方で、オブジェクト指向型の監督は各選手に一度、こういう行動をしなさいと伝えるだけで、その役割を各々の選手が勝手に行動するというものです。

 

現実的にサッカーの監督が、毎場面でFWの選手に右足で左にいる選手をフェイントで抜いて、前にいる味方にスルーパスを左足で出せ、なんて指示をしていないですよね。

実際には監督は、試合前にFWの○○は、左サイドを中心に攻めていけとか、守備のときは何番をマークしろとか言うだけで、試合中はその支持を出された選手が勝手にその範囲内でプレーします。

 

オブジェクト指向ってこうやって、現実世界を仮想世界に持ち込んでいく、言い換えればプログラミングをまるで現実の世界のように行っていくということなんです。

 

そしてその大きな目的を果たすために、カプセル化や継承、多態性といったものがかかわってきますよということみたいです。

実は今までいくつかオブジェクト指向の本を読んだりしてきたんですが、全然すっきり頭に入ってこなくて理解できないままただ、コードを打ち込んでいました。

この本の宣伝になってしまってますけれど、プログラミング初心者がオブジェクト指向をつかむために取る本としてはこの本が一番わかりやすく、一番アマゾンで売れている理由もわかります。

さて、これからはどんな勉強をしていきましょうか。

 

僕のプログラミングの旅はまだ始まったばかりです。