The purpose of this lab is to give you practice with virtual functions and polymorphism.
Start with a completed Lab 11. At the end of this lab you had modified
Shape *s = &ovals[i];
The program should have drawn a red X, using the draw function defined in the Shape class.
draw()function virtual in the Shape class. Re-run the program. It should now draw the shapes instead of the red X, because with virtual functions, the function invoked is the one associated with the object when it was created.
main.cppso that instead of two arrays of size 3 of type Oval and Rectangle, there is a single array of size 6 of pointers to Shape objects. The definition will look like this:
initfunction, modify the code so that the ovals and rectangles are stored in the shapes array. For example:
shapes = new Oval("Oval 1", 10, 10, 100, 100);
handleButton()functions so they loop over the shapes array instead of the old arrays for ovals and rectangles. When this step is done the program should run like the final version from Lab 11 except you are now using a single array of Shapes.
protectedvariables of type
floatnamed r,g, and b to the Shape class. These variables will store a value between 0-1 to hold a color in RGB format. Add a new public function named
changeColorthat sets r, g, and b to random values between 0 and 1. You can get a random float between 0 and 1 with the code:
r = (float)rand() / RAND_MAX;
changeColorto initialize the color to a random value. Finally, update the
draw()function in Oval and Rectangle to use the r,g,b variables when setting the color.
handleButtonfunction in main so that when the shape is clicked, that shape's color is changed to a new random color and redrawn. Nothing should happen when the mouse button is released.
Show your working code / answers to the instructor or lab assistant for credit, or email your solution by midnight.