C++ polimorfismo, limitaciones, necesito aprender a diseñar

Recién comienzo con este tema de polimorfismo y quería preguntar, en el caso que tenga una consigna como la siguiente: " hay 3 tipo de alumnos, libre (aprueba con 1 final y un TP), regular (3 parciales y prom mayor a 70); y promocional (solo 1 final mayor a 60)
Modele las clases usando polimorfismo teniendo en cuenta que puede haber máximo 30 alumnos y pueden ser una combinación de los 3.
B) Agregue alumno especial que podrá tener n parciales
C) Cree la clase administrador e imprima el listado de alumnos aprobados"

¿Cómo harían el diseño?
Lo primero que sale es Alumno general como clase base y luego las 3 derivadas.
Pero esta duda me sirge siempre cuando uso polimorfismo,
Como accedo y seteo los atribitos de las derivadas (ya que cada derivada tiene atributos diferentes en tipo y cantidad)
Como hago para setearlas, si yo voy a manejar punteros a clase alumno general y hacer new de las derivadas para
Luego manejarlos en el vector, pensé en hacer un método virtual seteo pero luego me di cuenta que tendría que pasar por parámetro la totalidad de atributos de todas las derivadas y no quedaría bien.
¿En general como se diseña cuando se tiene este tipo de problemas?

Añade tu respuesta

Haz clic para o