Biorhythmクラスのメソッドこれには
getPhysicalBiorhythm()
getSensitivityBiorhythm()
getIntellectualBiorhythm()
の三つがあります。代表でgetPhysicalBiorhythm()を見ましょう。
public int getPhysicalBiorhythm() {
return (int)(liveDays() % PHYSICAL_PERIOD);
}
やっていることは簡単で、すぐ後で紹介するliveDays()で「誕生日」から「バイオリズムを計算する日」までの日数を計算し、それをPHYSICAL_PERIOD(=23 身体の周期)で割った余りを返しています。
あとはこの値を用いてサイン・カーブを描いても良いですし、単純に好不調を判断しても良いです。そこは、このメソッドを呼び出した側で決めれるようにしてあります。
liveDays()「誕生日」から「バイオリズムを計算する日」まで何日あるか計算するメソッドです。
public long liveDays() {
CalcDate calcCalcDate = new CalcDate();
calcCalcDate.set(calcYear, calcMonth, calcDate);
CalcDate birthdayCalcDate = new CalcDate();
birthdayCalcDate.set(birthdayYear, birthdayMonth, birthdayDate);
return calcCalcDate.getPastDays() - birthdayCalcDate.getPastDays();
}
CalcDateというのは私が作った色々な日付計算を行うクラスです。次項で説明します。
やっていることは
CalcDate calcCalcDate = new CalcDate(); calcCalcDate.set(calcYear, calcMonth, calcDate);
でCalcDateのインスタンスを作成し、そのインスタンスに「バイオリズムを計算する日」の年月日をセットします。同様に
CalcDate birthdayCalcDate = new CalcDate(); birthdayCalcDate.set(birthdayYear, birthdayMonth, birthdayDate);
でもう一つインスタンスを作成し、それには「誕生日」の年月日をセットします。
CalcDate.getPastDays()は西暦1年1月1日からセットされた年月日までの日数を返すメソッドなのでcalcCalcDate.getPastDays()で西暦1年1月1日から「バイオリズムを計算する日」までの日数が、birthdayCalcDate.getPastDays()で西暦1年1月1日から「誕生日」までの日数が得られます。したがって、それを引いたものを
return calcCalcDate.getPastDays() - birthdayCalcDate.getPastDays();
として返してやれば「誕生日」から「バイオリズムを計算する日」までの日数が返ります。
インスタンス変数をprivateで宣言したので、それを制御するアクセスメソッドが必要になります。
public void setBirthday(int birthdayYear, int birthdayMonth, int birthdayDate) {
this.birthdayYear = birthdayYear;
this.birthdayMonth = birthdayMonth;
this.birthdayDate = birthdayDate;
}
は「誕生日」をセットするためのメソッドです。同様に「バイオリズムを計算する日」をセットするメソッドとしてsetCalculateDay()を準備しています。
値をセットするだけでなく、インスタンス変数の値を取り出すメソッドも必要です。
public int getBirthdayYear() {
return birthdayYear;
}
が「誕生日」の年を取り出すメソッドです。
getBirthdayMonth()、getBirthdayDate()、getCalcYear()、getCalcMonth()、getCalcDate()も同様のメソッドです。