problem 1) Background
Encapsulation and inheritance are two major concepts of object oriented programming, which are tested in this assessment.
1. Bundling of data and functions together
2. Access restrictions to certain components as defined by the programmer.
Hence when you prepare a class, you place data variables (like double, int, string) at the same place as you would place functions (including the constructor too – as constructors are special types of functions that are called when the object of the class is created).
Also you define public: protected: and private: “areas”, all of which have different access restrictions. Public members can be accessed from main(), which is interpreted or seen as the “outside world”. Private members can only be accessed by class itself, i.e., only the functions of that class might access the members. Codes from main() cannot access private members of a class.
Protected members might only be accessed by the class itself, and also its child classes (through inheritance). No one else in main() can access them.
Inheritance is demonstrated through several related classes. The parent class is a more GENERAL version of a child class. This means, the child class is a more SPECIFIC version of the parent class. Always check the validity of a child class by using the “… is a …” test.
You are assessed on:
1) understanding of encapsulation in the design of your classes;
2) understanding of inheritance;
3) writing useful comments
You require to prepare a main.cpp, appropriate .h (header files) and .cpp (source files), rather than writing all classes in the same file as main.cpp.
prepare the following five classes:
Animal, Dog, Cat, PetDog, StrayDog.
These are the properties of the above classes:
• They all have a name and an age each.
• They all can speak: the Dog barks and the Cat meows. (i.e., prepare a function called speak)
• However, the StrayDog’s speak function overrides the speak function of Dog, and it should say “woof woof”.
• The PetDog performs an action: “fetch a stick”; while the StrayDog performs another action: “chase cars”.
The speak and action functions simply display the words on the console.
Show encapsulation by writing appropriate functions (including constructors) and data members for the above classes.
For ex, you should inherit protected from the parent class, and then inherit private from the child class (to the grandchild).
In your main() program,
i. declare an array of seven animal pointers;
ii. instantiate (create) at least one objects from each of the five classes;
iii. point the animal array to the objects
iv. using a suitable loop, loop through all animal references (pointers) and
a. call the speak function of each animal; (genius task:)
b. call the action function, if the animal is a petdog or a straydog.