【第10回】Ruby初心者向け!Rubyのクラスの使い方

0

他のプログラミング言語でも、「クラス」という単語を聞いたことがある人は多いと思います。

Rubyも同じく、クラスはとても重要な項目になりしっかり抑えておく必要があります。

 

クラスとは?

そもそもプログラミング言語におけるクラスとはどういったものなのでしょうか?

クラスを説明する時によく「設計図」が引き合いに出されますが、設計図をイメージしながら読み解いていくと理解が早いと思います。
例に車を設計図として定義するCarクラスを例に説明します。

車のクラス(設計図)を作る場合に、車として最低限機能するにはどういったものを機能として盛り込むでしょうか?

・走る
・ブレーキ
・クラクション

簡単にまとめるこんな感じだと思います。ここで、この設計図を元に車を作成するわけですが、作成した車 つまり実体化した車はクラスのインスタンスと呼ばれます。
車として最低限の機能を備えた車を何台も実体化できるような感じです。

ポルシェ、フェラーリなどがCarクラスが実体化したインスタンス。
その元となった設計図がCarクラスと言い換えることもできます。

 

そもそもクラスを使うことにどんな意味が?

そもそもクラスを使うことで何か恩恵を受けることができるのでしょうか?
プログラミング初心者が書く短いコードでは、クラスの実力は存分に発揮されませんが、大規模なコードになればなるほどクラスはその実力を発揮します。
・コードをひと塊りで管理できるので、保守や機能の追加が容易
・すでにあるクラスを使い回すことができる
このような形でクラスを使うことの恩恵を受けることができます。

Rubyでクラスを定義してみる

それでは実際にRubyでクラスを定義してみましょう。

 

これが最小単位のクラスのひな型です。クラス名の先頭の文字は必ず大文字である必要があります。
これはクラス名が変数名でもあるため、先頭文字は必ず大文字というルールです。
それでは実際にPersonクラスを定義してみましょう。

 

簡単ですね。このクラスの中身はまだ空ですが、1つのクラスを定義することができました。

クラスの中身を加えていく

ここまでPersonクラスという最小単位のクラスを定義しました。

ここからは中身を加えていきます。Person(人)クラスを定義したので、それぞれが実体化した時に特徴を持たせます。
人の特徴なので、名前と職業という値、そして自己紹介をするメソッドを追加していきましょう。

 

分解して解説していきます。

まず、下記の部分ではどういったことが行われているのでしょうか?

 

initializeメソッドはクラスに最初から備わっているメソッドの1つです。

その役割はオブジェクト作成時に必ず実行される処理を定義することができます。
ここでは、オブジェクト作成時に、変数nameとjobに「マイク」という名前と「弁護士」という職業の情報を引数として@myname,@myjobにそれぞれ代入しています。
ここで勘の鋭い方は「なぜ@を付けるの?@を外したmynameじゃダメなの?」と感じた人もいるのではないでしょうか?
@変数名はインスタンス変数と呼ばれるもので、クラス内の全メソッドで共通して使用することができます。
対して@を付けない、mynameのような変数はローカル変数と呼ばれます。

ローカル変数とはその変数が定義された場所でのみ利用できる変数です。文字通り、「ローカル」な変数です。

少し混乱してきましたね。それではここで、実際に@なしにプログラムを変更してみます。

ローカル変数はその下で定義されている、hiメソッドで使用できませんでした。
使える範囲がローカル変数ではダメなわけですね。

そして、

と定義されている部分、つまりクラス内で定義されたメソッドはインスタンスメソッドと呼びます。
インスタンスメソッドはそのクラスのオブジェクトに対してのみ呼び出すことができるメソッドです。
前に紹介したメソッドはいつでも呼び出せますが、インスタンスメソッドはクラスのオブジェクトからしか呼び出せないので、クラスのオブジェクトを作成する必要があります。

 

クラスのオブジェクトを作成する

それではクラスのオブジェクトを作成するにはどのようにすればよいのでしょうか?

クラスのオブジェクトを作成する場合には、クラスがもともと持っているnewメソッドを使うことで作成することができます。
この時に、引数をinitializeメソッドに渡すこともできます。

 

 

ここでは、Personクラスのオブジェクトを作成しmikeという変数の中に代入しています。

文字列「マイク」「弁護士」という値も引数として渡しています。

これでPersonクラスのオブジェクトが作成できたので、それに対してクラスで定義したインスタンスメソッドを使用することができます。

 

 

まとめ

いかがでしたでしょうか?今回、Rubyのクラスについて紹介しました。
他にもクラスメソッドなどもありますが、多く使われるのはインスタンスメソッドとなります。

・インスタンスメソッドはオブジェクトを作成しないと使えない
・インスタンスメソッドで変数を使うには、スコープの範囲に注意する
これらの注意事項をしっかり抑えておきましょう。

 

▼関連記事

【第1回】Ruby初心者向け!ターミナルで動くコードを書いてみる

【第2回】Ruby初心者向け!配列とは?

【第3回】Ruby初心者向け!ハッシュとは?

【 第4回】Ruby初心者向け!配列とハッシュの違いとは?

【第5回】Ruby初心者向け!Rubyの変数とは?

【第6回】Ruby初心者向け!Rubyの変数の種類まとめ

【第7回】Ruby初心者向け!Rubyの文字列とは?

【第8回】Ruby初心者向け!Rubyの数値とは?

【第9回】Ruby初心者向け!Rubyのメソッドの使い方

【第10回】Ruby初心者向け!Rubyのクラスの使い方









 

About Author

Comments are closed.