Assignment 2
Assignment 2
Important note: Assignments are individual work. We will use software solutions to automate the process of
checking similarity between student submissions for further inspection by the professor. Similarity of your
submission with any public solution will also be investigated.
This assignment will build upon your submission of assignment 1, and it is aiming to simulate (as much as possible),
a professional working environment.
You have developed the two systems below, and the solution you developed is functional.
However, your manager has concerns that your code is not quite maintainable and that it does not follow proper
software engineering and OOP guidelines.
You are asked to re-implement the same systems in a more maintainable way. Here is what you are required to do:
1. Re-implement the work you have done for assignment 1 where you will improve on the following (70%):
a. Both problems should share the implementation of class Person.
b. It is required that you apply class inheritance anywhere it is possible in your new implementation.
c. You must apply a total of 4 different examples of polymorphism in your implementation
(overloading and overriding).
d. Every class must be implemented in a separate java file. For example, if you have classes Person,
Student, and Employee, you must have the following files in your implementation:
i. Person.java
ii. Student.java
iii. Employee.java
iv. Main.java
2. Write a report (maximum of cover page + 2 pages) that contains (30%):
a. UML diagram of your implementation (showing the class attributes and methods)
b. Section where you discuss how you improved on the design and organization from assignment 1.
c. Section where you discuss the different polymorphism examples in your implementation.
d. Section where you discuss the lessons you learned from assignments 1 and 2.
You must submit one zip file that contains your source code and the report.