スポンサーリンク

【Ruby】クラスとインスタンスについて具体例をつかって簡単に説明【初心者向け】

プログラミング
スポンサーリンク

 プログラミングの勉強、お疲れ様です。
 今回は、Rubyの学習をしている際に、分かりにくい分野である「クラスとインスタンス」についての話をしていきます。
 この記事を読み終えたとき「こういうものか、大体分かった」と思っていただけたら幸いです。

クラスとは何か

 オブジェクト指向の考えにおける、「属性」と「メソッド」を定義しているものになります。
 「・・・なんのこっちゃ?」と思われたかもしれません。

 よく挙げられる例としては、「設計図」になりますね。
 設計図(クラス)には「これから作る物(インスタンス)」には、「どんな特徴があって(属性)」、「共通もしくは個別にどんな働きをするのか(メソッド)」が記されています。
 
 もうちょっと詳しく説明していきますね。

オブジェクト指向についてざっくりと説明

 オブジェクト指向とは、ざっくりと言うと「物(オブジェクト)によって働き(コード)を分ける考え方」ことを言います。

 たとえば、音楽プレイヤーがあったとしましょう。
 音楽プレイヤーには電源ボタン、再生ボタンなど、ボタンがいくつかありますね。
 オブジェクト指向とは、このようにボタン1つに対して1つの仕事を持たせているようなものです。
 これによって、「あれ、再生ボタンを押しても再生されない。再生ボタンが壊れているかも」と故障(エラー)の原因が分かりやすくなるという特徴があります。

 もし、ボタンが1つしかなくて、1回押したら電源オン、2回押したら再生、…回押したら、という設定になっているのが、オブジェクト指向を用いない考え方になります。

属性についてざっくりと説明

 属性とは、ざっくり言うと、「その物(オブジェクト)がもつ性質」を言います。

 例えば、「車」というクラスでしたら、考えられる属性は「車の色」「乗車定員」といった、「車がもつ性質」を表します。

メソッドについてざっくりと説明

 メソッドとは、ざっくり言うと、「そのクラスができる動き」を言います。

 例えば、先に説明した「車」というクラスでしたら、「走る」「クラクションを鳴らす」といった、「車が共通して行う動き」を表します。

インスタンスとは何か

 インスタンスとは、クラスの説明でお話しした「設計図を元に作られた実物」を指します。

 「車」というクラスでしたら、インスタンスは「パトカー」「フェラーリ」「ワゴンR」などでしょうか。
 言い換えると、「車」というカテゴリに属する「実物」というイメージでしょうか。

具体的なコードを用いて説明

 下記のコードは「Car」という設計図(クラス)を元に、「pato」と「wagonR」という具体物(インスタンス)を作成しています。
 Carクラスではインスタンスを作成する際に、属性として、名前(car_name)、色(car_color)、音(car_sound)を入力するように設定しています。

 そしてメソッドとして、Carクラスに共通している「車は走るもの」を表す、self.runメソッド(ここでいうselfはCarのこと)、そして作成したインスタンスそれぞれの特徴を調べるためのcar_characterメソッドを作成しています。

class Car
  def initialize(car_name, car_color, car_sound) #インスタンスの属性(特徴)を設定
    @car_name = car_name
    @car_color = car_color
    @car_sound = car_sound
  end

  def self.run #クラスに共通したメソッド(動き)
   puts "全ての車は走ります"
  end

  def car_character #インスタンス用のメソッド
    puts "#{@car_name}は#{@car_color}で#{@car_sound}と音をならします"
  end
end

pato = Car.new("パトカー", "白黒", "ウーウー") #インスタンスの作成
wagonR = Car.new("ワゴンR", "シルバー", "プップー") #インスタンスの作成

pato.car_character #インスタンスのメソッドを呼び出す
wagonR.car_character #インスタンスのメソッドを呼び出す

Car.run #クラスのメソッドを呼び出す

 patoとwagonRというインスタンスをCar.newで作成し、〇〇.car_characterとすることで、それぞれのインスタンスメソッドを呼び出しています。
 そして最後に、Car.runとすることで、クラスメソッドを呼び出しています。

 上記内容をターミナルで呼び出すと、以下のようになります。

 パトカーは白黒でウーウーと音をならします
 ワゴンRはシルバーでプップーと音をならします
 全ての車は走ります 

 以上がクラスとインスタンスの説明になります。

この記事を読んだ方へのおすすめ記事

コメント