?Please use the following UML diagram and main.cpp to complete the code below Rectangle T width T height: T Rectangle Rectangle(x T y T width height T) getWidth() T getHeight T set Width (newWidth T) void setHeight(newHeight T) void area float circumference float public Square T Square (x T y T, side T) Solution PROGRAM CODE: Rectangle.h /* * Rectangle.h * * Created on: 21-Nov-2016 * Author: kasturi */ #ifndef RECTANGLE_H_ #define RECTANGLE_H_ using namespace std; template class Rectangle { private: T width; T height; public: Rectangle(); Rectangle(T w, T h); T getHeight(); void setHeight(T height) ; T getWidth(); void setWidth(T width); float area(); float circumference(); }; template Rectangle::Rectangle() { width = 0; height = 0; } template Rectangle::Rectangle(T w, T h) { width = w; height = h; } template T Rectangle::getHeight() { return height; } template void Rectangle::setHeight(T height) { this->height = height; } template T Rectangle::getWidth() { return width; } template void Rectangle::setWidth(T width) { this->width = width; } template float Rectangle::area() { float area = width * height; return area; } template float Rectangle::circumference() { float circumference = 2 * (width + height); return circumference; } #endif /* RECTANGLE_H_ */ Square.h /* * Square.h * * Created on: 21-Nov-2016 * Author: kasturi */ #ifndef SQUARE_H_ #define SQUARE_H_ #include \"Rectangle.h\" using namespace std; template class Square : public Rectangle { private: T side; public: Square(T w, T h, T s); }; template Square::Square(T w, T h, T s) : Rectangle(w, h) { side = s; } #endif /* SQUARE_H_ */ //main class RecMain.cpp /* * RecMain.cpp * * Created on: 21-Nov-2016 * Author: kasturi */ #include #include \"Square.h\" #include \"Rectangle.h\" using namespace std; int main() { cout<<\"-------------------------------------------\"< *square = new Square(3, 3, 3); cout<<\"Area of Square:\"<area()<circumference()<getWidth()<<\",\"<getHeight()<.