1 - Object composition with enum Click here to see the Source code. 2 - Abstract classes and polymorphism Click here to see the Source code. 3 - Handling exceptions and custom exceptions classes Click here to see the Source code.