public abstract class SimpleCalculator
public abstract double Calculate(double a1, double b2);
public class Addition : SimpleCalculator
public override double Calculate(double a1, double b2)
public class Subtraction : SimpleCalculator
public override double Calculate(double a1, double b2)
public class Multiplication : SimpleCalculator
public override double Calculate(double a1, double b2)
public class Division : SimpleCalculator
public override double Calculate(double a1, double b2)
private SimpleCalculator operation;
public Calculator(SimpleCalculator operation)
this.operation = operation;
public double PerformCalculation(double a1, double b2)
return operation.Calculate(a1, b2);
public static void Main()
bool continueCalculating = true;
while (continueCalculating)
Console.WriteLine("-----------------");
Console.WriteLine("Basic Calculator");
Console.WriteLine("-----------------");
Console.Write("\nEnter the first number: ");
double number1 = Convert.ToDouble(Console.ReadLine());
Console.Write("Enter the second number: ");
double number2 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("\nSelect operation:");
Console.WriteLine("[1] Addition");
Console.WriteLine("[2] Subtraction");
Console.WriteLine("[3] Multiplication");
Console.WriteLine("[4] Division");
Console.Write("Enter your choice of operation ([1] or [2] or [3] or [4]): ");
int choice = Convert.ToInt32(Console.ReadLine());
SimpleCalculator operation;
operation = new Addition();
operation = new Subtraction();
operation = new Multiplication();
operation = new Division();
Console.WriteLine("Sorry, Invalid Selection. Only range of 1...4 are expected");
Console.WriteLine("Please try again.");
Calculator calculator = new Calculator(operation);
double result = calculator.PerformCalculation(number1, number2);
Console.WriteLine("Result: " + result);
Console.Write("\nDo you want to try another operation? (Y/N): ");
string input = Console.ReadLine();
if (input.Equals("N", StringComparison.OrdinalIgnoreCase))
Console.Write("\nTHANK YOU");