Homework 1 - Inheritance and Polymorphism

Due: Monday September 17, 2007 at 5pm

This assignment focuses on the concepts of inheritance and polymorphism. You will be defining three classes with the following hierarchy:

                       Shape
                      /     \
                     /       \
                   Line    Circle

Shape class

The Shape class is the parent class for this exercise. It defines the general characteristics of the shapes: a set of (x,y) coordinates and a length. The Shape class should have the following:
Member variables
Integers for x, y and length
Member functions

Line class

This is a child class of the Shape class. For simplicity, this class will be just a straight line. The (x,y) coordinate is the start of the line and length indicates how long the line is.
(Note: You could implement slope by having a new member variable for this class)
Member functions

Circle class

This is a child class of the Shape class. The (x,y) coordinate is the center of the circle and length is the radius.
Member functions

Menu Program

The menu program allows you to test if your implementation of the above classes are correct. Your menu should be implemented in a fashion similar to menu_example.cpp. Your main() function must have a pointer variable of type Shape that will be used to store the current shape. Remember to delete the current shape before allocating a new one. The function to create each new shape should return a pointer to the new shape due to the way Helios handles pointers. See pointer_example.cpp for an example of this.

Your menu should be as follows:

   Welcome to the Shape Menu
  ===========================
  1.  Create a new line
  2.  Create a new circle
  3.  Print the current shape

  0.  Exit
  ===========================
Options 1 and 2 should check that the new line/circle was actually allocated and print a message if the allocation failed.

Option 3 should gracefully handle the case where 3 is selected before 1 or 2. It should print an error message about no shape existing (core dumps when 3 is selected first will be a deduction in your grade).

Submit your completed code as an attachment in an email to the instructor. If you use multiple files (seperate compilation), be sure to include all files in the attachment list.