public abstract class Calculator
public abstract double Calculate(double num1, double num2);
public class AdditionCalculator : Calculator
public override double Calculate(double num1, double num2)
public class SubtractionCalculator : Calculator
public override double Calculate(double num1, double num2)
public class MultiplicationCalculator : Calculator
public override double Calculate(double num1, double num2)
public class DivisionCalculator : Calculator
public override double Calculate(double num1, double num2)
throw new DivideByZeroException("Cannot divide by zero.");
public class UserCalculator
public Calculator GetOperationChoice()
Console.WriteLine("j1mm4's Calculator");
Console.WriteLine("Choose an operation:");
Console.WriteLine("1. Addition");
Console.WriteLine("2. Subtraction");
Console.WriteLine("3. Multiplication");
Console.WriteLine("4. Division");
Console.Write("Enter your choice (1-4): ");
int choice = int.Parse(Console.ReadLine());
return new AdditionCalculator();
return new SubtractionCalculator();
return new MultiplicationCalculator();
return new DivisionCalculator();
throw new ArgumentException("Invalid choice.");
public void GetNumbers(Calculator calculator)
Console.Write("Enter the first number: ");
double num1 = double.Parse(Console.ReadLine());
Console.Write("Enter the second number: ");
double num2 = double.Parse(Console.ReadLine());
double result = calculator.Calculate(num1, num2);
Console.WriteLine("Result: " + result);
public static void Main()
UserCalculator calculator = new UserCalculator();
Calculator selectedCalculator = calculator.GetOperationChoice();
calculator.GetNumbers(selectedCalculator);