Question: C++ QUESTION PLEASE ANSWER ASAP Question [100 Marks A school is currently running a mentoring programme for its students. The students are divided into two




Question [100 Marks A school is currently running a mentoring programme for its students. The students are divided into two groups, mentors and mentees. Mentors are more knowledgeable students and offer helps to mentees. They are chosen from those students with good CPAs. The programme offers two types of mentoring: Coaching-based mentoring: mentors will coach their mentees in particular areas, e.g., "CH+ programming", "Game Programming", etc. Therefore, a mentor must be expert in that area. Support-based mentoring: mentors offer their supports to the mentees without having to meet face to face. Thus, the mentor need to provide their phone numbers. Further, each mentee is assigned with only one mentor. Mentee's progress are kept track based on their levels, i.e. from level 1 to 5 where 5 indicates a mastery level. Given a class diagram that models the above problem in Figure 1 and the details about the class diagram in Table 2. Answer the questions 1 to 3 below. Note: As for questions 1 and 2, write your answers on papers, and for question 3, write your program using any C++ IDE such as DevCpp. Use the codebase program provided, main.cpp. 2. The problem given above involves several OOP concepts including inheritance and polymorphism. a. Explain TWO (2) main roles of the inheritance concept in the above problem. Indicate in which part of the class diagram these roles take place. (16 marks) b. Explain how the concept of polymorphism plays its role in the above problem. (10 marks) c. Identify TWO (2) methods that will be specified as polymorphic. Justify your answer. Finaly, explain how you are going to make these methods polymorphic. (12 marks) Student name Abbreviations: n: name level m: mentor expertise p: phone SEO Studenten) getName setName() printo Mentee Mentor level Mentee (n.) Mentorin, c) printo assignMentor(m) removeMentor) getMentorName print() Coach Support expertise phone Supportin.cp) Coach(n, c.e) print() print) Figure 1: Class diagram Table 2: Description of the members of each class. Description Class Members class Student name Student () getName() and setName() Student's name. A constructor Accessor and mutator to the attribute. print() prints the student's information class Mentee level The class attribute indicating the level of progress for each mentee. There are five levels, from 1 to 5, where level 5 indicates mastery level. Mentee () assignMentor() removeMentor() getMentorName() A constructor assigns a mentor to mentee. unassigns or removes the mentor from a mentee. returns the mentor's name of the mentee. However, if the mentee has not been assigned with any mentor, this method will return an empty string prints the mentee's information including: name and level, mentor's details depending the type of the mentor, i.e. either a coach mentor or a support mentor. However, if the mentee has not been assigned with any mentor, a message "No mentor yet" will be printed instead. print) Mentor's epa. class Mentor Mentor() print) A constructor prints the mentor's information class Coach expertise The mentor's area of expertise that he or she can be coaching, e.g., "C++ Programming", "Game Programming, etc. A constructor Coach() print) prints the coach-based mentor's information including name, cpa and expertise. 5 class Support phone Support) print() The mentor's phone number. A constructor. prints the support-based mentor's information including name, cpa and phone
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
