Ver Mensaje Individual
  #4  
Antiguo 31-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita