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 31-01-2006
seba_cipo seba_cipo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Argentina
Posts: 35
Poder: 0
seba_cipo Va por buen camino
Como ocultar metodos

buenas a todos!
estoy empezando a trabajar con el tema de la POO y tengo un problema q no se como resolver:

TClase1=class(TObject)
private
public
procedure Hola;
end;


TClase5=class(TClase1)
private
public
procedure Chau;
end;

bien, la pregunta es si la Tclase5 hereda de TClase1, cuando haga

var:=tclase5.create;
var.chau; // este permitido
var.hola //NO este visible aunque este declarado en public

es decir ocultar algunos metodos de clases superiores ,, pero solo los q yo quiera..
la verdad no se si es posible,,
desde ya muchas gracias
Responder Con Cita
  #2  
Antiguo 31-01-2006
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
Si las clases son tuyas y necesitas acceder a los métodos de las clases padre en la implementación de las clases hijas, entonces, pon dichos métodos en la sección protected (sólo podrán acceder clases hijas pero nunca fuera de la misma clase). Ahora, si las clases son de terceros y no tuvieras el código fuente, entonces, nada se podrá hacer (no se pueden ocultar métodos public, al igual que tampoco se pueden ocultar propiedades published)

Saludos!
Responder Con Cita
  #3  
Antiguo 31-01-2006
piccolo2101 piccolo2101 is offline
Miembro
 
Registrado: oct 2005
Posts: 63
Poder: 19
piccolo2101 Va por buen camino
Hola,
yo diría que no es posible por la propia idiosicracia de la POO.

PD: Vaya escribí la repuesta al tiempo que jmariano.

Un saludo.
Responder Con Cita
  #4  
Antiguo 31-01-2006
seba_cipo seba_cipo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Argentina
Posts: 35
Poder: 0
seba_cipo Va por buen camino
en realidad lo q quiero hacer es ocultar algun metodo de la clase (Tlist)
quiero ocultar el metodo add de Tlist ya q en mi clase lo voy a utilizar con algunas modificaciones

tclasse5=class(Tlist)
public
procedure add;
end;
Responder Con Cita
  #5  
Antiguo 31-01-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.282
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
Éste hilo de hace un tiempo trata sobre el tema.
__________________
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
  #6  
Antiguo 31-01-2006
seba_cipo seba_cipo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Argentina
Posts: 35
Poder: 0
seba_cipo Va por buen camino
ok,, comprendido el tema,,, muchas gracias a todos por su tiempo
saludos!!
Responder Con Cita
  #7  
Antiguo 31-01-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por seba_cipo
estoy empezando a trabajar con el tema de la POO y tengo un problema q no se como resolver:

TClase1=class(TObject)
private
public
procedure Hola;
end;

TClase5=class(TClase1)
private
public
procedure Chau;
end;

bien, la pregunta es si la Tclase5 hereda de TClase1, cuando haga

var:=tclase5.create;
var.chau; // este permitido
var.hola //NO este visible aunque este declarado en public

es decir ocultar algunos metodos de clases superiores ,, pero solo los q yo quiera..
la verdad no se si es posible,,
desde ya muchas gracias
Ahi tienes un problema de diseño que no se soluciona "ocultando métodos". Si la clase TClase5 no puede acceder al método Hola, o bien este método no tiene que pertenecer a la clase, o no tiene que estar visible, o a lo sumo sobreescrito. Yo te sugiriría pensar en clases intermedias.


Cita:
Empezado por seba_cipo
en realidad lo q quiero hacer es ocultar algun metodo de la clase (Tlist)
quiero ocultar el metodo add de Tlist ya q en mi clase lo voy a utilizar con algunas modificaciones

tclasse5=class(Tlist)
public
procedure add;
end;
No puedes ocultar un método publicado, en la lógica esto sería simplemente violado si utilizas polimorfismo y tratas a tu clase como su ancestro. Particularmente en el caso del TList, muchas clases de la VCL que manejan listas dinámicas, por ejemplo TCollection, en lugar de heredar de TList lo utilizan como internamente y redefinen solo los métodos necesarios para la clase.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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
Como reciir correo pop3. Antuan Internet 3 30-07-2005 23:54:14
Usar Linux como Server . . . uper Linux 2 24-06-2004 20:07:18
Como puedo ocultar los digitos de una clave con **** hook Varios 4 16-06-2004 17:30:31
ocultar cuadro de dialogo de Guardar como valentine Varios 1 03-06-2004 13:04:51
Como paso un la intancia Tstrings de un TComboBox (ComboBox.items) por parametro? orfeo OOP 1 05-05-2003 07:58:52


La franja horaria es GMT +2. Ahora son las 12:09:13.


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