Here’s an open-ended problem to let you practice designing hierarchies of classes and interfaces with implements and extends statements.
The university registrar’s office needs to track student grades in courses. Each student has a first name, last name, id number and is taking three courses (assume we are tracking grades for only one term). Students get a grade for each course; each course is identified by a department and a course number. The registrar will want to have a collection of all the students, so it can run computations on all the students and grades.
Design a set of classes to capture this scenario. You don’t have to write methods or constructors. Just figure out which classes (with their fields) you might create.
Here are a couple of different solutions to this problem.