This is the project question
pls email me >>>firstname.lastname@example.org so i can email u de project codes...
Define a class called StorageTank. It has the following member data: volume which records the physical volume of the tank itself; tank_id is a character pointer to the tank id and owner is a character pointer that represents the owner of the storage tank. Derive from the Storagetank class, the classes GasTank and OilTank. The Storagetank class therefore needs a TankType to differentiate between these two types of Storagetank object. Each of these classes should have a Display( ) function which displays on the screen the attributes of each StorageTank object.
The class OilTank should contain the double member content_volume, which represents the actual volume of oil inside the OilTank object, and the static integer data member tank_qty, which represents the total number of OilTank objects created so far. Two member functions are created: content_add( ) for increasing the content volume and content_drain( ) to decrease the content volume.
The GasTank class can be further classified into PropaneTank class and MethaneTank class. The data member of GasTank class should have a double pressure, which records the gas pressure under certain temperature; gastype, which differentiates between the propane and methane type; and the static integer data member tank_qty, which represents the total number of GasTank objects created so far.
The PropaneTank class has a static double variable called Max_Pressure, which indicates the max pressure that tank can withstand.
The MethaneTank class should contain the double member content_volume, which represents the actual volume of the methane gas in liquidified state inside the MethaneTank object; a bool variable to indicate if the methane contained within is liquidified; a static double value called Max_Pressure, which indicates the maximum pressure of the methane gas that the tank contains and is only applicable if the methane is not liquidified.
Both PropaneTank and MethaneTank class should also have their corresponding member functions: content_add( ) for increasing the content volume and content_drain( ) to decrease the content volume. In the case of MethaneTank object, filling and draining operation is subject to the constraints decided by the state of the methane, i.e. gaseous or liquidified form.
Write a program that uses an array tank_farm of 20 tank pointers to store information about a set of fuel tanks. The program should ask the user to enter information about the kind of fuel tank the user wants to create. The program should dynamically allocate space for a fuel tank object and set an element of tank_farm to point to the fuel tank object. The user can choose to display the information pertaining to all the objects created for any particular type of fuel tank. The delivery of any tank_farm fuel tank signifies the removal (destruction) of the fuel tank object.
Code all necessary functions for all classes including but not limited to the following types: constructor, destructor, and accessor (set and get) functions. Determine in an appropriate manner whether functions should be static, virtual, pure virtual, constant, overloading and overriding; variables should be static, constant and dynamically created. You may choose to use C++ String class instead of the character arrays C strings. As far as possible, data encapsulation,
inheritance and polymorphism should be deployed in the application.