Note that the goal of this assignment is to assess your understanding of the core principles of good OO design (e.g. the advantages of using inheritance and polymorphism etc.). As such, the emphasis of this assessment is on adhering to a specification, which was designed to test various aspects of OO design, rather than developing a complete commercial grade product with realistic business rules.
- The system needs to cater for two distinct types of Courses, Core Courses and Electives.
- Core courses have a fixed (constant) number of allocated credit points (12 points per course), whereas Elective courses can be allocated 6 or 12 credit points.
- The system needs to cater for two distinct types of Students, Undergraduate (UG) and Postgraduate (PG).
- The maximum (allowable) study load is pre-defined at 60 credit points for UG students, and 48 credit points for PG students.
- The course enrolment procedure will differ based on a particular student type as described further in section 4 of this document.
Your primary goal is to implement the provided AMSModel interface, in a class called AMSFacade in order to provide the behaviour specified as comments in the provided AMSModel source file and tested by the provided TestHarness.java. Note that you will write a graphical user interface to more effectively utilise the AMSFacade in Assignment.
Implementing AMSFacade will involve implementing/extending and using the classes/interfaces from your Assignment 1 Part A design. Note that you have freedom in how you choose to implement your solution; however, you must implement it in such a way that the TestHarness is NOT modified. You should use inheritance, polymorphism, abstract classes and interfaces effectively, as taught in this course.
More specifically, you must provide appropriate constructors and methods as required by the TestHarness in order to ensure that your solution can be complied and tested without modifying the provided TestHarness.