LoginSignup
0
1

More than 3 years have passed since last update.

Rubyのクラスとインスタンスについて

Posted at

プログラミングの勉強日記

2020年7月11日 Progate Lv.175
RubyⅣ

クラスとインスタンス

 ここでは簡単にクラスとインスタンスについて説明する。プログラミングでメニューという「もの」を作るためには、まずその設計図が必要でとなる。設計図をクラス、「もの」をインスタンスという。(設計図(クラス)をもとに「もの」(インスタンス)を生成)なので、インスタンスを生成するためにはクラスを用意し、クラスからインスタンスを作成、そしてインスタンスに情報を追加する。

クラスの定義

 クラスはclass クラス名で定義できる。クラスは必ず大文字ではじめ、endを忘れずに書く。

index.rb
class Menu
end

attr_accessor

 インスタンス変数を直接変更して操作ができるようにするもの。情報を持たせるためにattr_accessor シンボルと書く。1つのクラスに対して複数のインスタンス変数を使うこともできる。

index.rb
class Menu
  attr_accessor :name
end

インスタンスの生成

 クラスを元に新しくインスタンスを生成するためにはクラス名.newとする。変数名=クラス名.newとすることで生成したインスタンス変数を代入できる。
 インスタンスに情報を持たせるためには、クラスで用意したインスタンス変数に値を代入する。インスタンス.変数名=値でインスタンス変数に値をセットすることができる。

index.rb
class Menu
  #処理
end
#変数menu1にMenuクラスからのインスタンスを生成し、代入する
menu1=Menu.new
menu1.name="すし"

クラスの中でメソッドを使う

 クラスの中で定義したメソッドはインスタンスに対して使うようにして呼び出す。インスタンス.メソッド名で呼び出す。クラスの中で定義したメソッドを呼び出すものをインスタンスメソッドという。

index.rb
class Menu
  attr_accessor :name
  attr_accessor :price
  #クラスの中でメソッドを定義
  def show
    puts "menu"
  end
end
menu1=Menu.new
#クラスの中で定義したメソッドの呼び出し
menu1.show
コンソール
menu

インスタンスメソッド

 クラスの中で定義したインスタンスに対して呼び出すメソッドのこと。引数を受け取ったり戻り値を返したりすることができる。インスタンスが持つ情報である「インスタンス変数」とインスタンスに対して呼び出すインスタンスメソッドはクラスの中で定義する。

index.rb
class Menu
  #処理
  def show(data)
    return "#{data}です"
  end
end
menu1=Menu.new
puts menu1.show("メニュー")
コンソール
メニューです

インスタンスメソッドの中でインスタンス変数を使う

 インスタンスメソッドの中では特殊な変数selfを用いてself.変数名とすることで、インスタンス変数を扱える。インスタンスメソッドでは変数selfに呼び出したインスタンス自身が代入されている。

index.rb
class Menu
  #処理
  def show_name
    puts "#{self.name}です"
  end
end
menu1=Menu1.new
menu1.name="すし"
#インスタンスメソッドの呼び出し
menu1.show_name
コンソール
すしです

initializeメソッド

 インスタンスを生成した直後に処理を実行できる。クラス名.newでインスタンスを生成した直後に自動で呼び出される。

index.rb
class Menu
  #処理
  def initialize
    puts "メニュー"
  end
end
#Menu.newが実行されると自動でinitializeメソッドを呼び出す
menu1=Menu.new
コンソール
メニュー

 インスタンスメソッドの中ではself.変数名でインスタンス変数を扱うことができ、self.変数名=値でインスタンス変数に値を代入する。

index.rb
class Menu
  #処理
  def initialize
    self.name="すし"
  end
end
menu1=Menu.new
puts menu1.name
コンソール
すし

initializeメソッドの変数

 initializeメソッドにも引数を渡すことができる。クラス.newに対して引数を渡すことでその値を渡せる。もちろんキーワード引数を用いることもできる。

index.rb
class Menu
  #処理
  def initialize(message)
    puts message
  end
end
menu1=Menu.new("Hello")
コンソール
Hello

require

 ファイルの読み込みを行う。(main文がわかれていて、別のファイルのクラスを読み込みたいときに使う)

index.rb
requie "./menu"
menu1=Menu.new(name: "すし"
menu.rb
class Menu
  attr_accessor :name
  attr_accessor :price
end

gets.chomp

 入力を受け付けるときに使う。このコードが実行されるとコンソールが入力待機状態になる。変数=gets.chompとすることでエンターキーを押されるまで入力された値を変数に代入できる。

index.rb
puts "名前の入力"
name=gets.chomp
puts "あなたの名前は#{name}です"
コンソール
名前の入力
田中(入力する)
あなたの名前は田中です

 数値を受け取る場合は、gets.chomp.to_iとすることで入力された内容を数値に変換できる。

index.rb
puts "数字の入力"
number=gets.chomp.to_i #入力された内容を数値に変換
puts "#{number}の2倍は#{number*2}です"
0
1
0

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
0
1