Skip to content

andreiOpran/Car-Dealership-Management-OOP

Repository files navigation

Car Dealership Management Project

Main Classes

Vehicle

Base class for vehicles, implementing IOInterfaceVehicle and InterfaceVehicle. Contains attributes such as brand, model, manufacture year, mileage history, features, and price.

FuelVehicle

Extends Vehicle and adds attributes specific to fuel vehicles, such as fuel type and consumption.

HybridVehicle

Extends FuelVehicle and adds attributes for hybrid vehicles, such as electric range and charging time.

Showroom

Class for managing showrooms, with methods to set and get the showroom name and list of available vehicles.

Client

Class for managing clients, with methods to set and get the name, remaining payment, payment history, and purchased vehicles.

Transaction

Class for managing transactions, with methods to set and get the client, purchased vehicle, and paid amount.

Singleton

Singleton class for managing objects and the interactive menu in the application.

Observer

Abstract class for observers, with a virtual notify method.

ConsoleObserver

Extends Observer and implements the notify method to display messages in the console.

Subject

Class that manages observers and notifies them of changes.

Main Features

  • 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.