Write a program that will create a CruiseShip class and CargoShip class both der


Write a program that will create a CruiseShip class and CargoShip class both derived from an abstract Ship class.You will need seven files for this program:ship.hship.cppcruiseship.hcruiseship.cppcargoship.hcargoship.cppmain.cpp main() function and other functions as describedThese files have been provided for you.Part 1 ship.h and ship.cpp (10 Points)ship.hPlace the following in your Ship classprivate (Do not make this protected. Values should be passed from the child class to the parent class using constructor initializer list in the child constructor)member variable called name that is a stringmember variable called yearBuilt that is a stringpublicConstructor. Two parameter constructor. First parameter is a string for name. Second parameter is a string for yearBuilt. DO NOT CODE A DEFAULT CONSTRUCTORTwo gettersgetName() should return the namegetYearBuilt() should return the year builtA virtual function of type void called print(). No parameters. Note: This is a virtual function NOT a pure virtual functionA pure virtual function of type void called makeItGo(). No parameters. Note: This is a pure virtual functionNote: This class will not have any settersship.cppImplementation NotesThe constructor should take two string parameters. The first parameter should be assigned to name. The second parameter should be assigned to yearBuiltgetName() should return namegetYearBuilt() should return yearBuiltprint() should cout the name of the ship on one line and the year built on another line. The second line should end with an end line. See the exampleName: The Name of This ShipYear Built: 2020Note: Do not implement makeItGo(). It is a pure virtual function and should not be implemented in the abstract class. It will be implemented in the derivied class.Part 2 cruiseship.h and cruiseship.cpp (15 Points)cruiseship.hThe CruiseShip class should publicly inherit from the Ship class. Place the following in your CruiseShip classprivatemember variable called maxPassengers this is an intpublicConstructor. Three parameter constructor. First parameter is a string for name. Second parameter is a string for yearBuilt. Third parameter is an int for maxPassengers. DO NOT CODE A DEFAULT CONSTRUCTOROne gettergetMaxPassengers() should return the maxPassengersOverride function of type void called print(). No parameters.Override pure virtual function of type void called makeItGo(). No parameters. This function should not be a pure virtual function in this classNote: This class will not have any setterscruiseship.cppImplementation NotesThe constructor should take two string parameters and one int parameter. The constructor should call the parent constructor using an initializer list passing it the parameters for name and yearBuilt. The int parameter should be assigned to maxPassengers.getMaxPassengers() should return maxPassengersprint() should call the print function from the parent and then should cout the maxPassengers on another line. The third line should end with an end line. See the exampleName: The Name of This ShipYear Built: 2020Maximum passengers: 250You will need to implement the function makeItGo(). It should cout the text “The cruise ship goes woo woo!”. There should be no end line the after the text. See the exampleThe cruise ship goes woo woo!Part 3 cargoship.h and cargoship.cpp (15 Points)cargoship.hThe CargoShip class should publicly inherit from the Ship class. Place the following in your CargoShip classprivatemember variable called tonnage this is an intpublicConstructor. Three parameter constructor. First parameter is a string for name. Second parameter is a string for yearBuilt. Third parameter is an int for tonnage. DO NOT CODE A DEFAULT CONSTRUCTOROne gettergetTonnage() should return the tonnageOverride function of type void called print(). No parameters.Override pure virtual function of type void called makeItGo(). No parameters. This function should not be a pure virtual function in this classNote: This class will not have any setterscargoship.cppImplementation NotesThe constructor should take two string parameters and one int parameter. The constructor should call the parent constructor using an initializer list passing it the parameters for name and yearBuilt. The int parameter should be assigned to tonnage.getTonnage() should return tonnageprint() should call the print function from the parent and then should cout the tonnage on another line. The third line should end with an end line. See the exampleName: The Name of This ShipYear Built: 2020Cargo capacity: 27 tonsYou will need to implement the function makeItGo(). It should cout the text “The cargo ship goes toot toot!”. There should be no end line the after the text. See the exampleThe cargo ship goes toot toot!Part 4 main.cpp (5 Points)The function main() is complete and should not be modified.You will need to complete the function void loadShips(vector& vShip, string fileName)On line 68, you will need to create a CruiseShip and add to vector vShip.On line 72, you will need to create a CargoShip and add to vector vShip.Note: Keep in mind that vShip is a vector of pointers to Ship. Both CruiseShip and CargoShip will need to be pointers in order to add them to vShip