Last time you practiced interface inheritance. In this lab you will practice implementation inheritance. Work in pairs if you wish.
Design a class named Person
and its two subclasses
named Student
and Employee
. Make Faculty
and Staff
subclasses of Employee
. A person has
the following attributes: name, address, phone number, and email
address. A student has: class year (freshman, sophomore, junior, or
senior) and major. An employee has: office (room number) and
salary. A faculty member has: department the faculty belongs to and
rank (assistant, associate, or full). A staff member has:
role the staff member plays. Override the toString
method
in each class to have it return an appropriate value.
Make sure you use the following appropriately:
private
, protected
,
and public
for each field and method. Remember that
you should not make every field protected
blindly,
right?super
for both constructor and other methods such
as toString
.Write a test program (e.g., main
in UsePerson.java
)
that creates an instance of each of the
classes: Person
, Student
, Employee
,
Faculty
, and Staff
, and invokes at least their
toString
methods. Be sure to use subtyping as much as
possible.
This time, create an array of a certain type. I say "of a certain type" because I don't want to specify exactly what that type should be. What type you use would depend on what you want to do with the array. For example, you can do one of the following or something else that you come up with:
Person
.Employee
and populate the
array with Employee
objects, Faculty
objects, Staff
objects. Then, go through the array
and give a raise.
This time, add the usual: equals
and compareTo
if
they make sense to be added. Make sure you did not add a getter
and setter blindly for each field. You should add one of these only
if it makes sense to add for each field.
This time, go back to each class and add at least one more attribute (field) to each class, and make appropriate changes in the subclasses to cope with the new attribute being added. I am guessing that you can come up with a field that makes sense to be added to each class. If you are absolutely sure that there is no way another field can be added to a class, so be it.
If you like, add two more classes: UndergradStudent
and GradStudent
as subclasses of Student
and
revise your program appropriately to deal with these additional
classes. This part is not required, but you are strongly encouraged
to try it.
Make sure that your program works correctly. If you have difficulties, please get help during the lab and also outside the lab if you did not finish it in the lab. Your instructor, TAs, and tutors are available to help.
When you are done with these, feel free to help others or leave.