http://www.sw.it.aoyama.ac.jp/2011/PB2/lecture10.html
© 2011 Martin J. Dürst 青山学院大学
class
... end
内に定義可能.new
で作成、initialize
で初期化@
で始まるインスタンス変数で保存12月 2日 (金曜日) 22:00 までに Moodle に classes.rb
のファイル名で投稿
今まで使ったできるだけ多くのクラスの名前を出力するプラグラムを作りなさい。
数では整数と実数、整数の場合に更に小さいものととても大きいもの
(例: 10**50
) を使ってみなさい。
整数の二種類のクラスの「境界線」の一番近い数を使いなさい。
(例えば irb
で試しながら境界線に近づくように試してみてください。)
正解例: classes.rb
Fixnum
と Bignum
Fixnum
Bignum
2**30
(2**30
は最小の (正) の
Bignum
)2**62
(2**62
は最小の (正) の
Bignum
)true
と false
と
nil
true
(真、正しい)false
(偽、間違っている)nil
を使用true
、false
、nil
のクラスはそれぞれ
TrueClass
、FalseClass
、NilClass
12月 2日 (金曜日) 22:00 までに Moodle に
famous_class.rb
のファイル名で投稿
以前作った有名人のプログラム (正解例でも可能) に
Person
クラスを追加しなさい。
全体のデータは Person
の配列 (例:
famous_people
) として保管
入力の後、最初の10個のインスタンスを中身が見えるように
puts
で出力
「10個のインスタンス」では Ruby らしい繰り返しを使用
ヒント:
Person
の初期化は一行の入力からやった方がいいdef initialize (line)
)正解例: famous_class.rb
@bmi
の場合、get_bmi
と set_bmi
が慣例bmi
と bmi=
が使用def bmi @bmi end
def bmi= (bmi) @bmi = bmi end
p.bmi= 21
puts p.bmi
⇒ 21
attr_reader :変数名
attr_writer :変数名
attr_accessor :変数名
attr_...
の詳細attr_reader :name
attr_writer :bmi
attr_accessor :danger
attr_reader :name, :weight, :height
@
の代わりに
:
が必要attr_...
は普通クラスの先頭に記述:name
などは Symbol
であるが、この授業では細かく扱わないattr_reader
などはメソッドを作るメソッドattr_reader
などは宣言的記法:def ... end
を使った記法は手続き的記法:person.weight /
person.height
など繰り返される記述が多い@weight /
@height
def bmi_simple (weight, height)
weight / height
end
bmi_simple(person.weight, person.height)
class Person def bmi_simple @weight / @height end end person.bmi_simple
提出: 12月9日 (金曜日) 22:00 までに Moodle に
famous_accessors.rb
のファイル名で投稿
以前作った famous_people.rb
(正解例でも可能;
以前「発展問題」で行った danger を含む) を
famous_class.rb
で使った class Person
に置き換え、必要なアクセスメソッドを追加する。アクセスメソッドの一部は「手作り」、一部は
attr_...
で書く。
ヒント: 必要以上のアクセスメソッドは作らない
ヒント: 「掃除」されたデータファイル famous_cleaned.txt
をダウンロードして使用
提出: 12月9日 (金曜日) 22:00 までに Moodle に
famous_methods.rb
のファイル名で投稿
演習 1 のプログラムで bmi と danger の計算を関数からメソッドに変更しなさい。 更に、出力一行を文字列として返すメソッドも作りなさい。
ヒント:
if bmi <= 18.5
)bmi
)
による同一の値の計算の無駄は気にしない様にattr_...
は attr_reader
(インスタンス変数一つ) に減らされる