Here is the answer to the first two parts (combined). The new code is given in boldface.
// Person: base class adapted from Weiss's book
public class Person implements Comparable{ 
   private String name; // name of person 
   private String ssn; // SSN of person 
   private int age; // age of person
   public Person (String n, String s, int a) {
      name = n; ssn = s; age = a;
   }
   public String getName() { return name;}
   public String getSsn() { return ssn;}
   public int getAge() { return age;}
   public String toString() {
      return "Name: " + name + ", SSN: " + ssn + ", Age: " + age;
   }
   // compareTo: the method in Comparable interface
   public int compareTo(Object obj) {
      return name.compareTo(((Person)obj).name);
   }
}

// Employee: class that extends Person public class Employee extends Person { private double salary; public Employee (String n, String ssn, int a, double sal) { super(n, ssn, a); salary = sal; } public double getSalary() { return salary;} public String toString() { return super.toString() + ", Salary: " + salary; } }
// Faculty: class that extends Employee public class Faculty extends Employee { private int courseLoad; public Faculty (String n, String ssn, int a, double sal, int cl) { super(n, ssn, a, sal); courseLoad = cl; } public double getCouarseLoad() { return courseLoad;} public String toString() { return super.toString() + ", Course Load: " + courseLoad; } }
// Student: class that extends Person public class Student extends Person { private double gpa; public Student (String n, String ssn, int a, double g) { super(n, ssn, a); gpa = g; } public double getGpa() { return gpa;} public String toString() { return super.toString() + ", GPA: " + gpa; } }
// Persons: use the classes Person, Student, and Employee public class Persons { public static void main(String[] args) { CompList list = new CompList(); Comparable p; p = new Person("Williams, John", "534-54-2344", 23); list.add(p); p = new Employee("Johnson, Jane", "232-33-3343", 43, 16000.0); list.add(p); p = new Student("Wilkins, Jean", "123-89-5688", 19, 3.5); list.add(p); p = new Employee("Jacobs, Joe", "112-21-4023", 58, 47000); list.add(p); p = new Student("Wilson, James", "003-00-8755", 21, 2.75); list.add(p); p = new Faculty("Warner, Joshua", "563-55-5719", 47, 53000, 9); list.add(p); while (!list.isEmpty()) System.out.println(list.removeMin()); } }
Along with List.java and CompList.java from the CompList class.

Here is the output of a run:


Name: Jacobs, Joe, SSN: 112-21-4023, Age: 58, Salary: 47000.0
Name: Johnson, Jane, SSN: 232-33-3343, Age: 43, Salary: 16000.0
Name: Warner, Joshua, SSN: 563-55-5719, Age: 47, Salary: 53000.0, Course Load: 9
Name: Wilkins, Jean, SSN: 123-89-5688, Age: 19, GPA: 3.5
Name: Williams, John, SSN: 534-54-2344, Age: 23
Name: Wilson, James, SSN: 003-00-8755, Age: 21, GPA: 2.75