CPS 108 Fall 1996: toonces

The Object-Oriented Networked Calendar Extraction System

Update

Information to be turned in on Wednesday, October 30, including revised due dates.


Goal

High-level specification

* Programs

You will write both C++ and Java versions of toonces. A well-planned, object-oriented design should help facilitate development in both languages. One key is to design an integrated set of classes that can then be implemented in both languages.

* Calendars

To help develop calendars you'll probably want to use classes that represent dates.

In C++ you have access to a class Date for representing and manipulating month/day/year dates.

In Java you have access to the class java.util.Date that supports many of the C++ Date class functions and that also represents hours/minutes/seconds (the Java class has more functionality than the C++ class, but you probably won't use all of this functionality in implementing toonces.)

toonces will support simple calendars of the kind supported by the Unix cal command. The output of cal 10 1996 follows.

   October 1996
   S  M Tu  W Th  F  S
         1  2  3  4  5
   6  7  8  9 10 11 12
  13 14 15 16 17 18 19
  20 21 22 23 24 25 26
  27 28 29 30 31

Different views (other than the simple month view above) will also be supported (more on views below). For example, a simple continuous semester calendar produced by toonces might look like:

            September - December 1996

     Su     Mo     Tu     We     Th     Fr     Sa
+------+------+------+------+------+------+------+
|     1|     2|     3|     4|     5|     6|     7|
|  September  |      |      |      |      |      |
+------+------+------+------+------+------+------+
|     8|     9|    10|    11|    12|    13|    14|
|      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+
|    15|    16|    17|    18|    19|    20|    21|
|      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+
|    22|    23|    24|    25|    26|    27|    28|
|      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+
|    29|    30|     1|     2|     3|     4|     5|
|      |      |  October    |      |      |      |
+------+------+------+------+------+------+------+
|     6|     7|     8|     9|    10|    11|    12|
|      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+
|    13|    14|    15|    16|    17|    18|    19|
|      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+
|    20|    21|    22|    23|    24|    25|    26|
|      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+
|    27|    28|    29|    30|    31|     1|     2|
|      |      |      |      |      |  November   |
+------+------+------+------+------+------+------+
|     3|     4|     5|     6|     7|     8|     9|
|      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+
|    10|    11|    12|    13|    14|    15|    16|
|      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+
|    17|    18|    19|    20|    21|    22|    23|
|      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+
|    24|    25|    26|    27|    28|    29|    30|
|      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+
|     1|     2|     3|     4|     5|     6|     7|
| December    |      |      |      |      |      |
+------+------+------+------+------+------+------+
|     8|     9|    10|    11|    12|    13|    14|
|      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+
|    15|    16|    17|    18|    19|    20|    21|
|      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+
|    22|    23|    24|    25|    26|    27|    28|
|      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+
|    29|    30|    31|      |      |      |      |
|      |      |      |      |      |      |      |
+------+------+------+------+------+------+------+
* The Calendar Language

Since toonces must keep track of events and appointments (e.g., the vernal equinox, doctor appointments, and CPS 108 meetings) it will need to read and write calendrical events using some language. The language will be developed by CLANG, the Calendar LANguage Group (described in more detail below). toonces will have the ability to read a file in the format determined by CLANG and and output calendars based on events listed in the file. In addition, toonces will be able to support other calendar languages by being able to translate from them into the language used by toonces.

For example, see man pages for the programs calendar, calentool, cm (the latter is a sun specific program) for some details on other languages.

* Views

toonces should provide a number of views of a calendar. There are two factors affecting the view: scope and format.

toonces should allow more than one view at a time if displaying on a screen. For example, you could have three windows, one "Day", one "Month", and one "Week" view, all being updated when the user enters a new event into the system. The Observer design pattern (see Design Patterns) will be very useful for this.

Note that you do NOT need to support windows and different graphical views on screen with the C++ version of toonces.

* Output

Your program will support several forms of output, four of which will be plain text, HTML, Postscript, and a graphical Java interface (in the Java version). Documentation on these will be given out in class and placed on the web. You have great flexibility in the "look" of the outputted calendar. Be creative yet functional.

Usage

Design

Groups

Prototype

Schedule


Project requirements, design, and writeup by

Owen Astrachan

and

Syam Gadde