プログラミング基礎 II

第十回 (2011年12月5日)

クラスとメソッド

http://www.sw.it.aoyama.ac.jp/2011/PB2/lecture10.html

Martin J. Dürst

AGU

© 2011 Martin J. Dürst 青山学院大学

今日の予定

前回の復習

前回の演習 1

12月 2日 (金曜日) 22:00 までに Moodle に classes.rb のファイル名で投稿

今まで使ったできるだけ多くのクラスの名前を出力するプラグラムを作りなさい。

数では整数と実数、整数の場合に更に小さいものととても大きいもの (例: 10**50) を使ってみなさい。

整数の二種類のクラスの「境界線」の一番近い数を使いなさい。

(例えば irb で試しながら境界線に近づくように試してみてください。)

正解例: classes.rb

前回の演習 1: FixnumBignum

前回の演習 1: truefalsenil

前回の演習 2

12月 2日 (金曜日) 22:00 までに Moodle に famous_class.rb のファイル名で投稿

以前作った有名人のプログラム (正解例でも可能) に Person クラスを追加しなさい。

全体のデータは Person の配列 (例: famous_people) として保管

入力の後、最初の10個のインスタンスを中身が見えるように puts で出力

「10個のインスタンス」では Ruby らしい繰り返しを使用

ヒント:

正解例: famous_class.rb

 

インスタンス変数へのアクセス

インスタンス変数へのアクセス (実例)

インスタンス変数へのアクセス (単純化)

attr_... の詳細

メタプログラミング

宣言的記法

関数からクラスのメソッドへ

クラスのメソッド

演習 1

提出: 12月9日 (金曜日) 22:00 までに Moodle に famous_accessors.rb のファイル名で投稿

以前作った famous_people.rb (正解例でも可能; 以前「発展問題」で行った danger を含む) を famous_class.rb で使った class Person に置き換え、必要なアクセスメソッドを追加する。アクセスメソッドの一部は「手作り」、一部は attr_... で書く。

ヒント: 必要以上のアクセスメソッドは作らない

ヒント: 「掃除」されたデータファイル famous_cleaned.txt をダウンロードして使用

演習 2

提出: 12月9日 (金曜日) 22:00 までに Moodle に famous_methods.rb のファイル名で投稿

演習 1 のプログラムで bmi と danger の計算を関数からメソッドに変更しなさい。 更に、出力一行を文字列として返すメソッドも作りなさい。

ヒント: