# list0203.rb
# クラス変数と返り値

class NameCard
  @@allnum = 0

  def initialize(name,age)
    @name = name
    @age  = age
    @@allnum = @@allnum + 1
    @num  = @@allnum
  end

  def show
    print "学籍番号:",@num,"  氏名:",@name,"  年齢:",@age,"\n"
  end

  def who1
    return @name      # インスタンス変数の指すオブジェクトを返す。
  end

  def who2
    return @name.dup  # インスタンス変数の指すオブジェクトを複製したものを返す。
  end

  def who3
    return @name+"様" # 「+"様"」の結果のオブジェクトを返す。
  end
end

# メインルーチン

p1 = NameCard.new("湖山二郎",19)
p2 = NameCard.new("鳥大太郎",20)
p3 = NameCard.new("鳥取花子",19)

x = p1.who1
x << "君"
puts p1.who1

y = p2.who2
y << "君"
puts p2.who1

z = p3.who3
z << "君"
puts p3.who3