CS 14 - Lab 4
CS 14
Homepage
Class Inheritance and Operator Overloading
In this lab you will get some programming experience with class inheritance
and operator overloading. You will have 3 seperate classes that together
will define a cylinder and its location. The cylinder is made
up of its height (Cylinder class), area of a 2D splice of the cylinder
(Circle class), and xy point locations (Point class). You will have
to make good judgements on what functions/variables should be
public or private and what kind of inheritance to use. (Remember to use
good encapsulation)
Pre-lab Preperation
Read chapter 8. Come to lecture!! Bring your lecture notes and book to lab.
ABSOLUTELY THE MOST IMPORTANT POINT....
It is extremely important that you get this lab working. The next lab
will build upon this lab and I will not be giving you a solution for this
lab. You will need to use the code that you write this week for the
next lab. This means that if you get the code completely done in lab, you
need to make sure both partners have a working copy of the code. If you
do not get the code completed in lab, you must complete it outside of
lab before your next lab session.
The Lab
Write a class called Point. It will contain two data members of type double
to hold the x and y coordinates of the point. It should also contain the
following function members:
- The constructor will take two double parameters that are used to
initialize the x and y cooridinates
- A function called resetValues that takes two parameters and sets the x
and y coordinates
- A function called getX that returns the value of the x coordinate.
- A function called getY that returns the value of the y coordinate.
- Overload the insertion (<<) operator so that it can print out a point
class (the x and y coordinates).
Now write a class called Circle. It will inherit the class Point and have
one double data member for the radius. The following member functions should
also be written.
- The constructor will take three double parameters. One of those will be
the radius of the circle and the other two are used to initialize the
x and y coordinates representing the center of the circle.
- A function called resetRadius that takes one parameter and sets the
radius
- A function called getRadius that returns the radius of the circle.
- A function called getArea that calculates and returns the area of a
circle (PI * r^2). You will use PI = 3.14159265.
- Overload the insertion (<<) operator so that it can print out a circle
class (the x and y coordinates and the radius).
Lastly, write a class called Cylinder. This class will inherit the class
Circle. It will have a data member of type double to hold the height. It
will also contain the following member functions.
- The constructor should take four double parameters. One will represent
the height of the cylinder and the other three will represent the radius,
x, and y coordinates and should be passed on to the circle constructor.
- A function called resetHeight that takes one parameter and sets the
height.
- A function called getHeight that returns the height of the cylinder
- A function called getVolume that calculates and returns the volume of the
cylinder (circleArea * height)
- Overload the insertion (<<) operator so that it can print out a cylinder
class (the x and y coordinates, the radius, and the height).
You will use main.cc to demo your program.
Point Breakdown - In Lab Demo
For this assignment, you will demo your program in lab. Please show the output
from main.cc to the TA. Remember, you can get partial
credit for showing that you have some of the correct results.
The TA will also
look at your code for correctness when checking out. Remember, to
receive credit for this lab, you MUST turn the code in online as well
as demo in lab, however, you will only receive points for what you demo
to the TA during lab section. If you do not turn in your code online,
you will lose points for your lab. All code must be turned in online for
archival purposes. Remember to put both partners names on the code that you
turn in.
Remeber to compile your code using the flags "-g -Wall -W -Werror -pedantic". You
must have a makefile for this lab.
- 2 points - Attendance - Lab attendance will be 20% of the grade for each
lab. You will receive 1 point when the lab begins and 1 point when the lab
ends. Attendance will be taken during the first and last 5 minutes of the
lab period
- 6 points - .5 points for each test case passed for tests 1 to 12
- 2 points - operator overloading output. (Must implement operator
overloading correctly to get these points, the TAs will check your code)
- Deductions:
- -1 point - not logically seperating your code into seperate files
- -1 point - not using protections correctly (i.e. just making everything
public)
- -1 point - not using a makefile