Professional Documents
Culture Documents
Lab Final
Question No. 01:
10.12 (Accounts Payable System Modification) It's possible to include the functionality of the
pay roll application (Figs. 10.4-10.9) in the accounts payable application without modifying
Employee subclasses SalariedEmployee, HourlyEmployee. CommissionEmployee or
BasePlusCommission Esp Tyee. To do so, you can modify class Employee (Fig. 1814) to
implement intertice Payable and declare method getPayment Amount to invoke method earnings,
Method, get Payment Amount would then be inherited by the subclasses in the Employee
hierarchy. When getPayment Amount is called for a particular subclass object, is
polymorphically invokes the appropriate earnings method for that subclass. Reimplement
Exercise 10.11 using the original Employee hierarchy from the payroll appli cation of Figs. 10.4-
10.9. Modify class Employee as described in this exercise and donor modify any of class
Employee's subclasses.
ANSWER:
PAYABLE INTERFACE:
double getPaymentAmount();
EMPLOYEE CLASS:
setFirstName(fname);
setLastName(lname);
setSocialSecurityNumber(ssn);
1
June 29,
OBJECT ORIENTED PROGRAMMING
2022
FirstName = firstName;
LastName = lastName;
SocialSecurityNumber = socialSecurityNumber;
return FirstName;
return LastName;
return SocialSecurityNumber;
%s",getFirstName(),getLastName(),getSocialSecurityNumber());
@Override
2
June 29,
OBJECT ORIENTED PROGRAMMING
2022
return Earnings();
SALARIED-EMPLOYEE CLASS:
wsalary){
super(fname,lname,ssn);
setWeeklySalary(wsalary);
return weeklySalary;
if(weeklySalary>=0.0){
this.weeklySalary = weeklySalary;
else
@Override
return getWeeklySalary();
3
June 29,
OBJECT ORIENTED PROGRAMMING
2022
@Override
$%f",super.tostring(), getWeeklySalary());
HOURLY-EMPLOYEE CLASS:
setHours(HoursWorked);
setWage(HourlyWage);
this.wage = wage;
this.hours = hours;
else
<= 168.0");
4
June 29,
OBJECT ORIENTED PROGRAMMING
2022
return wage;
return hours;
@Override
if ( getHours() <= 40 )
else
@Override
Worked: %f",super.tostring(),getWage(),getHours());
COMMISSION-EMPLOYEE CLASS:
5
June 29,
OBJECT ORIENTED PROGRAMMING
2022
setGrossSales(gSale);
setCommissionRate(cRate);
this.GrossSales = grossSales;
else
this.CommissionRate = commissionRate;
else
return GrossSales;
return CommissionRate;
6
June 29,
OBJECT ORIENTED PROGRAMMING
2022
@Override
@Override
getCommissionRate());
BASE-PLUS-COMMISSION-EMPLOYEE CLASS:
setBaseSalary(bSalary);
return BaseSalary;
if(baseSalary>=0.0){
this.BaseSalary = baseSalary;
7
June 29,
OBJECT ORIENTED PROGRAMMING
2022
else
@Override
@Override
getBaseSalary());
MAIN CLASS:
SalariedEmployee("Bilal","Khan","SCN4201",800);
HourlyEmployee("Ali","Hassan","SCN4202",12,15);
CommissionEmployee("Hamza","Malik","SCN4203",15240,0.069);
BasePlusCommissionEmployee("Samad","Shehroz","SCN4204",12650,0.05,400);
8
June 29,
OBJECT ORIENTED PROGRAMMING
2022
employee[0] = salariedEmployee;
employee[1] = hourlyEmployee;
employee[2] = commissionEmployee;
employee[3] = basePlusCommissionEmployee;
System.out.println("\n"+employee[i].tostring());
BasePlusCommissionEmployee objRef =
(BasePlusCommissionEmployee) employee[i];
objRef.setBaseSalary(1.10 * objRef.getBaseSalary());
$"+objRef.getBaseSalary());