In C++,Write a program that defines a base class called FTP3015. It has the following grading scheme:- 3 assignments 100 points each 25%- Midterm 100 points 30%- Final 100 points 45%Based on the total grade of any student for the course, the letter grade of each student can be computed as follows:Any grade of 90 or more is an A, any grade of 80 or more (but less than 90) is a B, any grade of 70 or more (but less than 80) is a C, any grade of 60 or more (but less than 70) is a D, and any grade below 60 is an F.This class needs to have some member variables. The first name, last name, the S-number (student number, it can be made up), the grades, the total grade, and final letter grade can all be considered as private member variables of this class.The class should also have the following public member functions/procedural attributes that canprovide functionality for the objects of the class:a. Constructor and default constructorb. Setter functions for all the member variablesc. Getter functions for all the member variablesd. An input function that asks the user for student’s name, Z-number and grades.e. A function that computes the student’s total gradef. A function that computes the student’s final letter grade.g. An output function that displays the information of any student: including their S-number, and grades on all assignment to the screen.The next step is to create a derived class from FTP3015 and name it Fall23. In this new class, add a 4 th assignment variable. The extra assignment does not change the grading scheme.Add another variable for assignment 4 as the member of the derived class.Generate/redefine the following member functions:- Constructor for the derived class.- Input function which includes all assessments.- Output function which now also displays the grade for 4 th assignment.- A redefined function for computation of the student total grade.Now create another derived class from FTP3015 and name it Summer23. In this new class, add a bonus variable. The bonus variable adds 3% bonus to the total grade for a total of 103%.Generate/redefine the following member functions:- Constructor for the derived class.- Input function which includes all assessments and bonus.- Output function which now also displays the bonus.- A new function definition for a function that adds the bonus to the final grade.Test cases for the class definitions:Once you generate the class definition with all its function definitions, the next step is to use the classes and generate test cases. First, construct some objects of the derived class. Give them names to represent individual students.Every student can start off with initialized total grade of 100 which can be initialized in theconstructor (initial value is 100) and later updated by the teaching staff.Importantly, each student gets a total grade and a letter grade which is computed for themautomatically.Sample students along with their information are summarized and displayed below: