Suppose I am designing a personnel database for a university. The university has three types of personnel: students, staff, and faculty. Here are the characteristics of the three groups:
-All three groups have a name and a social security number, both of which are strings, and a gender field, which is a char.
-Students have a floating p csoint field for gpa and an integer field for year (e.g., 1 for freshman, 2 for sophomore, etc).
-Staff and faculty have a string field for position and a double field for salary.
-Staff have an additional integer field for accrued vacation leave.
-Faculty have an additional rank field indicating their job title (e.g., professor, associate professor, lecturer)
Answer the following questions:
1-Design and draw a class hierarchy for the above objects, based on the given properties. In your class hierarchy place variable names next to each class where you declare them.
2-Which of the above classes should be abstract classes?
3-Should the getter and setter methods for the properties be declared as virtual or non-virtual? Why?