Ask Question, Ask an Expert

+61-413 786 465

info@mywordsolution.com

Ask Java Expert


Home >> Java

Give the definition of a class named Doctor whose objects are records for a clinic's doctors. This class will be a derived class of the class SalariedEmployee given in Display 7.5. A Doctor record has the doctor's specialty (such as "Pediatrician", "Obstetrician", "General Practitioner", and so forth; so use the type String), and office visit fee (use type double). Be sure your class has a reasonable complement of constructors, accessor and mutator methods, and suitably defined equals, and toString methods. Write a program to test all your methods.

You should implement the following methods:

public Doctor()
public Doctor(String theName, Date theDate, double theSalary,
String theSpecialty, double theVisitFee)
public Doctor(Doctor orig)
public String getSpecialty()
public void setSpecialty(String theSpecialty)
public double getVisitFee()
public void setVisitFee(double theVisitFee)
public boolean equals(Doctor other)

HINT:

Constructors defined in the Doctor class can call the superclass's constructor (e.g. super(theName, theDate, theSalary)) nto initialize the instance variables in SalariedEmployee.
By subclassing SalariedEmployee, the Doctor class will inherit not only the methods defined in SalariedEmployee, but also those defined in Employee. You may override (re-implement) methods in the Employee class, but in this project you need only override the toString and equals methods.
Make sure that you initialize the specialty and visitFee fields in your zero-argument constructor.

/**
Subclass of SalariedEmployee that adds specicialty and visit fee fields.
*/
class Doctor extends SalariedEmployee {
/**
The doctor's specialty
*/
private String specialty;

/**
The doctor's visit fee
*/
private double visitFee;

// --------------------------------
// ----- ENTER YOUR CODE HERE -----
// --------------------------------

// --------------------------------
// --------- END USER CODE --------
// --------------------------------

public String toString() {
// Adapted from SalariedEmployee.toString()
return getName() + " (Specialty: " +
getSpecialty() + ")" + "n Fee for office visit: " +
getVisitFee() + "n Hired " + getHireDate() +
", tiny_mce_markerquot; + getSalary() + " per year";
}

}

