Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-11-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Exclamation Polimorfismo con diferentes parámetros

Hola,
Hasta ahora había realizado mis programas en base a los componentes que se dispone en las petañas de Delphi. Ahora voy profundizando un poco en la creación de Clases. Voy estudiando ejemplos de "La Cara Oculta de Delphi" y "Ejemplos de Fontela" como novato me llegan un montón de dudas. En el Foro he buscado y he encontrado muchos ejemplos pero ninguno como la siguiente pregunta:
Código Delphi [-]
type
   TVentana = class
      private
        Ancho, Altura: TCoordenadaPantalla;
 ColorFondo : TColor;
      public
        constructor Create (An, Al: TCoordenadaPantalla; CF : TColor);
        procedure Dibujar; virtual;
end;

type
   TVentanaConTexto = class(TVentana)
      private
        ColorTexto: TColor;
        Texto: PChar;
      public
        constructor Create (An, Al: TCoordenadaPantalla; CF, CT : TColor);
        procedure Dibujar; override;
end;

type
   TVentanaConGráfico = class(TVentana)
      private
        Grafico : PGrafico;
      public
        constructor Create (An, Al: TCoordenadaPantalla; CF: TColor; G: PGrafico);
        procedure Dibujar; override;
end;

Este es un ejemplo que saqué de Fontela (lo he reducido). Lo que no entiendo es lo siguiente:

- ¿Pueden los constructor Create override declararse de esa forma? es decir si se fijan en las clases hijas se aumenta una que otra cosa (VARÍAN los Parámetros).

- ¿Cual sería la implementación para el caso de ser afirmativo mi anterior pregunta?

- La misma pregunta para el caso del procedure Dibujar, ahí creo que no hay problema con los parámetros (no tiene), pero ¿que tal si tuvieran diferentes parámetros las clases hija, no habría problema en el polimorfismo para el caso del procedure Dibujar?

Bueno, me está faltando encontrar en la Red EJEMPLOS SENCILLOS pero COMPLETOS de Polimorfismo y Herencia, para comprender.

Última edición por Deiv fecha: 23-11-2006 a las 22:53:23.
Responder Con Cita
  #2  
Antiguo 23-11-2006
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
Yo lo veo así: si los parámetros difieren, entonces ya no estamos hablando de polimorfismo. La idea del polimorfismo es que puedan usarse los métodos de un objeto de manera genérica sin necesiad de saber la clase exacta del objeto. Yo puedo poner

Persona.Saluda;

y Persona saludará según sea francés, inglés, español o árabe. ¿Cómo podrías llamar de manera genérica, polimórfica, a un método si los parámetros difieren en cada derivado?

// Saludos
Responder Con Cita
  #3  
Antiguo 23-11-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Smile

Creo que es lógico, y hay mucha razón, sobre el ejemplo que puse no se si entendí mal, pero en este momento estoy en un Ciber, para mañana traigo el ejemplo completo del que les hablé.
Entonces me gustaría saber la explicación de ese ejemplo del porqué difieren los parámetros.
De repente estoy entendiendo mal, pero como dije: hice una reducción de código solamente.
¿No conoceis donde consigo ejemplos (código) sencillos y completos sobre herencia y polimorfismo?

Última edición por Deiv fecha: 23-11-2006 a las 23:10:33.
Responder Con Cita
  #4  
Antiguo 23-11-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Acabo de leer este hilo Aqui, no estaré confundiendo con overload? eso parece, ya que ahí difiere la cantidad de parámetros en la function Suma.
Responder Con Cita
  #5  
Antiguo 23-11-2006
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
Así es, para eso sirve la directiva overload, pero ya no es polimorfismo.

// Saludos
Responder Con Cita
  #6  
Antiguo 24-11-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Deiv
¿Pueden los constructor Create override declararse de esa forma? es decir si se fijan en las clases hijas se aumenta una que otra cosa (VARÍAN los Parámetros).
Bueno, eso va contra la propia definicion del método override;
Puedes sobreescribir un método para ampliar, reducir o modificar su comportamiento, pero por definición el número de parámetros debe ser el mismo y del mismo tipo.

EDITO: Llegué tarde... Eso sí que tiene sentido (overload); En ese caso sí tiene sentido que los parámteros sean diferentes, es más, es que es justo para eso.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 24-11-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Ayer preguntaba sobre polimorfismo y tenía una confusión con Sobrecargado (overload). Adjunto un archivo ZIP, donde hice las reducciones correspondientes de las hojas originales para poderlo comprimir en este mi post.

a) Si pudieran aclararme por favor, en la Pag.1 la Procedure Inicializar, no es un método virtual como veo, entonces ¿como debo entender ese método en las clases hijas? ya que llevan diferentes parámetros y una implementación interesante.

b) La procedure Dibujar, no sé si el texto está mal transcrito por el autor, pero no veo virtual ni override en las clases hijas?

c) En el otro ejemplo, Pag.3 y Pag.5 el CONSTRUCTOR Create tiene diferentes parámetros tanto la Clase Madre como la hija, ¿esto se puede?

De repente en vuestras palabras llegue a tener una mejor explicación de lo que estoy leyendo y no voy comprendiendo algunos aspectos, les agradeceré mucho. Y mi última pregunta:

d) Cual es la forma más óptima de trabajar, utilizar Polimorfismo o Sobrecargado?
Archivos Adjuntos
Tipo de Archivo: zip POO.zip (12,5 KB, 32 visitas)
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Parametros Opcionales no Parametros por defecto Velia Varios 7 19-08-2006 15:18:42
Polimorfismo en Delphi5 liriko OOP 36 19-12-2005 18:19:18
Polimorfismo y sobrecarga davitcito Varios 3 15-04-2005 19:56:11
Novato, ayuda con polimorfismo por favor davitcito Varios 4 01-04-2005 01:32:28
Diferentes alineaciones para diferentes parrafos ciscu Servers 0 15-03-2004 10:36:12


La franja horaria es GMT +2. Ahora son las 21:59:47.


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