Pero, ¿y dónde queda el polimorfismo?
La verdad es que la pregunta es ciertamente rara, vamos, como que el profesor no pensó mucho en el ejercicio.
Pero si se trata de usar polimorfismo pues el tener una propiedad TipoPersona en la clase base que es tratada mediante un
case es más bien antipolimórfico (si vale el témino) y hace innecesarias las clases descendientes.
Si el objetivo es el polimorfismo creo que haría algo así:
Código Delphi
[-]
TPersona = class
public
procedure Buscar(Nombre: String); virtual; abstract;
end;
THombre = class(TPersona)
public
procedure Buscar(Nombre: String); override;
end;
TMujer = class(TPersona)
public
procedure Buscar(Nombre: String); override;
end;
TNiño = class(TPersona)
public
procedure Buscar(Nombre: String); override;
end;
Cada clase descendiente implementa el método Buscar consultando la tabla apropiada.
¿En dónde entra el polimorfismo? Pues si tienes un objeto Persona, sin importar is es THombre, TMujer o TNiño, su método Buscar te dará la edad y demás datos correspondientes. Es decir, en la llamada
Persona.Buscar
el polimorfismo es el que se encarga de buscar en la tabla apropiada en lugar de una sentencia
case .
// Saludos