Consider class Certification with data members Id (int), name (String) , hours(int), level (String), costPerHr (double). You are required to Provide a class StudentCertification that extends Certification . This class has additional data member rebate (double) o Override the calculateFee method so that total cost is calculated by getting total for training hours @costPerHr and applying rebate (%). E.g. if costPerHr is 200 and 50 hours training and 0.2 rebate then calculateFee should return 10000 – 0.2 *10000 = 8000 Provide another sub class ProfessionalCertification that extends Certification. This class no additional data member. o It overrides calculateFee method so that total cost is returned as product of hours and cost per hour plus 15% tax of total hours cost. o Also ProfessionalCertification implements Extendible Interface. You will also have to provide implementation of method extend(int duration). For this you need to add duration to the training hours of the certification write main class
class Certification {
private int Id;
private String name;
private int hours;
private String level;
private double costPerHr;
public Certification() {
}
public Certification(int Id, String name, int hours, String level, double costPerHr) {
this.Id = Id;
this.name = name;
this.hours = hours;
this.level = level;
this.costPerHr = costPerHr;
}
public double calculateFee() {
return costPerHr * hours;
}
/**
* @return the id
*/
public int getId() {
return Id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
Id = id;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the hours
*/
public int getHours() {
return hours;
}
/**
* @param hours the hours to set
*/
public void setHours(int hours) {
this.hours = hours;
}
/**
* @return the level
*/
public String getLevel() {
return level;
}
/**
* @param level the level to set
*/
public void setLevel(String level) {
this.level = level;
}
/**
* @return the costPerHr
*/
public double getCostPerHr() {
return costPerHr;
}
/**
* @param costPerHr the costPerHr to set
*/
public void setCostPerHr(double costPerHr) {
this.costPerHr = costPerHr;
}
}
class StudentCertification extends Certification {
private double rebate;
public StudentCertification() {
}
public StudentCertification(int Id, String name, int hours, String level, double costPerHr, double rebate) {
super(Id, name, hours, level, costPerHr);
this.rebate = rebate;
}
/**
* @return the rebate
*/
public double getRebate() {
return rebate;
}
/**
* @param rebate the rebate to set
*/
public void setRebate(double rebate) {
this.rebate = rebate;
}
/**
* Override the calculateFee method so that the total cost is calculated by
* getting the total for the training hours @costPerHr and applying the rebate
* (%). E.g. if the costPerHr is 200 and 50 hours training and 0.2 rebate then
* the calculateFee should return 10000 – 0.2 *10000 = 8000
*/
@Override
public double calculateFee() {
double fee = super.calculateFee();
return fee - rebate * fee;
}
}
interface Extendible {
void extend(int duration);
}
class ProfessionalCertification extends Certification implements Extendible {
public ProfessionalCertification() {
}
public ProfessionalCertification(int Id, String name, int hours, String level, double costPerHr) {
super(Id, name, hours, level, costPerHr);
}
/**
* It overrides calculateFee method so that total cost is returned as product of
* hours and cost per hour plus 15% tax of total hours cost.
*/
@Override
public double calculateFee() {
double fee = super.calculateFee();
return fee + 0.15 * fee;
}
@Override
public void extend(int duration) {
setHours(getHours() + duration);
}
}
class App {
public static void main(String[] args) {
ProfessionalCertification professionalCertification = new ProfessionalCertification(4545, "Peter", 50, "Junior",
200);
System.out.println("Fee: " + professionalCertification.calculateFee());
}
}
Comments
Leave a comment