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 main.cpp
with:
Shape *s = &ovals[i];
s->draw();
The program should have drawn a red X, using the draw function defined in the Shape class.
To do:
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.cpp
so 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:Shape *shapes[6];
init
function, modify the code so that the ovals and rectangles are stored in the shapes array. For example:
shapes[0] = new Oval("Oval 1", 10, 10, 100, 100);
display()
and 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.protected
variables of type float
named 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 changeColor
that
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;
changeColor
to 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.handleButton
function 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.