😽

Rubyにおける「クラス」と「オブジェクト」の関係について分かりやすく解説してみる

2022/02/10に公開

Rubyの勉強を始めて、すぐに出てくる重要キーワード。それは 「クラス」「オブジェクト」 です。Rubyにおいて重要な概念だと分かってるけど、なんとなくの理解で学習が進んでいってしまうことも多いのではないでしょうか。

  • クラスはよく使うけど理解が浅い

  • 「クラス」と「オブジェクト」の関係がいまいち掴めない

  • どうやって「オブジェクト」を作れば良いかわからない

今日はこのような方に向けて、記事を書いていこうと思います。

「クラス」と「オブジェクト」の関係について

クラス とは「もの」を作るときの 「設計図」 です。
オブジェクト とは設計図をもとに作られる 「もの」 です。

クラスとオブジェクトの関係を図に表すと以下になります。

Image from Gyazo

クラス が「人間」
オブジェクト が「たろう」「花子」「Michael」です。

クラスである「人間」には (名前,出身) という設計図が描かれています。
この設計図を使って、「名前:たろう,出身:東京」のオブジェクトを作っています。

つまり、
設計図である「クラス」をもとに、ものである「オブジェクト」を作ることができます。 これが「クラス」と「オブジェクト」の関係です。

ここで、たろうに性別や年齢を加えたい場合は、人間クラスを (名前,出身,性別,年齢) という設計図にすればいいわけです。

クラスの作り方

ここからは、実際にコード書いてクラスとオブジェクトの理解をさらに深めていきましょう。

まずクラスの作り方についてです。試しにUserクラスを作ってみましょう。 user.rb というファイルを作成して、以下のように記述します。

user.rb
class User 
end

これだけでUserクラスの完成です。簡単!

オブジェクトの作り方

irb(書いたプログラムを実行できるコマンド)を開いて、先ほどのUserクラスを使って、オブジェクトを作っていきます。

> require './user.rb' #user.rbのコードを読み込むコマンド
>Michael = User.new

User.newを使って、Michaelというオブジェクトを作ることができました。これまた簡単!

オブジェクトから、原型となるクラスを確認する方法

全てのオブジェクトはその元となるクラスを持っています。 つまりMichaelはUserクラスを持っているはず。それが本当かどうか確認します。

>Michael.class
=>User

classというメソッドを使って、オブジェクトが持つクラスを確認することができます。エラーが出たとき「このオブジェクト、何のクラスを持ってるんだっけ?」となりがちなので覚えておきましょう。

(補足)いまはUserクラスに設計図(名前,出身など)が何も書かれていません。今回の記事は「クラス」と「オブジェクト」の関係について理解する記事なので、設計図の書き方は省略です。また記事にしたいと思います。

まとめ

「クラス」と「オブジェクト」の関係について理解が深まったでしょうか。なんとなくの理解でプログラミング学習を進めてしまいがちですが、少しずつ理解を深めながら、Ruby勉強を進めていきましょう。

Discussion