プログラマは神様です~プログラム入門 その4~

前回オブジェクト指向の入口であるオブジェクトって何かを解説しました。とにかく何でも属性と手続きをまとめてオブジェクトにしましょうということでした。それで作ったオブジェクトをどうするかが今回のお話です。

目次

プログラマが神になる

そのまえに、ちょっと名前の定義のお話です。今まで「オブジェクト」という名前をつかってました。
実はこの「オブジェクト」という名前はちょっとあいまいなのです。
オブジェクト指向プログラミングでは、前回の記事の中で書いた「クラス」という設計図と
その設計図からオブジェクトができると書いてます。
話を簡単にするためにそのように書いてますが、正確には「クラス」から作った実体のことを「インスタンス」といいます。ここからは、クラスからできたものを「インスタンス」と呼びます。

今まで「クラス」を作らないといけないということを書いてました。それこから実体となる「インスタンス」を作るわけですが、それは「人間」のクラスがあって、そこから実際に『山田さん』『田中さん』という実際の人間をつくっていくようなことです。
なので、コンピュータの中ではに、これらの実体を生み出すプログラマは神となってプログラムを書いていくことになります。こちらに本では第8章で実際にオブジェクトを動かすためのクラスを「神様のクラス」と表しています。
私は実際に生み出すためにプログラムを書く人を神様とします(笑)

オブジェクトは作っただけでは動かない

さあ、前回で頑張って車のクラスを定義してました。神様が車の設計図を作ったのです、それを神様がインスタンス化することで、たとえばクラウンという車の実体ができました。

目の前に車があります。でも車は自分で勝手に動いてくれません。(まあ先の東京オリンピックでは自動運転の車が動いてましたが(-_-;)
どうしたら動くのか?人間が運転するから動きます。なので、人間が動かすようにプログラムしないといけません。そこで、運転手もインスタンス化しましょう。その運転手が自動車を運転するようにします。
「運転手がエンジンを掛ける」「運転手がアクセルを踏む」「運転手がハンドルを切る」
というように運転手が車に対して『操作』をします。その操作が、オブジェクトの『手続き』になります。

細かく指示しない

ここからがオブジェクト指向プログラミングのキモになります。オブジェクト指向が出てくる前までは、神様(プログラマ)が手取り足取りすべてにおいて、指示してました。
たとえば、自動車を30km/hで走るということをしようとすると、
(1)ブレーキを離して、アクセルをゆっくり踏みます。
(2)スピードメーターを見ます。
(3)30km/hに満たない場合は、アクセルを踏み続けます。
(4)またスピードを見ます、
(5)(3)(4)を30km/hになるまで繰り返します
(6)30km/hになったら、アクセルを緩めます
というような動作をプログラムします。
30km/hで走るだけでこれだけのことをプログラムしなくてはいけなくて、隣の町のスーパーまでお買い物に行くようなプログラムを書くとなると大変です。

そこで、オブジェクト指向では、自動車に「30km/hで走る」「次の交差点で右折する」
というような操作をするだけで運転できるようにするのです。自動車は「30km/hで走れ」と言われれば、自動車の『操作』の中で「スピードをチェックして、30km/hまで加速する」というような動きをするようにプログラムしておきます。
要するにこうすることによって、それぞれに役割りを持たせて、神様がすべて細かいことを面倒見なくてもよくなるのです。

それぞれのオブジェクトに対して、自分の役割りに対して何をしないといけないのかを記述しておき、違うオブジェクトからの「XXをしろ」に対して自分の役割の仕事をするのがオブジェクト指向です。なので、命令する側は細かいことは気にしなくていいのです。

大きな組織と同じ考えのオブジェクト指向

たとえば、大きな会社の場合は、社長さんが末端の会社員が何をしているのか細かいことまで知りません。というか、そこまでやっていると会社が回りません。
なので、社長は部長に命令をだして組織を動かします。部長は、課長に、課長は、係長にとちゃんと役割があって、それぞれの責任で仕事をしています。
オブジェクト指向でも、それぞれのオブジェクトに役割りがあって、責任もって動作してくれる(不具合が無ければ(^^;ので、それぞれ他のオブジェクトに対して命令していくことで、全体がうまく動くようになります。

コンピュータはまじめですから、不具合がなければ、各自がちゃんと仕事をしてくれて
ちゃんと結果を残してくれます。昔のように全部自分でやるようなプログラムを書いていると全体が見渡せず不具合を出してしまいやすいのですが、このようにすることでそれぞれの責任範囲が明確になっているので不具合があってもわかりやすいですし、不具合も入りにくいのです。組織も責任が不明確なところでトラブルが起こるのと同じですね。

これでほんわかとオブジェクト指向ってどんなことかわかってもらえたかと思います。次からは、実際にプログラムを作っていってみたいと思います。

よかったらシェアしてね!

コメント

コメントする

CAPTCHA


目次
閉じる