Define a class named Doctor whose objects are records for cl
Define a class named Doctor whose objects are records for clinic’s doctors. Derive this class from the class Person given in listing 8. A Doctor record has the doctor’s name—defined in the class Person—A specialty as a string (for example Pediatrician, Obstetrician, General Practitioner, and so on), and office visit fee (use type double). Give your class has a reasonable complement of constructors, accessor methods and an equals method as well. Write a driver program to test all your methods.
this is the test file
modify this to make the test file work
Solution
//class doctor extended from person
class Doctor extends Person
{
//instnace variables
String specialty;
double fee;
//default construtor
public Doctor()
{
super();
specialty=\"\";
fee=0;
}
//parameterized contstructor with name as paratemetr
public Doctor(String n)
{
super(n);
specialty=\"\";
fee=0;
}
//constructor accepting name and specialty
public Doctor(String n,String s)
{
super(n);
specialty=s;
fee=0;
}
//constructor accepting name and fee
public Doctor(String n,double f)
{
super(n);
specialty=\"\";
fee=f;
}
//constructor accepting name,fee and specialy
public Doctor(String n,double f,String s)
{
super(n);
specialty=s;
fee=f;
}
//method to set variables for doctor
public void set(String n,double f,String s)
{
set(n);
specialty=s;
fee=f;
}
//setter for fee
public void setOfficeFee(double f)
{
fee=f;
}
//setter for spciality
public void setSpecialty(String s)
{
specialty=s;
}
//getter for speciality
public String getSpecialty()
{
return specialty;
}
//getter for fee
public double getOfficeFee()
{
return fee;
}
//set fee
public void writeOfficeFee()
{
fee=0;
}
//set specislity
public void writeSpecialty()
{
specialty=\"No specialty yet.\";
}
//compare two doctor objects
public boolean equals(Doctor d)
{
return hasSameName(d) && fee==d.fee && specialty.equals(d.specialty);
}
//display doctor detais
public void writeOutput()
{
super.writeOutput();
System.out.println(\"Speciality: \" +specialty);
System.out.println(\"Fee: \"+fee);
}
}
class Person
{
private String name;
public Person()
{
name = \"No name yet.\";
}
public Person(String initialName)
{
name = initialName;
}
public void setName(String newName)
{
name = newName;
}
public void set(String newName)
{
name = newName;
}
public void writeName()
{
name = \"No name yet.\";
}
public String getName()
{
return name;
}
public void writeOutput()
{
System.out.println(\"Name: \" + name);
}
public boolean hasSameName(Person otherPerson)
{
return (this.name.equalsIgnoreCase(otherPerson.getName()));
}
}
import java.util.*;
public class DoctorTest{
public static void main(String []args){
Scanner keyboard = new Scanner(System.in);
char repeat;
do // repeat if user says \'yes\'
{
// Test the six constructors (uses writeOutput method)
Doctor drNo = new Doctor();
System.out.println(\"Using default constructor:\");
System.out.println();
System.out.println(\"Verify:\");
System.out.println(\"No name yet.\");
System.out.println(\"$150\");
System.out.println(\"None given\");
System.out.println();
drNo.writeOutput();
System.out.println();
System.out.println(\"===============================\");
System.out.println(\"Using constructor with just name:\");
Doctor drJekyl = new Doctor(\"Jekyl\");
System.out.println();
System.out.println(\"Verify:\");
System.out.println(\"Jekyl\");
System.out.println(\"$150\");
System.out.println(\"None given\");
System.out.println();
drJekyl.writeOutput();
System.out.println();
System.out.println(\"===============================\");
System.out.println(\"Constructor with name & office fee :\");
Doctor drKildare = new Doctor(\"Kildare\", 200.99);
System.out.println();
System.out.println(\"Verify:\");
System.out.println(\"Kildare\");
System.out.println(\"$200.99\");
System.out.println(\"None assigned\");
System.out.println();
drKildare.writeOutput();
System.out.println();
System.out.println(\"===============================\");
System.out.println(\"Constructor with name and specialty:\");
Doctor drWelby = new Doctor(\"Welby\", \"General Practioner\");
System.out.println();
System.out.println(\"Verify:\");
System.out.println(\"Welby\");
System.out.println(\"$150\");
System.out.println(\"General Practitioner\");
System.out.println();
drWelby.writeOutput();
System.out.println();
System.out.println(\"===============================\");
System.out.println
(\"Constructor with name, office fee, and specialty:\");
Doctor drHoliday = new Doctor(\"Holiday\", 5.25, \"Dentist\");
System.out.println();
System.out.println(\"Verify:\");
System.out.println(\"Holiday\");
System.out.println(\"$5.25\");
System.out.println(\"Dentist\");
System.out.println();
drHoliday.writeOutput();
System.out.println();
System.out.println();
System.out.println(\"===============================\");
//Test the other three write methods
System.out.println(\"Write name test:\");
System.out.println();
System.out.println(\"Verify:\");
System.out.println(\"Name: Holiday\");
System.out.println();
drHoliday.writeName();
System.out.println();
System.out.println();
System.out.println(\"===============================\");
System.out.println(\"Write office fee test:\");
System.out.println();
System.out.println(\"Verify:\");
System.out.println(\"Office Fee: $5.25\");
System.out.println();
drHoliday.writeOfficeFee();
System.out.println();
System.out.println();
System.out.println(\"===============================\");
System.out.println(\"Write specialty test:\");
System.out.println();
System.out.println(\"Verify:\");
System.out.println(\"Specialty: Dentist\");
System.out.println();
drHoliday.writeSpecialty();
System.out.println();
System.out.println();
System.out.println(\"===============================\");
//Test the four set methods
System.out.println
(\"Set name, office fee, and specialty:\");
System.out.println();
System.out.println(\"Default parameter values before set:\");
drNo.writeOutput();
System.out.println();
drNo.set(\"No\", 1234.56, \"Laser Surgery\");
System.out.println(\"Verify parameter values after set:\");
System.out.println(\"No\");
System.out.println(\"$1234.56\");
System.out.println(\"Laser Surgery\");
System.out.println();
drNo.writeOutput();
System.out.println();
System.out.println(\"===============================\");
System.out.println(\"Set name test:\");
System.out.println();
System.out.println(\"Parameter values before set:\");
drNo.writeOutput();
System.out.println();
drNo.setName(\"Yes\");
System.out.println(\"Parameter values after set:\");
System.out.println(\"Verify Name: Yes\");
System.out.println();
drNo.writeOutput();
System.out.println();
System.out.println();
System.out.println(\"===============================\");
System.out.println(\"Set office fee test:\");
System.out.println();
System.out.println(\"Parameter values before set:\");
drNo.writeOutput();
System.out.println();
drNo.setOfficeFee(987.65);
System.out.println(\"Parameter values after set:\");
System.out.println(\"Verify Office Fee: $987.65\");
System.out.println();
drNo.writeOutput();
System.out.println();
System.out.println();
System.out.println(\"===============================\");
System.out.println(\"Set specialty test:\");
System.out.println();
System.out.println(\"Parameter values before set:\");
drNo.writeOutput();
System.out.println();
drNo.setSpecialty(\"Psychiatry\");
System.out.println(\"Parameter values after set:\");
System.out.println(\"Verify Specialty: Psychiatry\");
System.out.println();
drNo.writeOutput();
System.out.println();
System.out.println();
System.out.println(\"===============================\");
//Test the three get methods
System.out.println(\"Get name test:\");
System.out.println();
System.out.println(\"Verify Yes\");
System.out.println();
System.out.println(drNo.getName());
System.out.println();
System.out.println();
System.out.println(\"===============================\");
System.out.println(\"Get office fee test:\");
System.out.println();
System.out.println(\"Verify 987.65\");
System.out.println();
System.out.println(drNo.getOfficeFee());
System.out.println();
System.out.println();
System.out.println(\"===============================\");
System.out.println(\"Get specialty test:\");
System.out.println();
System.out.println(\"Verify Psychiatry\");
System.out.println();
System.out.println(drNo.getSpecialty());
System.out.println();
System.out.println();
System.out.println(\"===============================\");
// test equals
System.out.println(\"equals test 1:\");
System.out.println();
//Create second Doctor with same values as drNo
Doctor drYes = new Doctor(\"Yes\", 987.65, \"Psychiatry\");
System.out.println(\"First Doctor\'s parameter values:\");
System.out.println();
drNo.writeOutput();
System.out.println();
System.out.println(\"Second Doctor\'s parameter values:\");
System.out.println();
drYes.writeOutput();
System.out.println(\"Verify true\");
System.out.println();
System.out.println(drNo.equals(drYes));
System.out.println();
System.out.println();
System.out.println(\"===============================\");
System.out.println(\"equals test 2:\");
System.out.println();
//Change office fee of drYes
drYes.setOfficeFee(987.66);
System.out.println(\"First Doctor\'s parameter values:\");
System.out.println();
drNo.writeOutput();
System.out.println();
System.out.println(\"Second Doctor\'s parameter values:\");
System.out.println();
drYes.writeOutput();
System.out.println(\"Verify false\");
System.out.println();
System.out.println(drNo.equals(drYes));
System.out.println();
System.out.println();
System.out.println(\"===============================\");
System.out.println(\"equals test 3:\");
System.out.println();
//Change office fee back to 987.65
//and specialty to psychology
drYes.setOfficeFee(987.65);
drYes.setSpecialty(\"Psychololgy\");
System.out.println(\"First Doctor\'s parameter values:\");
System.out.println();
drNo.writeOutput();
System.out.println();
System.out.println(\"Second Doctor\'s parameter values:\");
System.out.println();
drYes.writeOutput();
System.out.println(\"Verify false\");
System.out.println();
System.out.println(drNo.equals(drYes));
System.out.println();
System.out.println();
System.out.println(\"===============================\");
System.out.println(\"Do again? (Y for Yes, or N for No)\");
repeat = keyboard.next().charAt(0);
}while((repeat == \'y\') || (repeat == \'Y\'));
}
}
Sample output:
equals test 3:
First Doctor\'s parameter values:
Name: Yes
Speciality: Psychiatry
Fee: 987.65
Second Doctor\'s parameter values:
Name: Yes
Speciality: Psychololgy
Fee: 987.65
Verify false
false
===============================
Do again? (Y for Yes, or N for No)
No







