CS1073/Submissions/CS1073 As8/IsaacShoebottom_As8_Archive/WarrantyCustomer.java
2022-10-07 00:22:46 -03:00

55 lines
1.9 KiB
Java

/**
* This class contains a customer that has a warranty. It contains the customers name, car model and overridden methods pertaining to that the customer is a warranty owner
* @author Isaac Shoebottom (3429069)
*/
public class WarrantyCustomer extends Customer {
/**
* (long) The time since the last discount for being a warrenty owned was applied
*/
private long monthsSinceLastDiscount = 0;
/**
* Warranty customer constructor, it stores the customers name and car model
* @param customer The customers name
* @param car The customers car model
*/
WarrantyCustomer(String customer, String car) {
super(customer, car);
}
/**
* The overridden method that applies a discount if the user has not used their discount in 12 months
* @return The cost of the visit
*/
@Override
double getNextVisitCost() {
if (monthsSinceLastDiscount >= 12) {
monthsSinceLastDiscount = 0;
return (0.8 * super.getNextVisitCost());
}
return super.getNextVisitCost();
}
/**
* Method specific to the warranty owners, increases the months since last discount as well as months since last visit
*/
@Override
void incMonthsSinceVisit() {
super.incMonthsSinceVisit();
monthsSinceLastDiscount++;
}
/**
* Create an invoice for warranty owners, includes the months since the last time the discount was applies
* @return The customers invoice, includes the last time the warranty discount was applied
*/
@Override
String createVisitInvoice() {
long tempMonthsSinceLastDiscount = monthsSinceLastDiscount;
return(
super.createVisitInvoice() +
"\n\t\tmonths since discount: " + tempMonthsSinceLastDiscount + "\t(has warranty)"
);
}
}