課題1401
直方体を表すクラス Cuboid をパッケージ j2.lesson01 に作成しなさい。
直方体とはすべての面が長方形あるような六面体のことである。
この Cuboid クラスには以下の2つのインスタンスフィールドを作成すること。
- 高さを表すインスタンスフィールド height
- double 型
- 底面を表すインスタンスフィールド base
- 演習で作成した Rectangle 型
このクラスにはメソッドをひとつも用意しなくてよい。
手順
指定した箇所で必ずテストを行うこと。
- 各メソッドに対する詳細な擬似コードを作成する
- パッケージ j2.lesson01 にクラス Cuboid を作成
- 指定したインスタンスフィールドを作成する
- テスト項目「Cuboidに対する骨格テスト」をパス
テストの失敗メッセージ
骨格テスト
メッセージ | 詳細 |
---|---|
(クラス名), existence | パッケージ内に課題で指定したクラスが存在していない。パッケージやクラス名を確認 |
(フィールド名), existence | 指定されたフィールドが存在しない |
(フィールド名), not static | フィールドを作る際に static が余計についている |
(フィールド名), type <T> | フィールドを作る際に型の指定を間違っている。正しくは <T> |
課題1402
課題1401で作成した Cuboid クラスのインスタンスの表面積および体積を計算するプログラム CuboidAction をパッケージ j2.lesson01 に作成しなさい。
表面積とは立体の表面の面積を総和したものである。
mainメソッドの動作を表す擬似コードは以下の通りである。出力する文字列などは以下の擬似コードに従うこと。
プログラム全体 cuboid = 新しい直方体インスタンス 直方体の底面に新しい長方形インスタンスを代入 print "底面の高さを入力:" 入力された底面の高さを代入 print "底面の幅を入力:" 入力された底面の幅を代入 print "直方体の高さを入力:" 入力された直方体の高さを代入 print "表面積は" + surface-area-of(cuboid) + 改行 print "体積は" + volume-of(cuboid) + 改行
ただし、擬似コードにある surface-area-of を表すメソッドとして、surfaceAreaOf という名前のメソッドを同クラス内に作成すること。仮引数の型は (Cuboid) とし、戻り値の型は double とする。このメソッドは引数に Cuboid 型の直方体を取り、与えられた直方体に対して、その表面積を計算して返す。
また、擬似コードにある volume-of を表すメソッドとして、volumeOf という名前のメソッドを同クラス内に作成すること。仮引数の型は (Cuboid) とし、戻り値の型は double とする。このメソッドは引数に Cuboid 型の直方体を取り、与えられた直方体に対して、その体積を計算して返す。
結果の例
入力に順に 2.0, 3.0, 4.0 を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。
底面の高さを入力:2.0 底面の幅を入力:3.0 直方体の高さを入力:4.0 表面積は52.0 体積は24.0
手順
指定した箇所で必ずテストを行うこと。
- 各メソッドに対する詳細な擬似コードを作成する
- パッケージ j2.lesson01 にクラス CuboidAction を作成
- クラス内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
- 必ず throws IOException の記述を付加しておくこと (つまり、import java.io.*;も必要となる)
- クラス内に必要なメソッドの骨格を作成 (こちらには throws IOException は必要ない)
- テスト項目「CuboidActionに対する骨格テスト」をパス
- 擬似コードを各メソッドにコメントとして貼り付ける
- 擬似コードに対するプログラムを書く (main メソッド以外)
- 各メソッドをテストする (JUnitを用いてもよい)
- テスト項目 「CuboidActionに対する単体テスト」 をパス
- mainメソッドを実装する
- 実際に実行して動作を確認する
- テスト項目 「CuboidActionに対する機能テスト」 をパス
テストの失敗メッセージ
骨格テスト
メッセージ | 詳細 |
---|---|
(クラス名), existence | パッケージ内に課題で指定したクラスが存在していない。パッケージやクラス名を確認 |
(メソッド名), existence | 指定されたメソッドが存在しない。名前や仮引数の型を確認 |
(メソッド名), public | メソッドを作る際に public が抜けている |
(メソッド名), static | メソッドを作る際に static が抜けている |
(メソッド名), type <T> | メソッドを作る際に戻り値型の指定を間違っている。正しくは <T> |
(メソッド名), throws ... | メソッドを作る際に throws... の指定がない |
単体テスト
メッセージ | 詳細 |
---|---|
期待された結果と異なります | (メソッド名)を起動した結果が期待された結果と異なる。テスト項目を参照 |
未初期化フィールド | Cuboid.base に Rectangle インスタンスを代入していない可能性がある |
単体テストの項目
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
項目名 | 詳細 |
---|---|
surfaceAreaOf_234 | surfaceAreaOf メソッドを底面 2.0, 3.0 の長方形、高さ4.0の直方体で起動 |
surfaceAreaOf_567 | surfaceAreaOf メソッドを底面 5.0, 6.0 の長方形、高さ7.0の直方体で起動 |
volumeOf_234 | volumeOf メソッドを底面 2.0, 3.0 の長方形、高さ4.0の直方体で起動 |
volumeOf_567 | volumeOf メソッドを底面 5.0, 6.0 の長方形、高さ7.0の直方体で起動 |
機能テストの項目
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
項目名 | 詳細 |
---|---|
sample | 結果の例と同じ入力 |
課題1403 (optional)
人間の理想体重と Body Mass Index を計算するプログラム PersonAction および、人間を表すクラス Person をパッケージ j2.lesson01 に作成しなさい。
人間を表す Person クラスには以下のインスタンスフィールドを作成すること。
- 名前を表すインスタンスフィールド name
- String 型
- 身長をメートルで表すインスタンスフィールド height
- double 型
- 体重をkgで表すインスタンスフィールド weight
- double 型
PersonActionにはmainメソッドを作成する。mainメソッドの動作を表す擬似コードは以下の通りである。出力する文字列などは以下の擬似コードに従うこと。
プログラム全体 person = 新しいPersonインスタンス print "名前を入力:" person の名前 = 入力(String) print "身長を入力(cm):" person の身長 = 入力 (double) を メートルに変換したもの print "体重を入力(kg):" person の体重 = 入力 (double) print (personの名前) + "さん" 改行 print "理想体重は" + idel-weight-of(person) + "kg" 改行 print "BMI指数は" + BMI-of(person) 改行
ただし、擬似コードにある idel-weight-of を表すメソッドとして、idealWeightOf という名前のメソッドを同クラス内に作成すること。仮引数の型は (Person) とし、戻り値の型は double とする。このメソッドは引数に Person 型の情報を取り、与えられた情報に対して、その人の理想体重を計算して返す。
理想体重の計算方法は、次の式によって表すことができる。
- 理想体重 = 身長(m)2 * 22
また、擬似コードにある BMI-of を表すメソッドとして、bmiOf という名前のメソッドを同クラス内に作成すること。仮引数の型は (Person) とし、戻り値の型は double とする。このメソッドは引数に Person 型の情報を取り、与えられた情報に対して、その人のBMI指数を計算して返す。
BMI指数とは肥満の程度を判定するための数値のことで、次の式によって計算できる。
- BMI指数 = 体重(kg) / 身長(m)2
この値が22に近いほど統計的に病気をしにくいといわれている。
結果の例
入力に順に ほげ, 170.0, 60.0 を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。
名前を入力:ほげ 身長を入力(cm):170.0 体重を入力(kg):60.0 ほげさん 理想体重は63.57999999999999kg BMI指数は20.761245674740486
手順
指定した箇所で必ずテストを行うこと。
- 各メソッドに対する詳細な擬似コードを作成する
- パッケージ j2.lesson01 にクラス Person, PersonAction を作成
- PersonAction クラス内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
- 必ず throws IOException の記述を付加しておくこと (つまり、import java.io.*;も必要となる)
- クラス内に必要なメソッドの骨格を作成 (こちらには throws IOException は必要ない)
- テスト項目「Personに対する骨格テスト」をパス
- 擬似コードを各メソッドにコメントとして貼り付ける
- 擬似コードに対するプログラムを書く (main メソッド以外)
- 各メソッドをテストする (JUnitを用いてもよい)
- テスト項目 「Personに対する単体テスト」 をパス
- mainメソッドを実装する
- 実際に実行して動作を確認する
- テスト項目 「Personに対する機能テスト」 をパス
テストの失敗メッセージ
骨格テスト
メッセージ | 詳細 |
---|---|
(クラス名), existence | パッケージ内に課題で指定したクラスが存在していない。パッケージやクラス名を確認 |
(メソッド名), existence | 指定されたメソッドが存在しない。名前や仮引数の型を確認 |
(メソッド名), public | メソッドを作る際に public が抜けている |
(メソッド名), static | メソッドを作る際に static が抜けている |
(メソッド名), type <T> | メソッドを作る際に戻り値型の指定を間違っている。正しくは <T> |
(メソッド名), throws ... | メソッドを作る際に throws... の指定がない |
単体テスト
メッセージ | 詳細 |
---|---|
期待された結果と異なります | (メソッド名)を起動した結果が期待された結果と異なる。テスト項目を参照 |
未初期化フィールド | インスタンスを代入すべきフィールドにインスタンスを代入していない可能性がある |
単体テストの項目
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
項目名 | 詳細 |
---|---|
idealWeightOf_150 | idealWeightOf メソッドを身長150cmのPersonで起動 |
idealWeightOf_160 | idealWeightOf メソッドを身長160cmのPersonで起動 |
idealWeightOf_170 | idealWeightOf メソッドを身長170cmのPersonで起動 |
idealWeightOf_180 | idealWeightOf メソッドを身長180cmのPersonで起動 |
bmiOf_160a | bmiOf メソッドを身長160cm, 体重50kgのPersonで起動 |
bmiOf_160b | bmiOf メソッドを身長160cm, 体重60kgのPersonで起動 |
bmiOf_160c | bmiOf メソッドを身長160cm, 体重70kgのPersonで起動 |
bmiOf_160d | bmiOf メソッドを身長160cm, 体重80kgのPersonで起動 |
bmiOf_180a | bmiOf メソッドを身長180cm, 体重50kgのPersonで起動 |
bmiOf_180b | bmiOf メソッドを身長180cm, 体重60kgのPersonで起動 |
bmiOf_180c | bmiOf メソッドを身長180cm, 体重70kgのPersonで起動 |
bmiOf_180d | bmiOf メソッドを身長180cm, 体重80kgのPersonで起動 |
機能テストの項目
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
項目名 | 詳細 |
---|---|
sample | 結果の例と同じ入力 |
課題1404 (optional)
トランプを扱うプログラム CardAction および、トランプのカード一枚を表すクラス Card をパッケージ j2.lesson01 に作成しなさい。
トランプのカード一枚を表す Card クラスには以下のインスタンスフィールドを作成すること。
- マークを英語の頭文字一文字で表すインスタンスフィールド suite
- char 型
- A, 2, .. , 10, J, Q, K のランクを 1, .. , 13 の数値で表すインスタンスフィールド rank
- int 型
suite に入る値は 'S', 'C', 'H', 'D' のいずれかで、順にスペード、クラブ、ハート、ダイヤを表す。rankに入る値は 1 から 13 の値で、順に エース, 2, ... , 9, ジャック, クイーン, キングを表す。
CardActionではトランプのカード1枚を2文字または3文字で表した値を入力させ、それに対応する Card インスタンスを作成し、その Card インスタンスの内容を表示するだけの簡単なプログラムである。
トランプのカード1枚は、次のように2文字または3文字で表すことにする。
- 1文字目はトランプのマークを頭文字一文字で表したもの
- S, C, H, D のいずれかで、それぞれスペード、クラブ、ハート、ダイヤを表す
- 2文字目以降はトランプのランクを1文字または2文字で表したもの
- A, 2, .. , 10, J, Q, Kのいずれか
- 難しいようならば10については考慮しなくてよい
CardActionにはmainメソッドを作成する。mainメソッドの動作を表す擬似コードは以下の通りである。出力する文字列などは以下の擬似コードに従うこと。
プログラム全体 print "カードを入力:" card = 入力されたカード print "入力されたカードは" print(card)
ただし、擬似コードにある print(card) では、渡された Card 型のインスタンスに対して、以下の表にあるような表示を行うこと。
入力された値 | 出力すべき値 |
---|---|
SA | スペードのエース |
Sn (nは2~10の数字) | スペードのn |
SJ | スペードのジャック |
SQ | スペードのクイーン |
SK | スペードのキング |
CA | クラブのエース |
Cn (nは2~10の数字) | クラブのn |
CJ | クラブのジャック |
CQ | クラブのクイーン |
CK | クラブのキング |
HA | ハートのエース |
Hn (nは2~10の数字) | ハートのn |
HJ | ハートのジャック |
HQ | ハートのクイーン |
HK | ハートのキング |
DA | ダイヤのエース |
Dn (nは2~10の数字) | ダイヤのn |
DJ | ダイヤのジャック |
DQ | ダイヤのクイーン |
DK | ダイヤのキング |
特に実装方法は問わない。出力形式を擬似コードに合わせていれば好きなように設計して構わない。ただし、Cardクラスは指定されたものを必ず用意すること。
結果の例
いくつか例を示す。
カードを入力:SA 入力されたカードはスペードのエース
カードを入力:C5 入力されたカードはクラブの5
カードを入力:HJ 入力されたカードはハートのジャック
カードを入力:DQ 入力されたカードはダイヤのクイーン
カードを入力:SK 入力されたカードはスペードのキング
手順
指定した箇所で必ずテストを行うこと。
- 各メソッドに対する詳細な擬似コードを作成する
- パッケージ j2.lesson01 にクラス Card, CardAction を作成
- CardAction クラス内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
- 必ず throws IOException の記述を付加しておくこと (つまり、import java.io.*;も必要となる)
- クラス内に必要なメソッドの骨格を作成 (こちらには throws IOException は必要ない)
- テスト項目「Cardに対する骨格テスト」をパス
- 擬似コードを各メソッドにコメントとして貼り付ける
- 擬似コードに対するプログラムを書く (main メソッド以外)
- 各メソッドをテストする (JUnitを用いてもよい)
- mainメソッドを実装する
- 実際に実行して動作を確認する
- テスト項目 「Cardに対する機能テスト」 をパス
テストの失敗メッセージ
骨格テスト
メッセージ | 詳細 |
---|---|
(クラス名), existence | パッケージ内に課題で指定したクラスが存在していない。パッケージやクラス名を確認 |
(メソッド名), existence | 指定されたメソッドが存在しない。名前や仮引数の型を確認 |
(メソッド名), public | メソッドを作る際に public が抜けている |
(メソッド名), static | メソッドを作る際に static が抜けている |
(メソッド名), type <T> | メソッドを作る際に戻り値型の指定を間違っている。正しくは <T> |
(メソッド名), throws ... | メソッドを作る際に throws... の指定がない |
機能テストの項目
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
項目名 | 詳細 |
---|---|
SA | 入力に "SA" |
S2 | 入力に "S2" |
S5 | 入力に "S5" |
S9 | 入力に "S9" |
SJ | 入力に "SJ" |
SQ | 入力に "SQ" |
SK | 入力に "SK" |
CA | 入力に "CA" |
C2 | 入力に "C2" |
C5 | 入力に "C5" |
C9 | 入力に "C9" |
CJ | 入力に "CJ" |
CQ | 入力に "CQ" |
CK | 入力に "CK" |
HA | 入力に "HA" |
H2 | 入力に "H2" |
H5 | 入力に "H5" |
H9 | 入力に "H9" |
HJ | 入力に "HJ" |
HQ | 入力に "HQ" |
HK | 入力に "HK" |
DA | 入力に "DA" |
D2 | 入力に "D2" |
D5 | 入力に "D5" |
D9 | 入力に "D9" |
DJ | 入力に "DJ" |
DQ | 入力に "DQ" |
DK | 入力に "DK" |