public static void Main()
Console.WriteLine("Hello World");
Customer cust = new Customer();
cust.DicountGroup = new FreqentDiscount();
Product prod = new Product();
ProductPriceCalculatorOOP calc = new ProductPriceCalculatorOOP();
Console.WriteLine(calc.GetMaximumDiscountPrice(cust, prod));
public IDiscount DicountGroup
public interface IDiscount
decimal CalculateDiscount(decimal price);
public class EmployeeDiscount : IDiscount
public decimal CalculateDiscount(decimal price)
decimal discount = price * (decimal).20;
public class VIPDiscount : IDiscount
public decimal CalculateDiscount(decimal price)
decimal discount = price * (decimal).10;
public class FreqentDiscount : IDiscount
public decimal CalculateDiscount(decimal price)
decimal discount = price * (decimal).05;
public class ProductPriceCalculatorOOP
public decimal GetMaximumDiscountPrice(Customer cust, Product product)
decimal employeeDiscount = cust.DicountGroup.CalculateDiscount(product.UnitPrice);
decimal firstDayDiscount = 0;
if (product.UnitPrice > 100 && DateTime.Now.Day == 1)
decimal maxDiscount = employeeDiscount > firstDayDiscount ? employeeDiscount : firstDayDiscount;
return product.UnitPrice - maxDiscount;