package schedule; /** * Like an Appointment, a Task adds a number of components to a generic * ScheduledItem. A Task differs from an Appointment as follows: (1) * Appointments have StartTime, Duration, and Location; Tasks do not. (2) For * Appointments, the priority is either 'Must' or 'Optional'; for Tasks, * priority is a positive integer indicating the relative priority of a task * compared to other tasks. (3) For appointments, reminders can be set to * occur at hour or minute granularity; for tasks, the smallest granularity of * reminder is a day. (4) Tasks have a completedFlag, and completionDate * components; appointments do not. *

* The completedFlag is true if a Task has been completed, false if not. The * system does not enforce any specific constraints on the setting of a task's * CompletedFlag. That is, the user may set or clear it at will. Hence the * meaning of the completedFlag is up to user interpretation, particularly for * recurring tasks. *

* The completionDate is the date on which as task is completed. The system * does not enforce any specific constraints on the setting of a task's * completionDate (other than it being a legal Date value). As with the * completedFlag, the meaning of the completionDate value is up to user * interpretation, particularly for recurring tasks. *

* This object is derived from Section 2.4.2 of the Milestone 6 requirements, * in particular Figure 47. */ abstract class Task extends ScheduledItem { RecurringInfo recurringInfo; Security security; TaskPriority priority; TaskRemindInfo remind; Text details; boolean completedFlag; Date completionDate; }