预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

NextDate面向对象实现 nextdate包是一个实现“输入3个参数:年(year)、月(month)、日(day),返回输入日期后面的那个日期”的面向对象程序。该包由1个抽象类(CalendarUnit)、4个具体类(Date、Month、Year、Day)组成。其UML图如下: 下面是详细描述。 ①CalendarUnit类 职责:提供一个操作在子类中设置属性值;提供一个布尔操作,说明在子类中的属性是否可以增1。 packagenextdate; publicabstractclassCalendarUnit{ protectedintcurrentPos; protectedvoidsetCurrentPos(intpCurrentPos){ currentPos=pCurrentPos; } protectedintgetCurrentPos(){ returncurrentPos; } protectedabstractbooleanincrement(); } ②Date类 职责:Date对象由Day、Month和Year3个对象组成。Date对象通过这三个对象的布尔增量方法增1。如果Day和Month对象不能加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(pMonth,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属性,用以决定Day取值是要加1还是复位。如果复位,Month属性值需增加1。提供get()和set()服务,以及所继承的布尔增量方法。 packagenextdate; publicclassDayextendsCalendarUnit{ privateMonthm; publicDay(intpDay,Monthm){ setDay(pDay,m); } publicbooleanincrement(){ currentPos+=1; if(currentPos<=m.getMonthSize())returntrue; elsereturnfalse; } publicvoidsetDay(intpDay,Monthm){ setCurrentPos(pDay); this.m=m; } publicintgetDay(){ returncurrentPos; } } ④Month类 职责:Month对象有一个私有Year属性,用以决定2月份是闰月还是平月。Month对象有一个私有数组属性,用以保存每月份的最后一天。提供get()和set()服务,以及所继承的布尔增量方法 packagenextdate; publicclassMonthextendsCalendarUnit{ 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; } publicintgetMonthSize(){ if(y.isLeap())sizeIndex[1]=29; elsesizeIndex[1]=28; returnsizeIndex[currentPos-1]; } publicbooleanincrement(){ currentPos+=