LoginSignup
0
0

More than 5 years have passed since last update.

【Ruby】インスタンスの生成プロセス<広島東洋カープ編②>

Last updated at Posted at 2018-06-25

4.クラスの中でメソッドを定義する

  • まずは定義から
class Player
  attr_accessor :name 
  attr_accessor :number
  attr_accessor :position
  attr_accessor :throw_hand
  attr_accessor :hitting_hand

  def show
    puts "広島東洋カープの選手です"
  end
end

  • クラスの中で定義したメソッドを呼び出す
class Player
  attr_accessor :name 
  attr_accessor :number
  attr_accessor :position
  attr_accessor :throw_hand
  attr_accessor :hitting_hand

  def show
    puts "広島東洋カープの選手です"
  end

end

#クラスの中で定義しインスタンスに対して呼び出すメソッドのことをインスタンスメソッドと呼ぶ
player2.show
  • インスタンスメソッドを使って引数を受け取る/戻り値を返す

class Player
  attr_accessor :name 
  attr_accessor :number
  attr_accessor :position
  attr_accessor :throw_hand
  attr_accessor :hitting_hand

#引数 player_data を渡し、
  def show(player_data)
#戻り値 "#{player_data}です" を返す
    return "#{player_data}です"
  end

end

player1 = Player.new
puts player.show("広島東洋カープの選手")

  • 次。 インスタンスメソッドの中で「self.変数名」を用い、インスタンス変数を扱う

・・・段々わからなくなってきたぞ?ちょっと確認しよう
【インスタンスメソッドとは】
クラスの中で定義し、インスタンスに対して呼び出すメソッドのこと。
今回の例でいうと、Playerクラスの中でshowを定義した。そこでplayer_dataという引数を渡し、戻り値を返すことができるというもの。
【インスタンス変数とは】
インスタンスに情報を持たすために、生成したインスタンスを変数に代入したもの。
player2 = Player.new
のplayer2がインスタンス変数で、
player2.name ='Ryosuke Kikuchi'
player2.number = 33
みたいに使ってきたでしょ?

この前提のもと。
self.変数名を使うことで、変数selfに呼び出したインスタンス自身が代入されているということみたい。
・・・まあちょっとみてみよう。


class Player
  attr_accessor :name 
  attr_accessor :number
  attr_accessor :position
  attr_accessor :throw_hand
  attr_accessor :hitting_hand

#showメソッドを定義する
  def show
#showメソッドの中身は、"どうも◯◯です"と表示することみたい
    puts "どうも、#{self.name}です"
  end

end

#クラスPlayerにインスタンスplayer1を生成
player1 = Player.new
#インスタンスplayer1のname情報は"Kosuke Tanaka"
player1.name = "Kosuke Tanaka"
#player1に対しshowメソッドを呼び出す
player1.show

実行結果

どうも、Kosuke Tanakaです

  • これで何ができるかというと、showメソッドを呼び起こすことでインスタンスplayer1の名前を出力できた(こちらが何かを選択することで答えを返してくれた)わけですね

例えば、

class Player
  attr_accessor :name
  attr_accessor :number
  attr_accessor :position
  attr_accessor :throw_hand
  attr_accessor :hitting_hand

  def show_data
    puts "どうも、#{self.name}です"
    puts "背番号っすか? #{self.number}っすよ"
    puts "あ、#{self.position}守ってまあす"
  end

end

player1 = Player.new
player2 = Player.new
player3 = Player.new
player4 = Player.new

player1.name = 'Kosuke Tanaka'
player1.number = 2
player1.position = 'short stop'
player1.throw_hand = 'right'
player1.hitting_hand = 'left'

player2.name = 'Ryosuke Kikuchi'
player2.number = 33
player2.position = 'second'
player2.throw_hand = 'right'
player2.hitting_hand = 'right'

player3.name = 'Yoshihiro Maru'
player3.number = 9
player3.position = 'center fielder'
player3.throw_hand = 'right'
player3.hitting_hand = 'left'

player4.name = 'Seiya Suzuki'
player4.number = 51
player4.position = 'right fielder'
player4.throw_hand = 'right'
player4.hitting_hand = 'right'

#インスタンスplayer4に対してクラスPlayerのメソッドshow_dataを呼び出し
player4.show_data

実行結果

どうも、Seiya Suzukiです
背番号っすか? 51っすよ
あ、right fielder守ってまあす

こんな少しおバカな遊びができると。

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