Biorhythmクラスの変数宣言とコンストラクタ

------------------------------------

まずは変数宣言です。最初に

private static final int PHYSICAL_PERIOD = 23;
private static final int SENSITIVITY_PERIOD = 28;
private static final int INTELLECTUAL_PERIOD = 33;

と身体・感情・知性の周期をfinal修飾子を付けて定数として宣言します。別に定数宣言しなくても良いのですがマジックナンバーを埋めこむのが嫌だったのでこうしています。

次に前項で考えたインスタンス変数を宣言します。

private int birthdayYear, birthdayMonth, birthdayDate;
private int calcYear, calcMonth, calcDate;

「何でprivateにしてるの?」と言われると明確に答えられないんですが「カプセル化情報隠蔽のためです」と私も良く理解していない言葉を挙げて逃げときます。

------------------------------------

続いてコンストラクタを見ときましょう。引数に何も指定しない場合は

public Biorhythm() {
    birthdayYear = 1969;
    birthdayMonth = 12;
    birthdayDate = 12;

    Date d = new Date();

    calcYear = d.getYear() + 1900;
    calcMonth = d.getMonth() + 1;
    calcDate = d.getDate();
}

と「誕生日」に1969年12月12日(私の誕生日)を「バイオリズムを計算する日」にアプレットを実行させた日を設定します。

ところで。java.util.Date.getYear()で年を求めると西暦から1900引いた値が返ってきます。つまり1997年だったら97が返り値になります。そこで、

calcYear = d.getYear() + 1900;

と1900を加えています。また、java.util.Dateでは月が0から始まるため、例えば12月の場合にjava.util.Date.getMonth()は11を返します。それゆえ

calcMonth = d.getMonth() + 1;

と1を加えています。

------------------------------------

引数に「誕生日」を指定した場合は

public Biorhythm(int birthdayYear, int birthdayMonth, int birthdayDate) {
    this();

    this.birthdayYear = birthdayYear;
    this.birthdayMonth = birthdayMonth;
    this.birthdayDate = birthdayDate;
}

で処理します。まず

this();

でさっき定義した引数なしのコンストラクタを呼び出し「誕生日」と「バイオリズムを計算する日」をデフォルト値にします。続いて

this.birthdayYear = birthdayYear;
this.birthdayMonth = birthdayMonth;
this.birthdayDate = birthdayDate;

で引数を誕生日にセットします。

------------------------------------

引数に「誕生日」と「バイオリズムを計算する日」の両方を指定した場合は

public Biorhythm(int birthdayYear, int birthdayMonth, int birthdayDate,
                     int calcYear, int calcMonth, int calcDate) {
    this.birthdayYear = birthdayYear;
    this.birthdayMonth = birthdayMonth;
    this.birthdayDate = birthdayDate;
    this.calcYear = calcYear;
    this.calcMonth = calcMonth;
    this.calcDate = calcDate;
}

と単純に各インスタンス変数に値をセットします。

------------------------------------

前の項目へ次の項目へ

「メイキング・オブ・バイオリズム」のページへ