Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-08-2008
gushynet gushynet is offline
Miembro
 
Registrado: ago 2008
Posts: 26
Poder: 0
gushynet Va por buen camino
explicacion mas detallada del problema

antes que nada, gracias por la rapidez de las respuestas. De todas formas pondré el pequeño ejemplo que estoy intentando hacer y de ahi la duda que es puesto en el foro.

Creo que lo de generico lo explique mal. Generico en relacion a una jerarquia de clases, jerarquia que explico a continuacion:

Tengo una clase base llamada TParrafo la cual tiene todos los métodos abstractos y virtuales. Entre las propiedades que tiene hay una llamada "contenido" que es de tipo AnsiString.

Tengo ademas tres clases (TPregunta,TRespuesta y TTematica) que descienden de TParrafo.

TTematica añade una propiedad AnsiString mas llamada "descripcion".


Todas las clases descritas tienen un metodo llamado asignar( declarado como virtual y abstracta en TParrafo ) al cual se le pasa un objeto de tipo parrafo y el metodo asigna el valor de todas las propiedades (en este caso solo una o dos si es de tipo TTematica) del parametro de entrada al objeto actual, el que realiza la llamada al metodo.


mi intencion es que si el objeto que llama a asignar es:
- TParrafo,TPregunta o TRespuesta compartan el mismo codigo ya que los
objetos son iguales, por lo solo se debe cambiar el valor de la propiedad 'contenido'
-Y que en Ttematica cambie la implementacion del metodo para tener en cuenta la propiedad 'descripcion' .

El problema lo encuentro al ser el parametro del metodo de tipo TParrafo. Solo acepta cosas de tipo TParrafo por lo que use un pointer para que asi aceptara cualquier tipo de objeto y dentro de la implementacion especifica del metodo realizar un cast al tipo del objeto que ha llamado al metodo. Por ejemplo:

si tengo un objeto t1 de tipo TTematica y uso su metodo asignar tenemos:

T1.Asignar(T2);

al ser T2 de tipo TTematica se produce un error. Lo mismo pasa si le paso algo de tipo TPregunta o Trespuesta aunque sean iguales a TParrafo, por ser de distinto tipo se produce un error de compilacion. De ahi el usar un pointer y dentro del metodo realizo una conversion.

En definitiva, lo que quiero es usar bien la poo pero no se como montarmelo para hace eso:

una sola implemetacion que sirva para TParrafo,TPregunta y TRespuesta y una reimplementacion en TTematica ya que la clase tiene una propiedad mas, 'descripcion' , sin que el tipo de dato (dentro de la jerarquia creada) que paso por parametro sea un problema.

Espero haberme explicado mejor, pero entre que quiero escribirlo todo y que intento resumir para que no se haga muy grande el mensaje no se si ahora se entendera mejor.

Gracias de antemano por el cable .
Un saludo.
Responder Con Cita
  #2  
Antiguo 28-08-2008
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 creo que hay algo confuso aquí. Según describes, tienes estas clases:

Código Delphi [-]
type
  TParrafo = class
    ...
    procedure Asignar(P: TParrafo); virtual; abstract;
  end;

  TPregunta = class(TParrafo)
    ...
    procedure Asignar(P: TParrafo); override;
  end;

  TRespuesta = class(TParrafo)
    ...
    procedure Asignar(P: TParrafo); override;
  end;

  TTematica = class(TParrafo)
    ...
    procedure Asignar(P: TParrafo); override;
  end;

En este caso, el método Asignar acepta cualquier objeto de tipo TParrafo y cualquier descendiente de TParrafo. No debe haber ningún error de compilación.

// Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Apuntar a un tipo genérico Guillermo80 Varios 4 09-03-2008 11:48:22
Reutilizar código "generico" adlfv OOP 13 06-09-2005 02:01:04
Ayuda, como llamar a un procedimiento desde otro procedimiento? Ariatna Varios 1 01-02-2005 04:05:35
reporte generico piyugo Impresión 8 07-05-2004 18:20:03
Configuar Generico/solo texto en Win 2000 sperezp Impresión 0 13-01-2004 15:13:43


La franja horaria es GMT +2. Ahora son las 04:23:59.


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