余力のあるものは次の問題についてプログラムを作成し koeki MAILにて提出せよ。未完成で締切内に送ったものにコメントが 返された場合は新たな指定締切内に再送してよい。
次のいずれかを選び、お財布プログラムのpurse.rb, purse-use.rb の作り方にならって 実際に動くプログラムを作成せよ。
x = Serial.new
したあと、x.next
すると
1回目は1、2回目は2、3回目は3、と1ずつ増えた数が返るクラス Serial
(4)
j = Janken.new
したあと、j.hand
するたびに
「グー」「チョキ」「パー」がランダムで出る Janken クラス
(5)
以下のメソッドが必要。
上記の Janken クラスを拡張し、「前回出した手とは違うものを出す」
ように工夫された NewJanken クラス
(6)
必要なメソッドやインスタンス変数は以下の通り
(7)
醤油・味噌・塩ラーメンを提供する Ramen クラス
ramen = Ramen.new(50, 30, 20)
のように、「醤油ラーメンの仕込み数」、「味噌ラーメンの仕込み数」、
「塩ラーメンの仕込み数」の3つを引数として初期化する。
ramen.shoyu(3)
とすると醤油ラーメン3杯を作って提供、
同様に ramen.miso(N)
は味噌ラーメン、
ramen.shio(N)
は塩ラーメンを指定された
数だけ提供する。仕込み数を超える注文は「売り切れ」と表示する。
(8)
好きな種目を選び、そのルールの2、3個をそれっぽく実装したクラス。
クラス名はその種目の英語名の先頭を大文字にしたものとする(例:
Baseball, Basketball, Football, Volleyball, Dancing, Fencing, Kendo,
Shodo, PingPong, Swimming, Karuta, ...)
(12)
括弧内の数値は、そのプログラムが正しく作れて自分の言葉で説明できた
場合の最高点である。
なお、クラス定義とそれを利用するプログラムファイルは別々とし、
利用する側は require_relative "定義ファイル"
として読み込む。クラス定義には 必ずinitialize
メソッド(コンストラクタ)を定義すること。つまりクラス定義側のプログラムは
以下のような構成となる。
class クラス名 def initialize() # インスタンス変数を初期化するコードなど end def メソッド定義その1 # 1つ目のメソッド定義 end def メソッド定義その2 # 2つ目のメソッド定義 end end
締切 | 5日後 |
To: |
ruby-2-06@e.koeki-u.ac.jp |
Subject: | クラス定義 選択番号 |
宛先注意!
本文の先頭に
クラス: | XX |
学籍番号: | c123xxx |
氏名: | ○×△□ |
のように自分のクラス番号氏名を入れる。
レポート本体は以下の構成にすること。
参考文献は正しい書式で書くこと(違う書式は減点)。 GAIはためらわず利用してよいが、もらった説明を理解するまで質問を 繰り返し、レポートの説明には自分の言葉に直したものを書くこと。 またGAIへの質問は、偽名から始める指定の方法でやり取りをして、 その共有リンクを載せる。