Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-03-2005
Avatar de davitcito
davitcito davitcito is offline
Miembro
 
Registrado: mar 2005
Posts: 28
Poder: 0
davitcito Va por buen camino
Novato, ayuda con polimorfismo por favor

Hola, es mi primer mensaje en este foro, lei hace poco que habia un articulo referente al poliformismo que se llamaba "Historias Polimórficas" de JMR, pero no logro encontrarlo en la sección articulos. Si me pudieran decir donde ubicarlo se los agradecería mucho.
Por otro lado, tengo una problema acerca de este tema, es mas bien un trabajo q me han dejado pero no le encuentro la lógica. El enunciado es el siguiente:
Se desea almacenar la información de personas en tres tablas (mujeres, hombres y niños) conteniendo los nombres y edades.

Para cada par (Nombre, tipo) verificar en la tabla correspondiente si el nombre existe o no, de tal manera a recuperar su edad.

Considere que el tipo indica si es hombre, mujer o niño.

Sugerencia: use una jerarquía que agrupe las clases Hombre, Mujeres y Niños en una clase base.

Se supone que las tres tablas que haria cada una sería para hombres, mujeres y niños y a su vez cada una tendría 2 campos (nombre y edad)
Pero lo que no entiendo bien es a que se refiere cuando dice CADA PAR ? Si alguien me pudiera ayudar se lo agradecería mucho, y disculpen si es que es muy tonta la pregunta, pero en verdad la necesito. Saludos.
Responder Con Cita
  #2  
Antiguo 31-03-2005
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.912
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Hacer tres tablas es una perdida de esfuerzo. No hay datos diferenciadores entre Hombre, Mujer, Niño y lo unico que divide es el tipo de persona. Asi que con 1 sola tabla sale derecho pa' pintura.

La pregunta es un poco extraña... El par es el nombre y el tipo, pero entonces se asume que es posible que existan dos personas del mismo nombre pero no dos personas con el mismo nombre y tipo?... En fin...

La Jerarquia es muy simple:

TPersona
THombre
TMujer
TNiño

y TPersona.TipoPersona = Tipo junto a un (TPersona.ObtenerPersona as Tipo) haria el trabajo, junto a un CASE dentro de ObtenerPersona..
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 31-03-2005
Avatar de davitcito
davitcito davitcito is offline
Miembro
 
Registrado: mar 2005
Posts: 28
Poder: 0
davitcito Va por buen camino
hey gracias por el dato mamcx.
Responder Con Cita
  #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
Poder: 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
  #5  
Antiguo 01-04-2005
Avatar de davitcito
davitcito davitcito is offline
Miembro
 
Registrado: mar 2005
Posts: 28
Poder: 0
davitcito Va por buen camino
pues ciertamante, la pregunta es bastante rara, como q no se entiende, oye pero gracias, he estado rompiendome la cabeza de como meterle el polimorfismo al problema, pero justo has dado en el clavo, usando la anulacion puedo usar metodo del padre para los hijos. Voy a seguir avanzando y en caso tenga dudas voy a seguir posteando, desde ya muchas gracias por vuestra colabaracion.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 22:56:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi