【发布时间】:2016-02-19 00:11:08
【问题描述】:
我有一个类 Appointment 有字段:
int dayint monthint yearString desc
这会存储约会的描述以及日期。
超级班Appointment:
public class Appointment {
int dayNum;
int monthNum;
int yearNum;
String desc;
public Appointment(String des, int day) {
//Monthly Appointments (Check day)
desc = des;
dayNum = day;
}
public Appointment(String des, int day, int month){
//Yearly Appointments (Check day AND month)
desc = des;
dayNum = day;
monthNum = month;
}
public Appointment(String des, int day, int month, int year){
//One Time (Check All)
desc = des;
dayNum = day;
monthNum = month;
yearNum = year;
}
}
这是我的 3 个子类:
一次性约会:Onetime
public class OneTime extends Appointment{
public OneTime(String des, int day, int month, int year){
super(des, day, month, year);
}
public String getDesc(){
return desc;
}
}
每月一次约会:Monthly
public class Monthly extends Appointment{
public Monthly(String des, int monum){
super(des, monum);
}
public String getDesc(){
return desc;
}
}
每年一次约会 Yearly
public class Yearly extends Appointment{
public Yearly(String des, int day, int month){
super(des, day, month);
}
public String getDesc(){
return desc;
}
}
问题: 我被要求将一些不同的Appointment 对象添加到ArrayList(我知道)。但是,我必须编写一个方法occursOn(int day, int month, int year) 来返回当天的所有约会。我不确定的部分是编写occursOn() 方法。假设我有一个 11/22/2018 的约会,我如何将 Monthly 对象与 day 参数/Yearly 与月和日参数/OneTime 与所有参数进行比较?
教科书问题: " 实现超类 Appointment 和子类 Onetime、Daily 和 Monthly。约会有描述(例如,“看牙医”)和一个日期。写一个方法occursOn(int year, int month, int day)来检查约会是否发生在那个日期。例如,对于每月约会,你必须检查当月的日期是否匹配。然后用一个Appointment对象的数组填充一个约会的混合。让用户输入一个日期并打印出该日期发生的所有约会。"
注意:这不是我的作业。我只是在 2 小时内对此进行了单元测试,然后卡住了。
【问题讨论】:
-
这是一些奇怪的缩进
-
对不起。粘贴问题。之前应该有修复。
-
Monthly可能想知道月份中的哪一天。 -
您也应该有约会限制。只要它们处于活动状态,OneTime 应该匹配 day month year,Yearly 应该匹配 day month,Monthly 应该只匹配 day。如果您觉得自己做的限制比较过多(验证每月/每年的约会是否有效,您可以创建多个 OneTime 约会并将它们包含在父类中)。
-
我正在考虑将方法occurrenceOn() 添加到所有子类,然后在包含嵌套if 语句的Appointment 类中编写另一个occurrenceOn() 方法。我只是觉得这种方式不是很健壮。
标签: java