Due : Friday, September 4th at the start of class
Introduction
This week we introduced the idea of object oriented design and analysis by discussing what goes into a class and how we model that class using UML (see Session 3 and Session 4). In this assignment I want you to get a chance to try doing this with two example systems that may become ongoing examples in our course this semester.
System #1
Suppose that we want to create a course management tool. The tool will be used by each of the members of the computer science department to keep track of the different courses that they teach, the students in those courses, the assignments made in those courses, grades earned by individual students on individual assignments, etc. Because this department also uses TAs for things such as grading and assistance in the laboratory, the tool must have some access by TAs to perform certain tasks.
System #2
I want to teach you how to do some graphical programming. What better way than through the creation of a relatively simple drawing program? Initially this program would allow a user to create a drawing comprised of points, lines, circles, rectangles, and triangles (although additional shapes may come into play later). Users would be able to place these items on a "drawing", move them, delete them, resize them, etc. Users would be able to start new drawings, save drawings, and reload (and continue to modify) existing drawings.
For each of the examples above I would like you to:
reflect on the classes/objects that would be part of a software solution for the problem described
reflect on how those classes/objects would interact with each other
reflect on similarities between various classes/objects
Develop a requirements and specification "document" for each of these examples. In other words, reflect on what types of functionality would be needed in the VAGUE descriptions of the systems described above. This document will not be turned in as part of this assignment, but it will help you with what you will use.
The assignment
Once you feel like you have a bit of a handle on things I would like you to create a UML class diagram for each of the classes in your "solution" to each example. These diagrams should follow the format demonstrated in Figure 2.14 in your textbook.
After you have completed the individual class diagrams for each class you identified in your analysis you should create a separate "class relationship/navigability diagram." which demonstrates your thoughts about the relationships between the classes you just "proposed" This diagram should look like those in the latter part of section 2.3 of your textbook.
Final Thoughts
This is early in the semester and we haven't spent much time talking about the "right way" and the "wrong way" to drawing these types of diagrams. Furthermore, because I have been vague in my specification there certainly isn't a "right" answer. However, there are answers which are "better" than others.
Take the "vagueness" in the specification and the fact that you don't know the "right" way to do everything as an opportunity to think broadly and freely rather than being constrained to a little tiny box.