- 締切済み
Javaのクラスについてご教授してください。
資格試験の合否プログラムクラスを作成するのを教えて下さい。資格試験は1次、2次とあって100点が満点です。 (条件) 1.1次試験の結果が、1次試験の平均点の半分未満の場合は不合格にする。同様に2次試験も平均点の半分未満のは不合格。 2.1次試験の平均点の1.5倍と2次試験の平均点の1.5倍を足した点数と130点を比較して低い点数を1次と2次の試験点数の和が上回った場合は合格。 3.1次試験結果点数、2次試験結果点数をsetメソッドで設定し、結果判定メソッドで結果取得できるようにする。 *平均点はコンストラクタの引数として設定。 以上、長くなりましたが正解に近い案をお待ちしております。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- buriburi3
- ベストアンサー率44% (353/792)
>#3 私もそう思うが、問題文(仕様)にセッター使えと書いてあるから仕方ない。 つか、もっとすなおに考えれば、全員の点数を渡して平均点の算出から合否判定までまとめてやった方が 早い。
- Tacosan
- ベストアンサー率23% (3656/15482)
や, もっと単純に「試験結果の点数を判定メソッドに渡して合否を返してもらう」方が素直ではないかな>#2. setter を使って結果の点数を「わざわざ」内部状態として記憶することで, 「メソッドの呼び出しに (setterを呼び出してから判定メソッドを使うという) 依存関係が発生する」 という問題が生じます. しかも, setter の処理は事実上「内部状態を変更する」だけです. この仕様を見る限り試験の結果を内部状態として持つ意味は見当たらないので, 「試験の成績を引数でもらって合否を返す」 1つのメソッドにしてしまった方が「みんなハッピー」となるはずです. もちろん「行数に比例してお金がもらえる」ようなところだとそうも言っていられませんが, それはそんなところが間違ってる.
- buriburi3
- ベストアンサー率44% (353/792)
>平均点はコンストラクタの引数として設定 だから、試験の点数をわざわざ set する必要があるのでしょう。 3.が複数解釈がありえるってのは 1次と2次の点数それぞれにセッタを持たせるか一度にセットするかとかですね。 こんな感じ。 public class Judge { /** * コンストラクタ. * @param averageMark 平均点 */ public Judge(int averageMark) { // 中身は自分で考えてね } /** * 得点の設定. * @param score1 1次得点 * @param score2 2次得点 */ public void setScore(int score1,int score2) { // 中身は自分で考えてね } /** * 合否判定を返す. * @return 判定結果をどうやって返すのか書いてなかったね。 * とりあえずブール型で true-合格 false-不合格 とか? */ public boolean getJudge( ) { // 中身は自分で考えてね } }
- Tacosan
- ベストアンサー率23% (3656/15482)
えぇと, どこがわからないんだろう? 仕様をそのまま書けばいいだけだと思うんだが.... ああ, 3 は解釈が複数ありうるな. でも, わざわざ「1次試験結果点数、2次試験結果点数をsetメソッドで設定」する意味がわからん. 判定クラスを作るのはわかるしそれをオブジェクトとして扱うのもまあいいだろうけど, 試験の点数をわざわざ set する理由ってなんだろう.
お礼
ありがとうございます。 参考にさせて頂きます。