**1. Abstract Class (Operation): The Operation class has a pure virtual function execute, making it an abstract class. Derived classes like Add, Subtract, Multiply, and Divide implement this function.
Factory Pattern: The OperationFactory class contains a method getOperation() which returns the appropriate operation object based on the user input.
Error Handling: If division by zero is attempted, an exception is thrown to prevent invalid operations.**
**1. Abstract Class (Operation): The Operation class has a pure virtual function execute, making it an abstract class. Derived classes like Add, Subtract, Multiply, and Divide implement this function.