Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Como ocultar metodos (https://www.clubdelphi.com/foros/showthread.php?t=29733)

seba_cipo 31-01-2006 13:33:25

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

jmariano 31-01-2006 13:42:33

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!

piccolo2101 31-01-2006 13:47:58

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.

seba_cipo 31-01-2006 13:57:30

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;

Neftali [Germán.Estévez] 31-01-2006 14:01:40

Éste hilo de hace un tiempo trata sobre el tema.

seba_cipo 31-01-2006 14:44:49

ok,, comprendido el tema,,, muchas gracias a todos por su tiempo
saludos!!

delphi.com.ar 31-01-2006 15:01:42

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!


La franja horaria es GMT +2. Ahora son las 04:15:36.

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