DataSource and the DataTransformer hierarchy polymorphically. In particular, the program should prompt the user to import data either from a file or from console, and to select the transformation method.FileDataSource is selected, prompt the user to specify the filename from the console.LinearScaler is selected, prompt the user to specify the scaling factor from the console.DataSource hierarchy to import a given field from an input CSV file (see data.csv as an example).CSV file with the transformed ones.Implement a C++ framework for computing derivatives of arbitrary functions using a polymorphic approach. The goal is to create a structure that can handle common arithmetic operations, such as addition, subtraction, multiplication, division, and exponentiation, on values and their derivatives.
Test the program to compute the value and the derivative of the polynomial
ADExpression with two pure virtual functions:
double evaluate(): This function returns the value of the variable.double derivative(): This function returns the derivative of the variable.Scalar that inherits from ADExpression. This class represents a scalar variable and its derivative.ADExpression:
Sum: Represents the addition of two ADExpression objects.Difference: Represents the subtraction of two ADExpression objects.Product: Represents the multiplication of two ADExpression objects.Division: Represents the division of two ADExpression objects.Power: Represents raising an ADExpression object to a constant exponent.ADExpression objects and/or other input from the constructor.main function, demonstrate the usage of these classes.