#はじめに
6月になりました。
スクールを卒業してもまだまだ学習熱は冷めません!
本日もアウトプットしていきます。
クラスとインスタンスについてです。
プログラミング学習1ヶ月目の頃は理解するのに本当に時間がかかりました。
#問題
.rb
class Profile
def initialize(name, position, nationality, club)
@name = name
@position = position
@nationality = nationality
@club = club
end
end
#上記のコードに追加を行い、以下の出力結果をにしてください。クラスとインスタンスを使用すること。
# 名前: カンテ
# ポジション: DMF
# 国籍: フランス
# クラブ: チェルシー
#解答
.rb
class Profile
def initialize(name, position, nationality, club)
@name = name
@position = position
@nationality = nationality
@club = club
end
def name
@name
end
def position
@position
end
def nationality
@nationality
end
def club
@club
end
end
player = Profile.new("カンテ", "DMF", "フランス", "チェルシー")
puts "名前: #{player.name}"
puts "ポジション: #{player.position}"
puts "国籍: #{player.nationality}"
puts "クラブ: #{player.club}"
サッカー選手のプロフィールを知りたいという程でProfileクラスを作ります。
Profile.newでインスタンスを生成し、変数player(サッカー選手)に代入します。その際に、名前、DMF、フランス、チェルシーの3つ実引数を指定します。
initializeメソッドを定義し、インスタンス変数を宣言します。
実引数の値を、仮引数である、(position, nationality, club)に渡します。
name => 'カンテ'
position => 'DMF'
nationality => 'フランス'
club => 'チェルシー'
そして、それぞれのインスタンス変数の値を返すために専用のメソッドを定義し、最後4行で定義付けたメソッドを呼び出しています。
#自分で考えた解答
先ほどの解答は模範解答にありましたが、私なりに考えた解答が以下になります。
.rb
# プロフィールの設計図作成
class Profile
#インスタンス作成時に実行される
def initialize(name, position, nationality, club)
@name = name
@position = position
@nationality = nationality
@club = club
end
#作成したインスタンスのよって値が異なる
def info
puts "名前:#{@name}"
puts "ポジション:#{@position}"
puts "国籍:#{@nationality}"
puts "クラブ:#{@club}"
end
end
playler = Profile.new("カンテ", "DMF", "フランス", "チェルシー")
playler.info
#名前:カンテ
#ポジション:DMF
#国籍:フランス
#クラブ:チェルシー