任意課題

余力のあるものは次の問題についてプログラムを作成し koeki MAILにて提出せよ。未完成で締切内に送ったものにコメントが 返された場合は新たな指定締切内に再送してよい。

次のいずれかを選び、お財布プログラムのpurse.rb, purse-use.rb の作り方にならって 実際に動くプログラムを作成せよ。

  1. x = Serial.new したあと、x.next すると 1回目は1、2回目は2、3回目は3、と1ずつ増えた数が返るクラス Serial
    (4)

  2. j = Janken.new したあと、j.hand するたびに 「グー」「チョキ」「パー」がランダムで出る Janken クラス
    (5)

    以下のメソッドが必要。

    • じゃんけんの手を出すhandメソッド
  3. 上記の Janken クラスを拡張し、「前回出した手とは違うものを出す」 ように工夫された NewJanken クラス
    (6)

    必要なメソッドやインスタンス変数は以下の通り

    • 前回の手を保存しておくインスタンス変数
    • 次の手をランダムで出し前回とは違うものにするメソッド
  4. 10kgグラムまで米が入る米びつを表す RiceChestクラス
    • 現在入っている米の重さを表す変数
    • 1回ボタンを押すと1合(150g)の米を取り出せるメソッド
    • 5kgまたは10kgの米を追加で入れるメソッド
    • 今の残りの重さを出力する(または返す)メソッド

    (7)

  5. 醤油・味噌・塩ラーメンを提供する Ramen クラス

    ramen = Ramen.new(50, 30, 20)
    のように、「醤油ラーメンの仕込み数」、「味噌ラーメンの仕込み数」、 「塩ラーメンの仕込み数」の3つを引数として初期化する。 ramen.shoyu(3) とすると醤油ラーメン3杯を作って提供、 同様に ramen.miso(N) は味噌ラーメン、 ramen.shio(N) は塩ラーメンを指定された 数だけ提供する。仕込み数を超える注文は「売り切れ」と表示する。
    (8)

  6. 好きな種目を選び、そのルールの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への質問は、偽名から始める指定の方法でやり取りをして、 その共有リンクを載せる。


本日の目次