oop c++ project please asap with explanation thank you
(Phase 3) Project Description In continuation of our pharmacy management system for managing medications, customers, and sales transactions, this phase will incorporate intermediate/advanced concepts of OOP including Inheritance and Dynamic Memory. Project Requirements Modify the Medication classes you created in phases 1 and 2 to divide medicines into two exclusive (all medicines in the system need to be categorized) sub-categories as follows: Prescription Medicines have the following special attributes int FDANumber //indicating the FDA approval number Date ApprovalDate //the date of approval of the medicine + any additional attributes or methods you need OffTheShelf Medicines have the following attributes bool BOGOF - Buy 1 Get 1 Free Date OfferEnds set to 2 years from now for nondiscounted meds and to 3 months from now for meds on offer. + any additional attributes or methods as needed 1. You need to create at least 4 objects including both sub-types/categories. a. 1-An object in static memory with attributes in static memory b. 2 - An object in static memory with attributes in dynamic memory c. 3-An object in dynamic memory with attributes in static memory d. 4 - An object in dynamic memory with attributes in dynamic memory 2. You also need to create/print a report that shows medicines in stock by calling a print method on each object, the object will print its details using a local print method (in the derived class) and also call a print method for the common details from the base class. 3. Your code needs to do proper garbage collection for all dynamic memory allocations. Attributes: int FDANumber Date ApprovalDate Methods: Constructor(s) to initialize medication attributes. Setters and getters Print to display information about medication (need to call base's print first and then print local derived object attributes) class OffTheShelf: public Medicine Attributes bool BOGOF; Date OfferEnds; Methods: Constructor(s) to initialize medication attributes. Setters and getters Print to display information about medication (need to call base's print first and then print local derived object attributes) Micdication Class Atribates: Medication ID ( tenerated stquetutially) Medication Name description Price Quantity in Stock Expiry Dake (Of Type Date) barcode Methodk: Ccestructoe(s) to initialize medication amtilutes. Setters and getter Display information abeut modication. Date Class Atributes: Day Moet Yiar Methodx: Constractor(s) to initialine date attributics. Setticris) and goticr(s) Display date information in the focmat "daynownthyear" Custemer Class Attributes: Cusiomer Name Cuslomer iD (sencrated sequestialy) Customer addres (of type Address) Methods: Constrector(s) to initialixe customer atribules. Seticts and petters Display customer's information Address Class Attributes: Email City Mobile No Street Name Methods: Constructor(s) to initialize address attributes. Setter(s) and getter(s) Display address information in proper way Notes: - You MUST use dynamic memory allocation in this phase. - You must implement inheritance in this phase. 2. User Interface Create a simple text-based user interface that allows users to interact with the pharmacy management system. You should provide a menu with options for performing operations as follows: - Define dynamic array of pharmacy based on user input. - Add option if user need to resize array of pharmacy. - Add medication(s) for each pharmacy's inventory. - Add customer(s) for each pharmacy - Display list of medications (including all of their information) for a pharmacy - Remove a medication from a pharmacy - Display list of customers (including all of their information) for one pharmacy - Test all functions you have defined in your classes 3. Object-Oriented Principles Apply object-oriented programming principles such as composition to your class designs. 4. Error Handling Implement error handling to deal with invalid inputs or other potential issues in the program. 5. Documentation and Comments Provide clear comments and documentation for your code, explaining the purpose of classes, functions, and any complex logic. Project Submission You should submit the following for evaluation: The source code of your pharmacy management system written in C++. A document explaining how the system works, and any challenges you faced during the development