General Requirements
Please define and implement the following object-oriented assets in your project:
At least 5 interfaces (with one or more implementations)
At least 15 classes (implementing the application logic)
At least 3 abstract classes (with inheritors)
At least 1 custom exception class (with usage in your code)
At least 3 levels of depth in inheritance
At least 1 polymorphism usage
At least 1 structure
At least 1 enumeration
At least 1 event (with subscribers)
At least 1 design pattern (e.g. Composite, Singleton, Factory, Wrapper, Bridge, Command, etc.)