(**** * * Module CalendarDB defines the major database objects of the calendar system. * *) module CalendarDB; from Schedule import Event; export CalendarDB; object CalendarDB components: UserCalendars and UserDB and GroupDB and AdminOptions; description: (* The full calendar DB is comprised of the users' calendars, the user rolodex database, the group database, and the collection of administrative options. *); end; object UserCalendars has UserCalendar*; object UserCalendar has UserName and UserOptions and BasicCalendar; object BasicCalendar components: YearCalendar*; description: (* A basic calendar is comprised of zero or more year calendars *); end BasicCalendar; object YearCalendar components: YearDate and JanCalendar and FebCalendar and MarCalendar and AprCalendar and MayCalendar and JunCalendar and JulCalendar and AugCalendar and SepCalendar and OctCalendar and NovCalendar and DecCalendar; description: (* A year calendar is comprised of a year date (four digits, please!) and each of the standard twelve month calendars. *); end YearCalendar; object JanCalendar is DayCalendar; object FebCalendar is DayCalendar; object MarCalendar is DayCalendar; object AprCalendar is DayCalendar; object MayCalendar is DayCalendar; object JunCalendar is DayCalendar; object JulCalendar is DayCalendar; object AugCalendar is DayCalendar; object SepCalendar is DayCalendar; object OctCalendar is DayCalendar; object NovCalendar is DayCalendar; object DecCalendar is DayCalendar; object DayCalendar has StartDay and DailySchedule; object DailySchedule components: Event*; description: (* A daily scheuld is a collection of events. *); end DailySchedule; object UserDB has UserRecord*; object UserRecord components: n:Name and id:Id and age:Age and s:Sex and addr:Address; description: (* A UserRecord contains the basic information for a registered user of the calendar system: name, unique id, age, user category (student, faculty, staff, other), electronic mail address, and optional home address. *); end UserRecord; object GroupDB has GroupRecord*; object AdminOptions has AdminOption*; object AdminOption has ... ; end CalendarDB;