メソッドは、ある処理をひとまとめにしたものです。これがもっと機能が複雑になってくると、1つ1つの処理をメソッドでまとめただけでは収集がつかなくなってきます。そこで、もっとまとまったかたまりとしてプログラムを扱えるようにする仕組みが必要になってきます。そこで考えだされたのが「
オブジェクト」というものです。
オブジェクトは、それ自身に必要なデータや機能がすべて自分自身の中にまとめられているプログラムのかたまりです。――というと、なんだかよくわからないかも知れませんね。
例えば、「
ウインドウ」というオブジェクトを考えてみましょう。このウインドウ・オブジェクトの中には、ウインドウの位置や大きさ、スクロールバーの位置などの細かなデータが全部入っています。そしてウインドウを指定の位置に移動したり、大きさを変えたり、表示をリフレッシュしたりといったウインドウ操作に必要な機能も全て用意されています。こうしたオブジェクトがあれば、プログラムをする側は、必要に応じてオブジェクトの値を変更したり機能を呼び出したりするだけでウインドウを自由に操作することができます。
こんな具合に、オブジェクトというのは、特定のある用途を実現するのに必要となる様々な機能やデータをひとまとめにしたものなのです。ウインドウのようにさまざまなところで利用するものは、オブジェクトとして用意することで誰もが自由にその機能を利用できるようになります。
Rubyでは、実は使われるあらゆる値はすべて「
オブジェクト」なのです。1, 2, 3……といった数字や、"Hello"といったテキストもすべてオブジェクトです。ですから、その中に、その値を扱う上で必要な物がすべて組み込まれているのです。
●クラスは設計図
このオブジェクトは、Rubyという言語ではどのような形で用意されているのでしょうか。それは「
クラス」というものを使うのです。
クラスは、いわば「
オブジェクトの設計図」です。このクラスというものを定義することで、そのオブジェクトにはどんな値が保管され、どんな機能が実装されるかということが事細かに決められるのです。そして、このクラスというものを元にして、そのクラスを実体化したオブジェクトを作成します。この「クラスを元に作られたオブジェクト」のことを「
インスタンス」と呼びます。
先に「数字やテキストなどの値もすべてオブジェクトだ」といいましたが、これはつまり、「数字やテキストなどの値を表すクラスがRubyには用意されていて、私たちはそのクラスのインスタンスを利用している」ということになります。「クラスからインスタンスを作って……」なんていうと難しそうですが、実は既に私たちはインスタンスを普通に使っていたのです。
(ただし、数字やテキストなどは基本的な値で多用されますので、一般的なクラスからインスタンスを作るやり方とは別に、もっとシンプルにインスタンスが作れるようになっています。例えば、スクリプト内で「1」というように書けば、自動的に1という整数のインスタンスが作成され利用される、という具合です)