Académique Documents
Professionnel Documents
Culture Documents
15
Pieceworker.java
public class Pieceworker extends Employee
{
private double wage;
private int pieces;
@Override
public double earnings() {
return getPieces() * getWage();
}
@Override
public String toString()
{
return String.format("Pieceworker: %s\n%s: $%,.2f\n%s: %d",
super.toString(), "Wage", getWage(), "Pieces", getPieces());
} // end method toString
}
SalariedEmployee.java
public class SalariedEmployee extends Employee
{
private double weeklySalary;
// four-argument constructor
public SalariedEmployee(String first, String last, String ssn,
Date bdate, double salary)
{
super(first, last, ssn, bdate); // pass to Employee constructor
setWeeklySalary(salary); // validate and store salary
} // end four-argument SalariedEmployee constructor
// set salary
public void setWeeklySalary(double salary)
{
if (salary >= 0.0)
weeklySalary = salary;
else
throw new IllegalArgumentException(
"Weekly salary must be >= 0.0");
} // end method setWeeklySalary
// return salary
public double getWeeklySalary()
{
return weeklySalary;
} // end method getWeeklySalary
Employee.java
// Employee abstract superclass
// three-argument constructor
public Employee(String first, String last, String ssn, Date bdate)
{
firstName = first;
lastName = last;
socialSecurityNumber = ssn;
birthDate = bdate;
} // end three-argument Employee constructor
HourlyEmployee.java
// five-argument constructor
public HourlyEmployee(String first, String last, String ssn,
Date bdate, double hourlyWage, double hoursWorked)
{
super(first, last, ssn, bdate);
setWage(hourlyWage); // validate hourly wage
setHours(hoursWorked); // validate hours worked
} // end five-argument HourlyEmployee constructor
// set wage
public void setWage(double hourlyWage)
{
if (hourlyWage >= 0.0)
wage = hourlyWage;
else
throw new IllegalArgumentException(
"Hourly wage must be >= 0.0");
} // end method setWage
// return wage
public double getWage()
{
return wage;
} // end method getWage
Date.java
// Date class declaration.
System.out.printf(
"Date object constructor for date %s\n", this);
} // end Date constructor
// utility method to confirm proper day value based on month and year
private int checkDay(int testDay)
{
// check if day in range for month
if (testDay > 0 && testDay <= daysPerMonth[month])
return testDay;
Main.java
// Employee hierarchy test program.
sample output
QUESTION 10.2
/**Employee.java**/
//constructor
{
this.firstName=firstName;
this.lastName=lastName;
this.SocialSecurityNumber=socialSecurityNumber;
this.birthDate=birthDate;
return firstName;
return lastName;
return SocialSecurityNumber;
return birthDate;
//abstract method
/**SalariedEmployee.java**/
import java.util.IllegalFormatConversionException;
//constructor
super(firstName,lastName,socialSecurityNumber,birthDate);
if(weeklySalary <0.0)
if(weeklySalary <0.0)
this.weeklySalary=weeklySalary;
return weeklySalary;
@Override
return weeklySalary;
}
}
/**HourlyEmployee.java**/
//constructor
super(firstName,lastName,socialSecurityNumber,birthDate);
this.wage=wage;
this.hours=hours;
if(wage <0.0)
this.wage=wage;
}
public double getWage()
return wage;
this.hours=hours;
return hours;
@Override
if(getHours()<=40)
return getWage()*getHours();
else
return 40*getWage()+(getHours()-40)*getWage()*1.5;
/**CommissionEmployee.java**/
//constructor
super(firstName,lastName,socialSecurityNumber,birthDate);
this.grossSales=grossSales;
this.commissionRate=commissionRate;
{
if(grossSales < 0.0)
this.grossSales=grossSales;
return grossSales;
this.commissionRate=commissionRate;
return commissionRate;
@Override
}
public String toString()
/**BasePlusCommissionEmployee.java**/
//constructor
super(firstName,lastName,socialSecurityNumber,grossSales,commissionRate,birthDate);
this.baseSalary=baseSalary;
return baseSalary;
return getBaseSalary()+super.earnings();
/**PayrollSystemTest.java**/
import java.util.Calendar;
BasePlusCommissionEmployee basePlusCommissionEmployee=new
BasePlusCommissionEmployee("Bob","Lewis","444-44-4444",5000,.04,300,new
Date(2,29,2000));
employees[0]=salariedEmployee;
employees[1]=hourlyEmployee;
employees[2]=commissionEmployee;
employees[3]=basePlusCommissionEmployee;
//add a $100.00 bonus to the person’s payroll amount if the current month is
if
(currentEmployee.getBirthDate().getMonth()==Calendar.getInstance().get(Calendar.MONTH)+
1)
{
System.out.printf("%s%n%s:
$%,.2f%n",currentEmployee,"earned",currentEmployee.earnings());
//Otherwise
else
System.out.printf("%s%n%s:
$%,.2f%n%n",currentEmployee,"earned",currentEmployee.earnings());
for(int j=0;j<employees.length;j++)
System.out.printf("Employee %d is a %s%n",j,employees[j].getClass().getName());
/**Date.java**/
//construcotr: confirm proper value for month and day given the year
if(day <=0 || (day > daysPerMonth[month] && !(month == 2 && day == 29)))
if(month ==2 && day==29 && !(year % 400 ==0 || (year % 4 ==0 && year % 100 !=0 )))
this.month=month;
this.day=day;
this.year=year;
//return Month
return month;
}
//return day
return day;
//return year
return year;
return String.format("%d/%d/%d",getMonth(),getDay(),getYear());
QUESTION 12.4
PieceWorkerTest.java:
package sample1;
for(Employee e :empArr){
PieceWorker.java:
package sample1;
return wage;
this.wage = wage;
return pieces;
this.pieces = pieces;
}
this.wage=wage;
this.pieces = pieces;
@Override
return this.getWage()*this.getPieces();
Employee.java:
package sample1;
super();
this.firstName = firstName;
this.lastName = lastName;
this.socialSecurityNumber = socialSecurityNumber;
return firstName;
this.firstName = firstName;
return lastName;
this.lastName = lastName;
return socialSecurityNumber;
this.socialSecurityNumber = socialSecurityNumber;
}
return 0.0;
return "FirstName : " + this.getFirstName() + "\t Last name : " + this.getLastName() + "\t SSN : "
+ this.getSocialSecurityNumber();
QUESTION 10.15
PayableInterfaceTest.java
------------------------------------------------------------
public class PayableInterfaceTest{
System.out.println(
"Invoices and Employees processed polymorphically:\n");
}
}
}
------------------------------------------------------------------------------------------------------------
BasePlusCommissionEmployee.java
------------------------------------------------------------------
public class BasePlusCommissionEmployee extends CommissionEmployee
{
private double baseSalary;
public BasePlusCommissionEmployee(String first, String last, String ssn,
double sales, double rate, double salary){
super(first, last, ssn, sales, rate);
setBaseSalary(salary);
}
@Override
public double getPaymentAmount(){
return getBaseSalary() + super.getPaymentAmount();
}
@Override
public String toString(){
return String.format("%s %s; %s: $%,.2f",
"Base-salaried", super.toString(),
"Base salary", getBaseSalary());
}
}
------------------------------------------------------------------------------------------------
CommissionEmployee.java
------------------------------------------------------------
public class CommissionEmployee extends Employee
{
private double grossSales;
private double commissionRate;
@Override
public double getPaymentAmount(){
return getCommissionRate() * getGrossSales();
}
@Override
public String toString(){
return String.format("%s: %s\n%s: $%,.2f; %s: %.2f",
"Commission employee", super.toString(),
"Gross sales", getGrossSales(),
"Commission rate", getCommissionRate());
}
}
-----------------------------------------------------------------------------------------------
Employee.java
------------------------------------------------
public abstract class Employee implements Payable{
private String firstName;
private String lastName;
private String socialSecurityNumber;
@Override
public String toString(){
return String.format("%s %s\nSocial Security number: %s",
getFirstName(), getLastName(), getSocialSecurityNumber());
}
}
--------------------------------------------------------------------------------------------------
HourlyEmployee.java
---------------------------------------------------------
public class HourlyEmployee extends Employee
{
private double wage;
private double hours;
@Override
public double getPaymentAmount(){
@Override
public String toString(){
return String.format("Hourly employee: %s\n%s: $%,.2f; %s: %,.2f",
super.toString(), "Hourly wage", getWage(),
"Hours worked", getHours());
}
}
-------------------------------------------------------------------------------------------------------
Invoice.java
--------------------------------------------
public class Invoice implements Payable{
@Override
public String toString(){
return String.format("%s: \n%s: %s (%s) \n%s: %d \n%s: $%,.2f",
"Invoice", "Part number", getPartNumber(), getPartDescription(),
"Quantity", getQuantity(), "Price per item", getPricePerItem());
}
@Override
public double getPaymentAmount(){
return getQuantity()*getPricePerItem();
}
}
-----------------------------------------------------------------------------------------------------
Payable.java
-------------------------------------------------
public interface Payable {
double getPaymentAmount();
}
-------------------------------------------------------------------------------------------------
SalariedEmployee.java
--------------------------------------------------------------
public class SalariedEmployee extends Employee{
@Override
public double getPaymentAmount(){
return getWeeklySalary();
}
@Override
public String toString(){
return String.format("Salaried employee: %s\n%s: $%,.2f",
super.toString(), "Weekly salary", getWeeklySalary());
}
}