/**
Demo program that tests the methods of the Doctor class
*/
public class DoctorDemo {

public static void main(String[] args) {
// Test the constructors
Doctor doc = new Doctor();
System.out.println("Doctor created without arguments:");
System.out.println(doc);
System.out.println();

Doctor pediatrician = new Doctor("Dr. John Doe",
new Date("March", 15, 2001), 123500.00,
"Pediatrics", 125.00);
System.out.println("Doctor created with all arguments:");
System.out.println(pediatrician);
System.out.println();

// Test the copy constructor and equals method
Doctor p2 = new Doctor(pediatrician);
System.out.println("Doctor created with copy constructor:");
System.out.println(p2);
System.out.println();
System.out.println("pediatrician == p2? " + (pediatrician == p2));
System.out.println(
"pediatrician.equals(p2)? " + pediatrician.equals(p2));
System.out.println(
"pediatrician.equals(doc)? " + pediatrician.equals(p2));
System.out.println();

// Test the setter and getter methods
p2.setName("Dr. Joe Smith");
p2.setSpecialty("Opthomology");
p2.setVisitFee(110.0);
System.out.println(
"After resetting name, specialty, and office visit fee:");
System.out.println(p2);
System.out.println();
System.out.println("Specialty: " + p2.getSpecialty());
System.out.println("OfficeVisitFee: tiny_mce_markerquot; + p2.getVisitFee());
System.out.println();

}

}

Employee.java

/**
Class Invariant: All objects have a name string and hire date.
A name string of "No name" indicates no real name specified yet.
A hire date of Jan 1, 1000 indicates no real hire date specified yet.
*/
public class Employee
{
private String name;
private Date hireDate;

public Employee( )
{
name = "No name";
hireDate = new Date("January", 1, 1000); //Just a place holder.
}

/**
Precondition: Neither theName nor theDate are null.
*/
public Employee(String theName, Date theDate)
{
if (theName == null || theDate == null)
{
System.out.println("Fatal Error creating employee.");
System.exit(0);
}
name = theName;
hireDate = new Date(theDate);
}

public Employee(Employee originalObject)
{
name = originalObject.name;
hireDate = new Date(originalObject.hireDate);
}

public String getName( )
{
return name;
}

public Date getHireDate( )
{
return new Date(hireDate);
}

/**
Precondition newName is not null.
*/
public void setName(String newName)
{
if (newName == null)
{
System.out.println("Fatal Error setting employee name.");
System.exit(0);
}
else
name = newName;
}

/**
Precondition newDate is not null.
*/
public void setHireDate(Date newDate)
{
if (newDate == null)
{
System.out.println("Fatal Error setting employee hire date.");
System.exit(0);
}
else
hireDate = new Date(newDate);
}

public String toString( )
{
return (name + " " + hireDate.toString( ));
}

public boolean equals(Employee otherEmployee)
{
return (name.equals(otherEmployee.name)
&& hireDate.equals(otherEmployee.hireDate));
}
}

SalariedEmploye.java

/**
Class Invariant: All objects have a name string, hire date, and nonnegative salary.
A name string of "No name" indicates no real name specified yet.
A hire date of Jan 1, 1000 indicates no real hire date specified yet.
*/
public class SalariedEmployee extends Employee
{
private double salary; //annual

public SalariedEmployee( )
{
super( );
salary = 0;
}

/**
Precondition: Neither theName nor theDate are null;
theSalary is nonnegative.
*/
public SalariedEmployee(String theName, Date theDate, double theSalary)
{
super(theName, theDate);
if (theSalary >= 0)
salary = theSalary;
else
{
System.out.println("Fatal Error: Negative salary.");
System.exit(0);
}
}

public SalariedEmployee(SalariedEmployee originalObject )
{
super(originalObject);
salary = originalObject.salary;
}
public double getSalary( )
{
return salary;
}

/**
Returns the pay for the month.
*/
public double getPay( )
{
return salary/12;
}

/**
Precondition: newSalary is nonnegative.
*/
public void setSalary(double newSalary)
{
if (newSalary >= 0)
salary = newSalary;
else
{
System.out.println("Fatal Error: Negative salary.");
System.exit(0);
}
}

public String toString( )
{
return (getName( ) + " " + getHireDate( ).toString( )
+ "ntiny_mce_markerquot; + salary + " per year");
}

public boolean equals(SalariedEmployee other)
{
return (getName( ).equals(other.getName( ))
&& getHireDate( ).equals(other.getHireDate( ))
&& salary == other.salary);
}
}

Date.java

import java.util.Scanner;

public class Date
{
private String month;
private int day;
private int year; //a four digit number.

public Date( )
{
month = "January";
day = 1;
year = 1000;
}

public Date(int monthInt, int day, int year)
{
setDate(monthInt, day, year);
}

public Date(String monthString, int day, int year)
{
setDate(monthString, day, year);
}

public Date(int year)
{
setDate(1, 1, year);
}

public Date(Date aDate)
{
if (aDate == null)//Not a real date.
{
System.out.println("Fatal Error.");
System.exit(0);
}

month = aDate.month;
day = aDate.day;
year = aDate.year;
}

public void setDate(int monthInt, int day, int year)
{
if (dateOK(monthInt, day, year))
{
this.month = monthString(monthInt);
this.day = day;
this.year = year;
}
else
{
System.out.println("Fatal Error");
System.exit(0);
}
}

public void setDate(String monthString, int day, int year)
{
if (dateOK(monthString, day, year))
{
this.month = monthString;
this.day = day;
this.year = year;
}
else
{
System.out.println("Fatal Error");
System.exit(0);
}
}

public void setDate(int year)
{
setDate(1, 1, year);
}

public void setYear(int year)
{
if ( (year < 1000) || (year > 9999) )
{
System.out.println("Fatal Error");
System.exit(0);
}
else
this.year = year;
}
public void setMonth(int monthNumber)
{
if ((monthNumber <= 0) || (monthNumber > 12))
{
System.out.println("Fatal Error");
System.exit(0);
}
else
month = monthString(monthNumber);
}

public void setDay(int day)
{
if ((day <= 0) || (day > 31))
{
System.out.println("Fatal Error");
System.exit(0);
}
else
this.day = day;
}

public int getMonth( )
{
if (month.equals("January"))
return 1;
else if (month.equals("February"))
return 2;
else if (month.equalsIgnoreCase("March"))
return 3;
else if (month.equalsIgnoreCase("April"))
return 4;
else if (month.equalsIgnoreCase("May"))
return 5;
else if (month.equals("June"))
return 6;
else if (month.equalsIgnoreCase("July"))
return 7;
else if (month.equalsIgnoreCase("August"))
return 8;
else if (month.equalsIgnoreCase("September"))
return 9;
else if (month.equalsIgnoreCase("October"))
return 10;
else if (month.equals("November"))
return 11;
else if (month.equals("December"))
return 12;
else
{
System.out.println("Fatal Error");
System.exit(0);
return 0; //Needed to keep the compiler happy
}
}

public int getDay( )
{
return day;
}

public int getYear( )
{
return year;
}

public String toString( )
{
return (month + " " + day + ", " + year);
}

public boolean equals(Date otherDate)
{
if (otherDate == null)
return false;
else
return ( (month.equals(otherDate.month)) &&
(day == otherDate.day) && (year == otherDate.year) );
}

public boolean precedes(Date otherDate)
{
return ( (year < otherDate.year) ||
(year == otherDate.year && getMonth( ) < otherDate.getMonth( )) ||
(year == otherDate.year && month.equals(otherDate.month)
&& day < otherDate.day) );
}

public void readInput( )
{
boolean tryAgain = true;
Scanner keyboard = new Scanner(System.in);
while (tryAgain)
{
System.out.println("Enter month, day, and year.");
System.out.println("Do not use a comma.");
String monthInput = keyboard.next( );
int dayInput = keyboard.nextInt( );
int yearInput = keyboard.nextInt( );
if (dateOK(monthInput, dayInput, yearInput) )
{
setDate(monthInput, dayInput, yearInput);
tryAgain = false;
}
else
System.out.println("Illegal date. Reenter input.");
}
}

private boolean dateOK(int monthInt, int dayInt, int yearInt)
{
return ( (monthInt >= 1) && (monthInt <= 12) &&
(dayInt >= 1) && (dayInt <= 31) &&
(yearInt >= 1000) && (yearInt <= 9999) );
}

private boolean dateOK(String monthString, int dayInt, int yearInt)
{
return ( monthOK(monthString) &&
(dayInt >= 1) && (dayInt <= 31) &&
(yearInt >= 1000) && (yearInt <= 9999) );
}

private boolean monthOK(String month)
{
return (month.equals("January") || month.equals("February") ||
month.equals("March") || month.equals("April") ||
month.equals("May") || month.equals("June") ||
month.equals("July") || month.equals("August") ||
month.equals("September") || month.equals("October") ||
month.equals("November") || month.equals("December") );
}

private String monthString(int monthNumber)
{
switch (monthNumber)
{
case 1:
return "January";
case 2:
return "February";
case 3:
return "March";
case 4:
return "April";
case 5:
return "May";
case 6:
return "June";
case 7:
return "July";
case 8:
return "August";
case 9:
return "September";
case 10:
return "October";
case 11:
return "November";
case 12:
return "December";
default:
System.out.println("Fatal Error");
System.exit(0);
return "Error"; //to keep the compiler happy
}
}

Java, Programming

