1
0

More than 1 year has passed since last update.

Ruby:クラスの概念を整理してみた

Last updated at Posted at 2021-11-09

そもそもクラスとは

ー設計図ー

正直ピンと来そうで来ないです・・・・   もう少し細分化していきます。

まず設計図に必要な情報は・・・・
・どのような情報を持っているのか(初期設定)・・・・・インスタンス変数
・どんなことができるのか(メソッド)・・・・・・インスタンスメソッド

インスタンスとは??

・インスタンスが付く時は必ずクラス内で定義されている
・newアクションで生成された実体である(設計図だけでは実体はない)

まず日本語で記述してみる(今回はカップを設計してみます)

class  カップ    
     有無や容量を全てのメソッドで使えるようにする
 def 初期設定 (有無,容量)
    - 取っ手があるかないか
    - カップの容量
  end

 def カップのできること (投入量,消費量)
     - 飲み物を保管する
     - 飲み物を取り出す
       →条件分岐  投入量が多すぎる時
              →条件分岐  消費量が多すぎる時 
  end
end

カップ1 = カップ.new(取ってあり,200ml)  #初期値の情報を代入してカップ1を生成
カップ2 = カップ.new(取って無し,100ml)  #上記に同じくカップ2を生成

カップ1.カップのできること(投入量,消費量)   #上記で生成した変数にメッソドを当てる
カップ2.カップのできること(投入量,消費量)   #上記で生成した変数にメッソドを当てる


実際に記述してみる

class Cap
    attr_accessor :handle, :capacity
  def initialize(handle,capacity)
   @handle = handle
   @capacity = capacity
  end

  def change(input,remove)
    if input > @capacity
        puts "キャパオーバーです。"
    else
        input -= remove
            if input < 0
                puts "飲みすぎです"
            else
               input 
            end
    end
  end
end

cup_1 = Cap.new(true,500)
cup_2 = Cap.new(false,300)

puts cup_1.change(1000,100)
puts cup_2.change(200,50)

上記の記述の出力結果

Image from Gyazo

キャパオーバーです。

150

上記の内容からのまとめ

・クラスをつくることによってカップ1やカップ2のような同じ機能を持った実体を簡単に複製できる。
・クラスの中で定義された変数やメソッドをインスタンス変数やインスタンスメソッドと呼ぶ
・クラス(設計図)はnewで実体(インスタンス)を生成する
・生成されたインスタンスは個別の情報を持っている
・共通の情報をもつ時はクラス変数を使う"@@クラス名"

一旦ここまで整理しました。
言葉足らずや認識違いがある時はご指摘頂けますと幸いです。

教えてくれたエンジニア

1
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0