This lab will cover class inheritance. Provide a make file, with targets for each project, and make sure you use put the classes in a namespace. 1. Define a class named Payment that contains a member variable of type float which stores the amount of the payment and appropriate accessor and mutator functions. Also create a member function named paymentDetails that outputs an English sentence describing the amount of the payment. Next, define a class named CashPayment that is derived from Payment. This class should redefine the paymentDetails function to indicate that the payment is in cash. Include appropriate constructors. Next, define a class CreditCardPayment that is derived from Payment. This class should contain member variables for the name on the card, expiration date, and credit card number. Include appropriate constructors. Finally, redefine the paymentDetails function to include all credit card information in the printout. Create a main function that creates at least two CashPayment and two CreditCardPayment objects with different values and calls to paymentDetails for each. 2. Chapter 15, Programming Project 4 E.C. Define a class named Document that contains a member variable of type string named text that stores and textual content for the document. Create a function named getText that returns the text field, a way to set this value, and an overloaded assignment operator. Next, define a class for Email that is derived from Document and that includes member variables for the sender, recipient, and title of an email message. Implement appropriate accessor and mutator functions. The body of the email message should be stored in the inherited variable text. Also overload the assignment operator for this class. Similarly, define a class for File that is derived from Document and that includes a member variable for the pathname. Implement appropriate accessor and mutator functions for the pathname and overload the assignment operator. Finally, create several sample objects of type Email and File in your main function. Test your objects by passing them to the following function, which will return true if the object contains the specified keyword in the text property. Note that this avoids the slicing problem discussed in class by passing the object by reference, rather than value. bool ContainsKeyword(const Document& docObject, string keyword) { if (docObject.getText().find(keyword) != string::npos) return true; return false; } For example, you might test to see whether an email message contains the text "c++" with the call ContainsKeyword(emailObj, "c++");.