$30
Assignment 4
Instructions:
• Review the requirements given below and complete all three parts from below. Please
submit all files through Canvas.
• The grading scheme is provided on Canvas. Be sure that your code includes everything
required in the grading rubric.
Part 1 – UML Diagrams (30 points)
Draw UML diagrams (activity diagram and class diagrams) to represent an inheritance hierarchy
for classes Quadrilateral, Trapezoid, Parallelogram, Rectangle and Square.
• Use Quadrilateral as the superclass of the hierarchy. Create and use a Point class to
represent the points in each shape. Make the hierarchy as deep (i.e., as many levels) as
possible.
• Specify the instance variables and methods for each class. The private instance variables
of Quadrilateral should be the x-y coordinate pairs for the four endpoints of the
Quadrilateral.
• Write a test program that instantiates different objects of your classes and stores them
in an ArrayList. It then prompts the user to choose a particular shape and outputs the area
and perimeter of each object of that shape stored in the ArrayList.
Part 2 – System Design using CRC Cards (70 points)
• In the lecture, we have discussed using CRC cards to design and implement “CS Course
Registration System”. Assume that we only have one department (CS). Complete the
initial design, review/refine it and prepare the final design. Submit the following:
o Requirement Statement (in plain English, maximum 1 page) explaining major
aspects (features) of the registration system
o Initial list of classes and methods identified from requirement statement
o Initial set of CRC Cards (Note: Use physical cards when designing classing. But for
submission: you can draw a table for each flash card instead of submitting the
actual cards)
o Review your initial design and identify if you can combine any classes and if you
need to add more. Ensure that you are using good design principles (maximize
cohesion and minimize coupling). Provide updated {final} list of classes (including
any abstract classes as well), with attributes, methods. Also provided updated
versions of CRC Cards.
o UML diagrams (draw them with professional software like starUML) for finald
design
o Provide skeleton code (where most classes and methods have been
declared/defined but left empty. They will have appropriate names, arguments,
etc.). All methods should be properly commented using Javadoc style!
• Here are the list of tasks that your system should implement:
o Search a course in the department (for registration)
o Add, Drop or Swap a course
o See list of courses in a student’s schedule
o Should be able to add, delete students from department
o Should be able to view all courses offered
o Should be able to check the status of a course (how many seats available,
students enrolled, instructor assigned, etc.)
o Instructor’s information should be accessible (i.e., name, email, office location,
etc.)
o Anything else you find reasonable!
Part 3 – Implementation (Bonus worth 50 points)
• Implement your Course Registration System (from Part2)!