Slide 61
Slide 61 text
シールドクラスをはじめよう #jjug_ccc #jjug_ccc_i
例:契約状態の表現(代数的データ型でない)
enum 契約状態 {未契約,契約中,解約;}
class 契約 {
int id;
LocalDate 開始日;
LocalDate 終了日;
契約状態 契約状態;
}
// 未契約の生成
new 契約(1, null, null, 契約状態.未契約);
// 契約中の生成
new 契約(2, 開始日, null, 契約状態.契約中);
// 解約の生成
new 契約(3, 開始日, 終了日, 契約状態.解約);
状態に応じて、不要な日付項目に null いれる
整合性をロジック・コードで担保する 💪