  • Category:- Java
  • Reference No.:- M91612059
  • Price:- $20

Priced at Now at $20, Verified Solution

Have any Question?


Related Questions in Java

Answer the following question whats the difference public

Answer the following Question : What's the difference public inheritance and private inheritance? What can derived classes inherit from base classes? What cannot be inherited from base classes?

Retail price calculatorwrite a java program that asks the

Retail Price Calculator Write a JAVA program that asks the user to enter an item's wholesale cost and its markup percentage. It should then display the item's retail price. For example: (If an item's wholesale cost is 5. ...

Assessment socket programmingtaskwrite a java gui program

Assessment: Socket Programming Task Write a JAVA GUI program that would facilitate text chatting/exchanging between two or multiple computers over the network/internet, using the concept of JAVA socket programming. If yo ...

Assessment instructionsin this assessment you will design

Assessment Instructions In this assessment, you will design and code a simple Java application that defines a class, instantiate the class into a number of objects, and prints out the attributes of these objects in a spe ...

Can someone kindly help me to consider whether java

Can someone kindly help me to consider whether Java provides the facility of operator overloading? If it does, may you kindly describe how overloading operators can be accomplished? If not, may you kindly describe why yo ...

Applied software engineering assignment 1 -learning

Applied Software Engineering Assignment 1 - Learning outcomes - 1. Understand the notion of software engineering and why it is important. 2. Analyse the risk factors associated with phases of the software development lif ...

Part a specification - robot simulationpart a

PART A Specification - Robot Simulation PART A Requirements To complete this assignment you will use the supplied eclipse project Robot P1/. It is already set up to execute a simple arm movement loop which you will build ...

Assignment - method in our madnessthe emphasis for this

Assignment - "Method in our Madness" The emphasis for this assignment is methods with parameters. In preparation for this assignment, create a folder called Assign_3 for the DrJava projects for the assignment. A Cityscap ...

Assignment - java program using array of objectsobjectives

Assignment - JAVA Program using array of objects Objectives - This assessment item relates to the course learning outcomes as stated in the Unit Profile. Details - For this assignment, you are required to develop a Menu ...

Simple order processing systemquestion given the classes

Simple Order Processing System Question: Given the classes Ship (with getter and setter), Speedboat, and SpeedboatTest. Answer the following questions: Refine the whole application (all classes) and create Abstract class ...

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As