Module 15: Final Project and Reflection - Requires Respondus LockDown Browser + Webcam
- Due Dec 14 at 11:59pm
- Points 100
- Questions 5
- Available Dec 8 at 9am - Dec 17 at 11:59pm
- Time Limit 30 Minutes
- Allowed Attempts 2
- Requires Respondus LockDown Browser
Instructions
Nice work so far! This is your final project for the course.
As always, you will complete all coding, testing, and debugging inside OnlineGDB. This assignment is worth 80 points and requires you to write your own code—no copy/paste from external resources or AI tools. Be sure to include inline comments throughout your work to explain your logic and design decisions. Follow the detailed instructions provided in the OnlineGDB starter file.
After submitting your completed project, return to Canvas to take the Final Project Reflection Quiz. You will answer four short questions (20 points) in your own words, explaining your implementation choices and what you learned during the development process. You have 2 attempts for this part.
In this final project, you will design a small Zoo Simulator in C++ that demonstrates your understanding of inheritance, polymorphism, virtual functions, constructors/destructors, dynamic memory, and a custom linked list. You will create a base Animal class, derive at least two specialized animals, and store them inside a linked data structure. The simulator will use polymorphism to call virtual functions on the dynamically created animal objects.
A complete testing main() function is already provided. Your job is to complete the TODO sections in the template, implement all required classes, and ensure your Zoo Simulator runs correctly. You may add extra features, methods, or additional animal types—creativity is encouraged as long as the requirements are met.
Core Requirements (All Must Be Implemented)
Your final submission must include:
1. Class Design
-
A base class
Animal-
Must include: constructor, virtual destructor, at least two virtual methods (e.g.,
makeSound(),printInfo()).
-
-
At least TWO derived classes (e.g.,
Lion,Elephant,Bird, etc.)- Each must override all virtual methods.
- Each must include at least one unique attribute.
2. Custom Linked List of Animals
-
A simple Node struct storing:
Animal* dataNode* next
-
A LinkedList class that supports:
add(Animal*)printAll()(polymorphic output)makeAllSounds()(calls virtual functions)- A proper destructor freeing memory.
3. Polymorphism & Dynamic Allocation
- All animals must be created with
new. - All interactions must use base-class pointers.
- Linked list destructor must prevent memory leaks.
4. Allowed Flexibility
You may:
- Add more animals
- Add more member functions
- Add additional behaviors
- Add helper functions or attributes
As long as core requirements stay intact, creativity is welcome.