Introduction
:
#ifndef TREASURECHEST_H
#define TREASURECHEST
enum coin{gold=25,silver=10,copper=1,nada=0};
class treasureChest: public boxType
{
private:
coin Coins[100];
int NumCoins;
public:
//Constructor with parameters
//Postcondition: length = l; width = w; height = h; boxColor=c;
//The color of the treasureChest is restricted to black or brown
treasureChest(double l, double w, double h, color c);
//Function to return the nuber of coins.
//Postcondition: The value of NumCoins is returned.
int getNumCoins();
//Function to return the total value of all the coins in the chest
//Postcondition: The sum of Coins is returned.
int getSum();
//Function to added a coin to the chest
void addCoin(coin _coin);
//Function to remove a coin from the chest
void removeCoin(coin _coin);
//Function to set the boxColor
//of the box.
//Postcondition: boxColor = _color;
//The color of the treasureChest is restricted to black or brown
void setBoxColor(color _color);
};
#endif // TREASURECHEST_H
,
Requirement
CSC 2431 Assignment 2
Due: Monday 4/24/17 by 5:00pm
Recommended Textbook Exercises
The following textbook exercises are suggested to reinforce the concept of inheritance:
Ch. 11: #12, 14 and Ch. 12: #34, 36
Programming Assignment
Consider the rectangleType and boxType classes we developed using Malik’s definitions from the
text. For this assignment, you will create a new derived class treasureChest from boxType. Start
with the baseline code on Canvas for rectangleType and boxType, and add the following to
boxType:
• Create an enumerated type for color – valid colors are green (green = 0), black (black = 1),
brown (brown = 2), and white (white = 3). (Note: you can choose other, appropriate values
for your colors.)
• Add a boxColor as a private member variable to boxType along with a setBoxColor
mutator and getBoxColor accessor.
• Modify the parameterized constructor for boxType to take a parameter to set boxColor.
The default constructor should set boxColor to green.
Next, derive treasureChest from boxType using public inheritance. treasureChest has the
following properties:
• Note: this description is deliberately not a UML class diagram or similar. You should sketch
an outline in pseudocode for your new class as you read these descriptions (and the client)
to ensure you meet all the requirements. (You don’t have to turn your sketch in.)
• A treasureChest can store treasure! Treasure in this case will be represented by a
static array of 100 coins. Use an enumerated type to represent a coin, with the
following three types and values:
gold (value 25)
silver (value 10)
copper (value 1)
nada (value 0)
• A treasureChest has a current total number of coins that are stored. Keep track of
this with a private member variable of appropriate type. The default is 0, i.e., the chest can
hold 100 coins but starts empty (all elements in array are set to “nada”).
o Create an appropriate accessor to return the total number of coins currently in the
chest.
• Treasure can be added to the chest via a class method that takes a coin denomination and
places it in the next available slot in the array of coins (i.e., the next slot with “nada”).
• Treasure can be removed from the chest one piece at a time with a method that takes a
coin as input parameter and removes one coin of that type from the array (if any of that
type are present).
• The color of the treasureChest is restricted to black or brown:
o The treasureChest constructors should set boxColor appropriately (recall the
default box color is green).
• Add a method called getSum to return the total value of all the coins in the chest.
Note: you will test your solution with an unmodified copy of the client supplied on Canvas.
What to turn in:
1. Your header (.h) and source (.cpp) files for rectangleType, boxType and
treasureChest.
a. You may modify rectangleType and boxType as needed. But you must keep the
private members as private.
2. A copy of the client (it should be unmodified, but this makes it easier to test your code).
3. Your output after running the test code in the provided, unmodified client.
4. All documents should be uploaded to Canvas following the assignment submission instructions
(linked on Canvas).