Base class for vehicles, implementing IOInterfaceVehicle
and InterfaceVehicle
. Contains attributes such as brand, model, manufacture year, mileage history, features, and price.
Extends Vehicle
and adds attributes specific to fuel vehicles, such as fuel type and consumption.
Extends FuelVehicle
and adds attributes for hybrid vehicles, such as electric range and charging time.
Class for managing showrooms, with methods to set and get the showroom name and list of available vehicles.
Class for managing clients, with methods to set and get the name, remaining payment, payment history, and purchased vehicles.
Class for managing transactions, with methods to set and get the client, purchased vehicle, and paid amount.
Singleton class for managing objects and the interactive menu in the application.
Abstract class for observers, with a virtual notify
method.
Extends Observer
and implements the notify
method to display messages in the console.
Class that manages observers and notifies them of changes.
- Interactive Menu: Allows users to interact with the application in an easy and intuitive way.
- Observer Design Pattern: Notifies observers when changes occur in monitored objects.
- Inheritance: Implements inheritance between classes to ensure code reuse and logical organization.
- Parent-Child-Grandchild Hierarchy: The project uses a three-level inheritance hierarchy with parent, child, and grandchild classes.
- Exception Handling: Efficient error management through defined exception classes.
- Use of STL: Utilizes standard collections (map, set, list, vector) for data management.
- Upcasting and Downcasting: Uses
dynamic_cast
for safe upcasting and downcasting between class types.