index page
目次へ戻る   前へ戻る 次へ進む

オブジェクト


  • オブジェクト指向とは?

    Rubyはオブジェクト指向スクリプト言語です。このオブジェクト指向について、自分なりの説明を書きます。間違っているところもあるかもしれませんので、ちゃんとしたことは本などで勉強してください。

    オブジェクトは「もの」という意味です。とすれば、「もの指向」ということになります。一般的にはオブジェクト指向は、データなどの「もの」として作り、「もの」にその「振る舞い」を教えることでプログラムを簡単にする、という説明がよくされています。よくある例えとしては、テレビやビデオにたとえられます。

    テレビやビデオを使うためには、チャンネルを変える、音の大きさを変る、ビデオ録画の予約をするという操作が必要です。こういった操作は、普段はリモコンなどで簡単にできてしまいます。しかし、リモコンやテレビやビデオの中の回路では、いろいろと複雑なことをやっている筈です。

    ちゃんと説明はできませんが、次のような具合になっていると思います。

  • リモコンのボタンが押される
  • リモコンのスイッチが入る
  • 電気が流れ赤外線を発する
  • テレビがその赤外線を受け取る
  • 赤外線を調べて、何チャンネルに変えるかを決める
  • さらに次の回路へとつなぐ
  • 途中省略(たぶんもっと複雑なことをやっているはず)・・・
  • チャンネルを変える

    こういった複雑な流れを理解しなくても、テレビやビデオやリモコン(これらが「オブジェクト」にあたります)の使い方さえ知っていれば、現実にはテレビやビデオを使えます。テレビやビデオの中での動き(これが「振る舞い」にあたります)はテレビやビデオ自身が知って(回路に組み込まれていて)います。これがオブジェクト指向です。つまり、オブジェクト(=もの)の中がどんな風になっているかはいざ知らず、オブジェクトを簡単に使いこなすことができることにしようというものです。

    ただし、ここでひとつ問題があります。プログラムをするときにちょうど自分の使いたいオブジェクト(テレビやビデオにあたるもの)が用意されていればいいのですが、必ずしも用意されているとは限りません。例えば、テレビとラジオを合体させたようなオブジェクトを使いたいとしても、それが用意されていない場合があります。そのときには自分で作る必要があります。作ると言っても、全てを一から作る必要はありません。既にあるオブジェクトを組み合わせたり、いいとこどりをして新しいオブジェクトを作ることができます。これもオブジェクト指向のいいところです。

    僕は始めのうちは「オブジェクト指向って、何やねん?なんかオブジェクト指向でいいことあるんか?」と思っていました。ただ、Rubyを使ってプログラムを作っていくうちに、だんだんとオブジェクト指向のよさがわかってきました。この文章だけを読んでもなかなかそのよさは分からないかもしれません。実際にプログラムを作って、そのよさを体験して見てください。


  • メソッド
    オブジェクトにはそれぞれ、振る舞いがあります。この振る舞いのことをオブジェクト指向ではメソッドと言います。はじめからメソッドを教え込まれているオブジェクトもありますし、後からメソッドを追加することもできます。

    例えば、テレビとビデオでは振る舞いが違います。

  • テレビ:チャンネルを変える。電源を入れる。電源を消す。
  • ビデオ:録画する。電源を入れる。電源を消す。

    オブジェクトに対しては、適切なメソッドを与える必要があります。テレビに「録画しろ」と言っても無理ですし、ビデオに「チャンネルを変えろ」といっても、オブジェクトは反応してくれません。しかし、両方とも「電源を入れろ」ということに対しては、適切に動いてくれます。

    つまり、オブジェクトを使いこなすには、オブジェクトとそのメソッドを適切に指示する必要があります。また、オブジェクト側としては、どんなメソッドに対してどんな反応をするかが決まっている必要があります。

    オブジェクト一つ一つに対して、メソッドが決まっていると、オブジェクトの数だけメソッドが必要になってきます。それでは、すごく難解なことになっていまうので、オブジェクトをある程度まとめて考えることが必要になってきます。そのまとめ方について、クラスという考え方があります。

    そろそろ長くなってきたので、クラスについては次回に。


    目次へ戻る   前へ戻る 次へ進む