Use the descriptions below to create a UML diagram. Be sure to include constructors and accessors for any data. Make sure to use proper encapsulation!

Use a professional drawing tool such as Lucidchart to create your diagram. Screenshots are sloppy and unprofessional; when submitting your final diagram save it as an image or a PDF file. Feel free to search the Internet for the appropriate notation.

  1. An Address includes a house number, street, city, state, and ZIP code.
  2. A Person has a first name, last name, and a home address. A person may move to a new address.
  3. A Student is a person with an ID (e.g. "ABC1234") and a GPA. The student's GPA defaults to 0, but can be modified later.
  4. An Instructor is a person with an honorific (e.g. "Dr.") and an office address. Instructors occasionally change office locations.
  5. A Course has a name (e.g. "Engineering of Software Subsystems"), number (e.g. "SWEN-262"), instructor, a capacity, a group of enrolled students, and a group of students on the wait list. A course is created with its name, number, and instructor. Students can be added and removed from the course one at a time; if the course is at capacity, the student is added to the wait list. Students may be enrolled in more than one course.
  6. A Catalog has a group of courses sorted alphabetically by number. A catalog is created empty, but courses can be added to or removed from a catalog one at a time. A course cannot exist independent of its catalog.
  7. A Person Maker is any class that, given a last name, first name, and address can make a Person. It defines this behavior, but leaves the implementation to its subclasses.
  8. An SE Instructor Maker is a person maker that can make instructors for SE classes. By default, SE instructors are given the honorific of "Dr." and an office address of 20 Lomb Memorial Drive, Rochester, NY, 14623.
  9. A Student Maker is a person maker that can make students. By default, students are assigned the next available student ID and a GPA of 0.0.

Complete this exercise individually by the due date. There will be a class discussion of the steps to perform this refactoring immediately after the dropbox closes.