Description
Task A: Gotta Catch Em’ All
Define and implement the Skill and Profemon class with a header and a source file (From now on, when you implement a class, assume you will implement two files: .hpp and .cpp).
The Skill class must have the following information stored in their private member variables:
The Skill class must have the following in it’s public access modifier:
The header file of the Profemon class must have an enumeration type called “Specialty” with three possible values: ML, SOFTWARE, and HARDWARE in this exact order. The enum should be defined outside the class.
The Profemon class must have the following information stored in their private member variables:
The Profemon class must have the following in it’s public access modifier:
You will submit the following files to gradescope:
profemon.hpp, profemon.cpp, skill.hpp, skill.cpp
Here is a sample main file. Make sure to add your own code to test all functions.
Compile your code locally using:
g++ skill.cpp profemon.cpp main.cpp
Task B: Profémon Trainers
In the world of Profémon, trainers are always busy training their beloved profémons for the battles to come. They are looking to challenge departments to a profémon battle and gain a degree. Departments are trainers who specialize in a single type of profémon. Since we have a working profémon class, it’s time to implement the Trainer class and some department classes which will inherit from the Trainer class.
Each trainer has a team of three profémons and a profédex. The profédex serves as a storage for all the profémons collected by the trainer. Each trainer also has a profémon which they choose to accompany them on their adventures!
Since the Department classes will inherit from the Trainer, the Trainer class should have the following protected data members:
The Trainer class must have the following in it’s public access modifier:
Since you’ve been working so hard on this project, we will gift you the header file for the departments!
Use a single .cpp file to implement all the department classes’ functions and constructors. For each of the derived classes, you need to change the implementation of the constructors and the addProfemon() function so that only the profémons of that particular specialty is added. For example: the MLDepartment can only have profémons of ML specialty. For the parameterized constructor, the given parameter vector can have profémons of all specialties. Add only the specialty that the Department specializes in. You can assume that the parameter vector will have atleast one profémon of correct specialty.
Submit the following files to gradescope:
profemon.hpp, profemon.cpp, skill.hpp, skill.cpp, trainer.hpp, trainer.cpp, department.hpp, department.cpp
Modify the main file from Task A to test your classes.
Compile your code locally using:
g++ skill.cpp profemon.cpp trainer.cpp department.cpp main.cpp





