package Ġi ii _ con ventions Ċ Ċ import Ġjava . sql . Time Ċ Ċ data Ġclass ĠMy Date ( val Ġyear : ĠInt , Ġval Ġmonth : ĠInt , Ġval Ġday OfMonth : ĠInt ) Ġ: ĠComparable < My Date > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠMy Date ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( year Ġ!= Ġother . year ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġyear . compareTo ( other . year ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( month Ġ!= Ġother . month ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmonth . compareTo ( other . month ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġday OfMonth . compareTo ( other . day OfMonth ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ operator Ġfun ĠDate Range . iterator () Ġ= Ġobject Ġ: ĠIterator < My Date > Ġ{ ĊĠĠĠ Ġvar Ġindex Ġ= Ġstart ĊĊĠĠĠ Ġoverride Ġfun Ġhas Next (): ĠBoolean Ġ= Ġindex Ġ<= Ġend Inclusive ĊĊĠĠĠ Ġoverride Ġfun Ġnext (): ĠMy Date Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold Index Ġ= Ġindex ĊĠĠĠĠĠĠĠ Ġindex Ġ= Ġindex . next Day () ĊĠĠĠĠĠĠĠ Ġreturn Ġold Index ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ operator Ġfun ĠMy Date . plus ( other : ĠTime Interval ): ĠMy Date Ġ= Ġadd Time Intervals ( other , Ġ 1 ) Ċ operator Ġfun ĠMy Date . plus ( other : ĠRe peated Time Interval ): ĠMy Date Ġ= Ġadd Time Intervals ( other . ti , Ġother . n ) Ċ Ċ operator Ġfun ĠMy Date . range To ( other : ĠMy Date ): ĠDate Range Ġ= ĠDate Range ( this , Ġother ) Ċ Ċ enum Ġclass ĠTime Interval Ġ{ ĊĠĠĠ ĠDAY , ĊĠĠĠ ĠW EEK , ĊĠĠĠ ĠYEAR Ċ } Ċ Ċ class ĠRe peated Time Interval ( val Ġti : ĠTime Interval , Ġval Ġn : ĠInt ) Ċ Ċ operator Ġfun ĠTime Interval . times ( other : ĠInt ) Ġ: ĠRe peated Time Interval Ġ= ĠRe peated Time Interval ( this , Ġother ) Ċ Ċ class ĠDate Range ( val Ġstart : ĠMy Date , Ġval Ġend Inclusive : ĠMy Date ) Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġcontains ( d : ĠMy Date ): ĠBoolean Ġ= Ġd Ġ>= Ġstart Ġ&& Ġd Ġ<= Ġend Inclusive Ċ } Ċ