资源描述:
《NextDate面向对象实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、NextDate面向对象实现nextdate包是一个实现“输入3个参数:年(year)、月(month)、日(day),返回输入日期后面的那个日期”的面向对象程序。该包由1个抽象类(CalendarUnit)、4个具体类(Date、Month、Year、Day)组成。其UML图如下:下面是详细描述。①CalendarUnit类职责:提供一个操作在子类中设置属性值;提供一个布尔操作,说明在子类中的属性是否可以增1。packagenextdate;publicabstractclassCalenda
2、rUnit{protectedintcurrentPos;protectedvoidsetCurrentPos(intpCurrentPos){currentPos=pCurrentPos;}protectedintgetCurrentPos(){returncurrentPos;}protectedabstractbooleanincrement();}②Date类职责:Date对象由Day、Month和Year3个对象组成。Date对象通过这三个对象的布尔增量方法增1。如果Day和Month
3、对象不能加1,则Date根据需要重新设置Day和Month;如果是一年的最后一天,则Year也要加1。printDate操作通过Day、Month和Year对象中的get()成员函数,以mm/dd/yyyy格式输出日期。packagenextdate;publicclassDate{privateDayd;privateMonthm;privateYeary;publicDate(intpMonth,intpDay,intpYear){y=newYear(pYear);m=newMonth(pM
4、onth,y);d=newDay(pDay,m);}publicvoidincrement(){if(!d.increment()){if(!m.increment()){y.increment();m.setMonth(1,y);}d.setDay(1,m);}}publicvoidprintDate(){System.out.println(m.getMonth()+"/"+d.getDay()+"/"+y.getYear());}}③Day类职责:Day对象有一个私有Month属性,用以决
5、定Day取值是要加1还是复位。如果复位,Month属性值需增加1。提供get()和set()服务,以及所继承的布尔增量方法。packagenextdate;publicclassDayextendsCalendarUnit{privateMonthm;publicDay(intpDay,Monthm){setDay(pDay,m);}publicbooleanincrement(){currentPos+=1;if(currentPos<=m.getMonthSize())returntrue;
6、elsereturnfalse;}publicvoidsetDay(intpDay,Monthm){setCurrentPos(pDay);this.m=m;}publicintgetDay(){returncurrentPos;}}④Month类职责:Month对象有一个私有Year属性,用以决定2月份是闰月还是平月。Month对象有一个私有数组属性,用以保存每月份的最后一天。提供get()和set()服务,以及所继承的布尔增量方法packagenextdate;publicclassMont
7、hextendsCalendarUnit{privateYeary;privateint[]sizeIndex={31,28,31,30,31,30,31,31,30,31,30,31};publicMonth(intpMonth,Yeary){setMonth(pMonth,y);}publicvoidsetMonth(intpMonth,Yeary){setCurrentPos(pMonth);this.y=y;}publicintgetMonth(){returncurrentPos;}p
8、ublicintgetMonthSize(){if(y.isLeap())sizeIndex[1]=29;elsesizeIndex[1]=28;returnsizeIndex[currentPos-1];}publicbooleanincrement(){currentPos+=1;if(currentPos>12)returnfalse;elsereturntrue;}}⑤Year类职责:提供一个布尔服务,说明当前值是否为闰年。提供get()和set()服务,以及所继承的布尔增量方法。pac