This project simulates a simplified version of a restaurant. It aimes to help the staff manage the menu through an interface.
Users can add dishes and drinks, visualise all drinks, all dishes or the whole menu. They can view the price-quantity ratio for all products and find or duplicate them by name. Throughout the project I used OOP concepts such as inheritence, virtual classes, copy constructors, =operators, dynamic cast, smart pointers upcasting and downcasting.
Using the interface, the customers have access to a simplified menu, without the unneccessary information designed for staffusage. This was achived by referencing the facade design pattern.
To operate with ease, the product class inherites an IOstream class, so the drinks and dishes can be printed just by using >>.
I also used the STL library, exceptions, consts, the singleton design pattern for the user interface class, an ID generator class for the products added to the menu and template classes and methods.
Below there is a unified modeling language (UML) diagram in order to help better visualise the code.