Create a base class called Animal. All animals have a name (i.e. “Fido," “Thumper," "Princess," "Nemo," etc.) and an age. Provide a default constructor that initializes the age to zero and outputs the message "Invoking the default Animal constructor" and another constructor that allows the name and age to be set by the client. This other constructor should also output the message "Invoking the 2-argument Animal constructor." Also construct a destructor for this class that outputs the message "Invoking the default Animal destructor." Your Animal class should have a function called Move that cannot be implemented. That is, it should be declared as a purely virtual function. Your class should also have Get and Set methods to allow the name and age to be accessed. . From the Animal class, derive Dog, Rabbit, Fish, and Snake classes. The derived classes should each have constructors and destructors that output an appropriate message (e.g., the Dog constructor outputs "Invoking Dog constructor," and the Dog destructor outputs "Invoking Dog destructor"). The constructor of each derived class should allow the name and age of the Animal to be set (think member initialization list). The derived classes should each have a member function called Move that overrides the Animal Move version. Dog Move should output "I run," Rabbit Move should output "I hop," Fish Move should output "I swim," and Snake Move should output "I slither." . Write a main function that uses the Animal and derived classes as needed to do the following. You must perform the actions below in the sequence described (i.e., do not take a shortcut around using dynamic memory allocation/deallocation and virtual methods since they are the whole point of the lab). a. Use the rand() function to generate a random age between 1 and 20 Your program should use a seed value of 100 and set the seed only once. Each animal should have its own randomly generated age. (i.e. Don't generate one age and use it for all of the animals.) b. Prompt the user to make an animal selection [e.g. (1) for dog, (2) for rabbit, (3) for fish, and (4) for snake] and to enter a name for the animal. Dynamically create a Dog, Rabbit, Fish, or Snake object (depending on what the user entered) and initialize it with a constructor to which is passed its name and age. Save the object (use an array). c. Repeat steps a. and b. 4 more times. You do not know what animals the user will select or in what order, so you must figure out how to create and store the appropriate objects. d. After the user has entered all 5 selections, execute another loop that cycles through the 5 selections and invokes the Move function and also displays the name and age of the animal. If you have done it properly, each of your outputs will correspond to the type of Animal the user selected in the order he or she years. entered them.

C++ Programming: From Problem Analysis to Program Design
8th Edition
ISBN:9781337102087
Author:D. S. Malik
Publisher:D. S. Malik
Chapter10: Classes And Data Abstraction
Section: Chapter Questions
Problem 6SA
icon
Related questions
Question

Can someone help me with this c++ code?

Criteria:

 

Program executes without crashing

Appropriate Internal Documentation

Base Animal Class:

     Correct Private Data Members

     Constructors function appropriately (correct number of
     constructors, number of  arguments, output of messages, etc.)

      Correct get and set functions

Derived Dog, Rabbit, Fish, and Snake classes

     Correct Private Data Members

     Constructors/destructors function appropriately (correct number of constructors, number of  arguments, output of messages, etc.)

      Correct get and set functions

 

Move function implementation

Dynamic allocation of animals

Random generation of ages and correct seed value

Output contains appropriate information

Array used to store 5 animals correctly

Memory is deallocated appropriately

 

1. Create a base class called Animal. All animals have a name (i.e. “Fido," “Thumper,"
"Princess," "Nemo," etc.) and an age. Provide a default constructor that initializes the age
to zero and outputs the message "Invoking the default Animal constructor" and another
constructor that allows the name and age to be set by the client. This other constructor
should also output the message Invoking the 2-argument Animal constructor." Also
construct a destructor for this class that outputs the message "Invoking the default
Animal destructor." Your Animal class should have a function called Move that cannot
be implemented. That is, it should be declared as a purely virtual function. Your class
should also have Get and Set methods to allow the name and age to be accessed.
2. From the Animal class, derive Dog, Rabbit, Fish, and Snake classes. The derived classes
should each have constructors and destructors that output an appropriate message (e.g.,
the Dog constructor outputs "Invoking Dog constructor," and the Dog destructor outputs
"Invoking Dog destructor"). The constructor of each derived class should allow the name
and age of the Animal to be set (think member initialization list). The derived classes
should each have a member function called Move that overrides the Animal Move
version. Dog Move should output "I run," Rabbit Move should output "I hop," Fish Move
should output "I swim," and Snake Move should output "I slither."
3. Write a main function that uses the Animal and derived classes as needed to do the
following. You must perform the actions below in the sequence described (i.e., do not
take a shortcut around using dynamic memory allocation/deallocation and virtual
methods since they are the whole point of the lab).
a. Use the rand() function to generate a random age between 1 and 20
Your program should use a seed value of 100 and set the seed only once. Each
animal should have its own randomly generated age. (i.e. Don't generate one
age and use it for all of the animals.)
b. Prompt the user to make an animal selection [e.g. (1) for dog, (2) for rabbit,
(3) for fish, and (4) for snake] and to enter a name for the animal.
Dynamically create a Dog, Rabbit, Fish, or Snake object (depending on what
the user entered) and initialize it with a constructor to which is passed its
name and age. Save the object (use an array).
c. Repeat steps a. and b. 4 more times. You do not know what animals the user
will select or in what order, so you must figure out how to create and store the
appropriate objects.
d. After the user has entered all 5 selections, execute another loop that cycles
through the 5 selections and invokes the Move function and also displays the
name and age of the animal. If you have done it properly, each of your outputs
will correspond to the type of Animal the user selected in the order he or she
years.
entered them.
Transcribed Image Text:1. Create a base class called Animal. All animals have a name (i.e. “Fido," “Thumper," "Princess," "Nemo," etc.) and an age. Provide a default constructor that initializes the age to zero and outputs the message "Invoking the default Animal constructor" and another constructor that allows the name and age to be set by the client. This other constructor should also output the message Invoking the 2-argument Animal constructor." Also construct a destructor for this class that outputs the message "Invoking the default Animal destructor." Your Animal class should have a function called Move that cannot be implemented. That is, it should be declared as a purely virtual function. Your class should also have Get and Set methods to allow the name and age to be accessed. 2. From the Animal class, derive Dog, Rabbit, Fish, and Snake classes. The derived classes should each have constructors and destructors that output an appropriate message (e.g., the Dog constructor outputs "Invoking Dog constructor," and the Dog destructor outputs "Invoking Dog destructor"). The constructor of each derived class should allow the name and age of the Animal to be set (think member initialization list). The derived classes should each have a member function called Move that overrides the Animal Move version. Dog Move should output "I run," Rabbit Move should output "I hop," Fish Move should output "I swim," and Snake Move should output "I slither." 3. Write a main function that uses the Animal and derived classes as needed to do the following. You must perform the actions below in the sequence described (i.e., do not take a shortcut around using dynamic memory allocation/deallocation and virtual methods since they are the whole point of the lab). a. Use the rand() function to generate a random age between 1 and 20 Your program should use a seed value of 100 and set the seed only once. Each animal should have its own randomly generated age. (i.e. Don't generate one age and use it for all of the animals.) b. Prompt the user to make an animal selection [e.g. (1) for dog, (2) for rabbit, (3) for fish, and (4) for snake] and to enter a name for the animal. Dynamically create a Dog, Rabbit, Fish, or Snake object (depending on what the user entered) and initialize it with a constructor to which is passed its name and age. Save the object (use an array). c. Repeat steps a. and b. 4 more times. You do not know what animals the user will select or in what order, so you must figure out how to create and store the appropriate objects. d. After the user has entered all 5 selections, execute another loop that cycles through the 5 selections and invokes the Move function and also displays the name and age of the animal. If you have done it properly, each of your outputs will correspond to the type of Animal the user selected in the order he or she years. entered them.
Your input screen should look something like this:
Main Menu
1 - Dog
2 - Rabbit
3 - Fish
4 - Snake
Enter selection:
As each animal is selected, you should see messages like the following:
Invoking Animal 2-argument constructor
Invoking Dog 2-argument constructor
Your final output screen shout look something like this:
My name is Buttercup, and I am 6 years old.
I run.
My name is Hoppy, and I am 17 years old.
I hop.
My name is Nemo, and I am 16 years old.
I swim.
My name is Snakey, and I am 5 years old.
I slither.
My name is Princess, and I am 5 years old.
I run.
Invoking the Dog destructor
Invoking the Animal destructor
Invoking the Rabbit destructor
Invoking the Animal destructor
Invoking the Fish destructor
Invoking the Animal destructor
Invoking the Snake destructor
Invoking the Animal destructor
Invoking the Dog destructor
Invoking the Animal destructor
Press any key to continue . . .
Transcribed Image Text:Your input screen should look something like this: Main Menu 1 - Dog 2 - Rabbit 3 - Fish 4 - Snake Enter selection: As each animal is selected, you should see messages like the following: Invoking Animal 2-argument constructor Invoking Dog 2-argument constructor Your final output screen shout look something like this: My name is Buttercup, and I am 6 years old. I run. My name is Hoppy, and I am 17 years old. I hop. My name is Nemo, and I am 16 years old. I swim. My name is Snakey, and I am 5 years old. I slither. My name is Princess, and I am 5 years old. I run. Invoking the Dog destructor Invoking the Animal destructor Invoking the Rabbit destructor Invoking the Animal destructor Invoking the Fish destructor Invoking the Animal destructor Invoking the Snake destructor Invoking the Animal destructor Invoking the Dog destructor Invoking the Animal destructor Press any key to continue . . .
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps with 2 images

Blurred answer
Knowledge Booster
Reference Types in Function
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning