Implement the following interface and classes: IDiscountPolicy BulkDiscount BuyN
ID: 3684551 • Letter: I
Question
Implement the following interface and classes: IDiscountPolicy BulkDiscount BuyNItemsGetOneFree CombinedDiscount DiscountTester IDiscountPolicy is an interface. IDiscountPolicy has singe method computeDiscount. computeDiscount returns a double. The double represents the discount amount for a given number of items. computeDiscount has two parameters, int count indicates the number of items, double itemCost is the cost of a single item. BulkDiscount implements the IDiscountPolicy interface. The constructor has two parameters, int minimum specifies the minimum number of items need to get the discount, double percent is the discount percent. The computeDiscount method computes the discount amount as follows: if count = minimum then discount = count * itemCost * percent BuyNItemsGetOneFree implements the IDiscountPolicy interface. The constructor has one parameter: int n. n represents the numbers of items needed to get one item free. For example when n is 3, when buying 3 items one is free, when buying 6 items 2 are free. The computeDiscount method computes the discount as follows: discount = number of free items * itemCost CombinedDiscount implements the IDiscountPolicy interface. The constructor has two parameters of type IDiscountPolicy. The computeDiscount method computes the discount amount using the two IDiscountPolicy objects and returns the largest discount amount. The DiscountTester class tests the BulkDiscount, BuyNItemsGetOneFree and CombinedDiscount classes.Explanation / Answer
DiscountTester.java
package org.students;
import java.util.Scanner;
public class DiscountTester {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("No Of Items You Bought::");
int items = sc.nextInt();
System.out.print("Cost of Each Item::");
double cost = sc.nextInt();
System.out.println("===========BulkDiscount================");
System.out.print("Discount You are Getting in BulkDiscount ::");
double discount = sc.nextInt();
System.out.println("==========Buy N Items Get One Free=====");
System.out
.print("Minimum no of Items You have to Buy to get Free items ::");
int min = sc.nextInt();
System.out.println("======================================");
BulkDiscount bulkDis = new BulkDiscount(items, discount);
Double discount1 = bulkDis.computeDiscount(items, cost);
System.out
.println("The Discount we got in case of 'Bulk Discount' is: "
+ discount1);
BuyNItemsGetOneFree buynitems = new BuyNItemsGetOneFree(min);
double discount2 = buynitems.computeDiscount(items, cost);
System.out
.println("The Discount we got in case of 'BuyNItemsGetOneFree' is: "
+ discount2);
CombinedDiscount cd = new CombinedDiscount(bulkDis, buynitems);
double discount3 = cd.computeDiscount(items, cost);
}
}
___________________________________________________________________________________________
IDiscountPolicy.java
package org.students;
public interface IDiscountPolicy {
public double computeDiscount(int count, double itemCost);
}
_________________________________________________________________________________________
BulkDiscount.java
package org.students;
public class BulkDiscount implements IDiscountPolicy {
double discount;
private int minimum;
private double percent;
public BulkDiscount(int minimum, double percent) {
super();
this.minimum = minimum;
this.percent = percent;
}
@Override
public double computeDiscount(int count, double itemCost) {
if (count >= minimum) {
discount = count * itemCost * (percent / 100);
} else if (count < minimum) {
discount = 0;
}
return discount;
}
}
_________________________________________________________________________________________
BuyNItemsGetOneFree.java
package org.students;
public class BuyNItemsGetOneFree implements IDiscountPolicy {
double discount = 0.0;
private int n = 0;
public BuyNItemsGetOneFree(int n) {
super();
this.n = n;
}
@Override
public double computeDiscount(int count, double itemCost) {
int number_Of_Free_Items = count / n;
discount = number_Of_Free_Items * itemCost;
return discount;
}
}
_____________________________________________________________________________________
CombinedDiscount.java
package org.students;
public class CombinedDiscount implements IDiscountPolicy {
private IDiscountPolicy obj1;
private IDiscountPolicy obj2;
public CombinedDiscount(IDiscountPolicy obj1, IDiscountPolicy obj2) {
super();
this.obj1 = obj1;
this.obj2 = obj2;
}
@Override
public double computeDiscount(int count, double itemCost) {
double discount1=obj1.computeDiscount(count, itemCost);
double discount2=obj2.computeDiscount(count, itemCost);
if(discount1>discount2)
{System.out.println("Maximum Discount we got in 'BulkDiscount' is:"+discount1);
return discount1;}
else
{System.out.println("Maximum Discount we got in 'BuyNItemsGetOneFree' is:"+discount2);
return discount2;}
}
}
_________________________________________________________________________________________
output:
No Of Items You Bought::6
Cost of Each Item::350
===========BulkDiscount================
Discount You are Getting in BulkDiscount ::30
==========Buy N Items Get One Free=====
Minimum no of Items You have to Buy to get Free items ::3
======================================
The Discount we got in case of 'Bulk Discount' is: 630.0
The Discount we got in case of 'BuyNItemsGetOneFree' is: 700.0
Maximum Discount we got in 'BuyNItemsGetOneFree' is:700.0
_____________________________________________________________________________________________