Give the definition of a class named doctor

Assignment Help JAVA Programming
Reference no: EM13941186

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
}
}

Reference no: EM13941186

Questions Cloud

Bunn operates a small family bakery : It has recently moved into new premises and has invested in more advanced equipment, with the aim of making the baking process more automated.
Assuming that purchasing-power parity holds : A McDonald’s Big Mac costs 2.44 yuan in China, but costs $4.20 in the United States. Assuming that purchasing-power parity (PPP) holds, how many Chinese yuan are required to purchase 1 U.S. dollar?
Developing and staging events in a region : "It is important to develop a strategic and co-ordinated approach to developing and staging events in a region. A strategic approach should address issues such as the proliferation of events, consistency with regional branding, managing growing at..
Income in the current year and save it for retirement : A consumer has decided to set aside $2000 out of her income in the current year and save it for retirement. She has the choice of putting all $2000 in a traditional IRA or else putting all $2000 in a Roth IRA. you may assume that she knows her margin..
Give the definition of a class named doctor : Give the definition of a class named Doctor whose objects are records for a clinic's doctors.
Developed a new innovative product : A young entrepreneur who has developed a new innovative product has been invited to pitch on the BBC TV programme 'Dragons Den'. The product is called 'Boot Magic' and is designed to clean football boots without the inside of the boot getting wet...
Issue new stock to finance its capital budget : Assume that you are on the financial staff of Vanderheiden Inc., and you have collected the following data: The yield on the company's outstanding bonds is 7.75%, its tax rate is 40%, the next expected dividend is $0.65 a share, What is the firm's WA..
What factors impact the dividend policy decision : Assume your firm has never distributed cash to its shareholders. However, now you are trying to determine the appropriate way to distribute some cash that is consistent with maximizing shareholder wealth. Why would a dividend distribution be importan..
Why hrm is important in todays business environment : Define Human Resource Management (HRM). Explain why HRM is important in today's business environment.

Reviews

Write a Review

JAVA Programming Questions & Answers

  Implement a fish-lake simulation

Implement a Fish/Lake simulation similar to the previous assignment. You will then make adjustments to accommodate class hierarchies and make use of inheritance as well as a JAVA interface.

  Prepare a polynomial-time algorithm

Write a polynomial-time algorithm that, given an initial configuration (P_1, P_2, ..., P_k), decides if it is a winning configuration - Prepare a polynomial-time algorithm that decides if it is a winning configuration.

  Implementing the add and remove methods

Prepare a class that maintains the top 10 scores for a game application, implementing the add and remove methods but using a doubly linked list instead of an array. Program has to be written in java

  Write java program to find calories-conditional operator

Write down the answer for this program? Write down Java program (use Conditional (? Operator) which suggests number of calories a person must eat each day.

  A java program that reads the records

A java program that reads the records from the golf.dat file and displays them. It also displays the name of the player with the best (lowest) golf score.

  What makes a program easy to modify

Describe the order of magnitude of the code section using Big(O) notation and Explain the relationship between dynamic storage allocation and recursion.

  Discuss the legal ramifications of the division of condo

Discuss the legal ramifications of the division of condo, BioTech and other assets. Would it make any difference if Violet sold the property after filing for the dissolution of marriage?

  System schedule on a multiprocessor-multicore environment

This program assignment is provided to let the students understand how to the Operating Systems schedule all the processes on a multiprocessor or multicore environment.

  Write an interrupt service routine to output brand name

Evaluate the form of the output depended on the coefficients being input - Consider you would like to use PSoC to display a different brand name on the LCD once every 15 s.

  Write an application that extends jframe

Write an application that extends JFrame and that displays a phrase in every font size from 6 through 20.

  Explain gui technique message dialog box

Write an application called Circle.java that inputs from the user the radius of a circle as an integer and prints the circle's diameter, circumference, and area. Use the example program and GUI technique message dialog box shown in the Week 1 Lect..

  Implement 1-parameter date constructor that receives string

Date objects should store the date in two int instance variables: day and month, and it should include the String instance variable, error, initialized with null.

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd