プログラミング基礎 II

第九回 (2011年11月28日)

クラスとインスタンス

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

Martin J. Dürst

AGU

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

今日の予定

前回の演習 1

提出: 11月25日 (金曜日) 22:00 までに Moodle に famous_def.rb のファイルとして投稿

以前に famous_sort.rb として作ったプログラム (正解例でも可) で、BMI の計算の関数を追加し、この関数を利用しなさい。

正解例: famous_def.rb

前回の演習 2

提出: 11月25日 (金曜日) 22:00 までに Moodle に chess_board.rb のファイルとして投稿

次の模様を簡単に作れる関数を作りなさい (模様の各行は文字列で、模様全体は行を配列):

この関数を使って、一マスが高さ5、幅8 のチェスボードを作成、画面に出力するプログラムを作りなさい。

ヒント:

正解例: chess_board.rb

 

前回の演習 3

(提出不要)

以前作った模様、知り合いなどが作った模様、これから作りたい模様が簡単で便利に作れる関数をいくつか考えなさい

クラス

(class)

インスタンス

(instance)

クラスのチェック

クラスの作成

インスタンスの作成

インスタンス作成の応用例

class Person
end

p = Person.new
puts p

#<Person:0x2a1ac10> (0x2a1ac10 はその都度違う16進法の番号)

puts p.class.name

Person

インスタンス変数

(instance variable)

初期化

(initialization)

初期化の実例

class Person
  def initialize (name, height, weight)
    @name = name
    @height = height
    @weight = weight
  end
end

p = Person.new('青山 花子', 160, 50)
puts p

#<Person:0x2b67418 @name="青山 花子", @height=160, @weight=50>

 

今日のまとめ

演習 1

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

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

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

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

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

演習 2

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

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

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

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

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

ヒント: