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回目の温度の華氏>

コードを実行してみませんか?

この問題のコードエディタと実行機能を使用するには、ログインしてください。

アカウントをお持ちでない方

新規登録