009-002-012
カプセル化の設計パターン
上級
問題説明
カプセル化の設計パターン
この問題では: Temperatureクラスを定義し、setCelsius()でバリデーション付きの温度設定とtoFahrenheit()で摂氏から華氏への変換を行い、結果を標準出力に表示するプログラムを作成します。
学習目標: private/publicとgetter/setterを使ったカプセル化の実践的な設計を理解する
概要
カプセル化では、フィールドをprivateにしてgetterとsetterで外部からのアクセスを制御します。setterでバリデーション(入力検証)を行い、不正な値の設定を防ぎます。
仕様
- Temperatureクラスを定義する
- privateフィールド: celsius(double型ではなくint型で管理)
- setter: setCelsius(int c) - 範囲は-273から1000まで。範囲外は設定しない
- getter: getCelsius() - 現在の温度を返す
- toFahrenheit() - 華氏に変換して返す(celsius * 9 / 5 + 32)
- 標準入力から3つの整数値を読み込む
- 1行目: 初期温度(有効な範囲内)
- 2行目: 試行する温度(範囲外の値)
- 3行目: 2回目に設定する温度(有効な範囲内)
- 正常値と範囲外の値で動作を確認する
入力形式
<初期温度>
<試行する温度(範囲外)>
<2回目の温度>
出力形式
Celsius: <初期温度>
Fahrenheit: <初期温度の華氏>
Celsius: <試行後の温度(変化なし)>
Celsius: <2回目の温度>
Fahrenheit: <2回目の温度の華氏>
