package calendar;
/**
* Abstract class representing a date. Instances of this class should be
* mutable. Varios getters and setters are provided so that date manipulation is
* as convenient as possible.
*
* @author Amir
* @author ebraminio
*/
public abstract class AbstractDate {
public void setDate(int year, int month, int day) {
setYear(year);
setMonth(month);
setDayOfMonth(day);
}
public abstract int getYear();
public abstract void setYear(int year);
public abstract int getMonth();
public abstract void setMonth(int month);
public abstract int getDayOfMonth();
public abstract void setDayOfMonth(int day);
public abstract int getDayOfWeek();
public abstract int getDayOfYear();
public abstract int getWeekOfYear();
public abstract int getWeekOfMonth();
public abstract void rollDay(int amount, boolean up);
public abstract void rollMonth(int amount, boolean up);
public abstract void rollYear(int amount, boolean up);
/**
* Returns a string specifying the event of this date, or null if there are
* no events for this year.
*/
public abstract String getEvent();
public abstract boolean isLeapYear();
public abstract AbstractDate clone();
}