1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

子供の想像力を伸ばしアイデアを形にする小学生向けプログラミング教室「プロスタキッズ」

0からのRuby入門その11〜クラスを作る〜

Pocket

はじめに

オブジェクト指向をご存じですか?

この連載の冒頭で、Rubyは「オブジェクト指向」の言語だということをお伝えしました。
オブジェクト指向は、プログラムの構築するためのひとつの考え方です。

Rubyではすべてのものがオブジェクトなので、今まで扱ってきたものもすべてオブジェクトです。

それでは、オブジェクトとは一体何なのでしょうか?

この記事では、Ruby初心者の方向けに、オブジェクト指向とRubyでのクラスの作り方などについてお伝えしていきます。
重要な概念なので、しっかりおさえておきましょう。

オブジェクトとはなにか?

オブジェクト指向では、「オブジェクト・クラス・インスタンス」の3つの概念が中心となります。

Rubyでは、クラスから生成されたものがオブジェクトであり、そのクラスのインスタンスとなります。
つまり、Rubyではすべてのものがなんらかのクラスから生み出されているということです。

クラスとインスタンスの関係

クラスはインスタンス(オブジェクト)のテンプレート(雛形)のようなもので、ひとつのクラスから複数のインスタンスを作れます。

クローンを作るようなものです。
後ほどコードでも説明しますが、それぞれのインスタンスは独立していることを覚えておいて下さい。

これまで使ってきたものもすべてクラス

これまでの連載で、数値や文字列など、さまざまなものを扱ってきました。

冒頭でもお伝えした通り、これらもすべてオブジェクトだったのです。
それは、次のコードで確認することができます。

例:

すべてのオブジェクトには「classメソッド」が定義されており、それを呼び出すことでどのクラスのオブジェクトなのか知ることができます。

ちなみに、”classメソッド”が返す値もオブジェクト(Classクラスのインスタンス)です。

クラスを作ってみよう

それでは、さっそく自分でクラスを作ってみましょう。

ここでは、正四角形を表すクラスを考えてみます。たとえば、次のような形です。

例:

クラスは、「インスタンス変数」と「インスタンスメソッド」を持つことができます。

インスタンス変数とは、インスタンス専用の変数で、インスタンスごとに独立しています。

この例では、”@length”がインスタンス変数です。

また、インスタンスメソッドは、インスタンスオブジェクトから呼び出せる操作を表します。

この例では、”area”と”printAA”の2つのメソッドが定義されています。

もうひとつ”initialize”というメソッドが定義されていますが、これはオブジェクトが生成されるときに呼び出される特殊なメソッドです。

さっそく、このクラスを使ってみましょう。

例:

クラスからオブジェクトを生成するには、定義したクラスの「newメソッド」を使います。

”newメソッド”なんて定義していないじゃないかと思うかもしれませんが、これはClassクラスで定義されているメソッドなのです。

すべてのクラスが(先ほど定義したSquareも含めて)Classクラスのオブジェクトであることを思い出して下さい。

ここでは、”newメソッド”の引数として数値を渡しています。
これはそのまま”initializeメソッド”に渡され、”@length変数”に保存されることになります。

“newメソッド”で生成したオブジェクトは、変数に割り当てて使います(ここでは変数s)。

後は、その変数に対して定義したメソッドを呼び出してやるだけです。

Rubyでは最後の行の評価値(値)が自動的にメソッドの返り値になるため、”areaメソッド”は正しく面積を返します。
厳密に言えば、”printAAメソッド”も「nil(空値)」を返しています。

また、次のようにクラスから複数のインスタンスを作ることもできます。

例:

それぞれのオブジェクトのインスタンス変数が独立しているのがお分かりになるでしょう。

まとめ

オブジェクト指向について理解できましたか?

オブジェクト指向は、クラスとインスタンスが中心です。

関連するメソッドや変数をクラスにまとめることで、独立した複数のインスタンスとして扱えるようになります。
クラスをうまく構築できるようになるまでには習熟が必要です。

じっくり取り組んでみましょう。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る