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 26-09-2003
shaktale shaktale is offline
Miembro
 
Registrado: may 2003
Ubicación: Euskal Herria
Posts: 39
Poder: 0
shaktale Va por buen camino
método estático

Una pregunta sencilla:
¿Cómo se define en Delphi un método de una función como estático?
__________________
Siempre Hay Alguien Ke Te Amarga La Existencia
Soziedad Alkoholika
Responder Con Cita
  #2  
Antiguo 26-09-2003
Avatar de haron
haron haron is offline
Miembro
 
Registrado: may 2003
Ubicación: Las Palmas de Gran Canaria
Posts: 310
Poder: 22
haron Va por buen camino
no estoy seguro, pero creo que no se puede.

si quieres un metodo estatico, simplemente declaralo en tu unidad coo un procedimiento normal:

Código:
UNIT libreria;

INTERFACE

procedure metodo;

IMPLEMENTATION

procedure metodo;
begin
  // implementacion del metodo
end;

END.
__________________
“Plantad la semilla de la avaricia en la infértil tierra de la estupidez y obtendreis la bella flor de la mierda”
(Confucio)
Responder Con Cita
  #3  
Antiguo 26-09-2003
shaktale shaktale is offline
Miembro
 
Registrado: may 2003
Ubicación: Euskal Herria
Posts: 39
Poder: 0
shaktale Va por buen camino
gracias haron

Lo de implementarlo en forma de funcion normal es la forma en que lo había solucionado, pero no me parecía muy elegante lo de andar mezclando OOP con programación estructurada, por eso quería saber si se puede hacer con un estático.

Si es cierto que no se puede hacer, ¿alguién sabe a qué se debe esto?

saludos
__________________
Siempre Hay Alguien Ke Te Amarga La Existencia
Soziedad Alkoholika
Responder Con Cita
  #4  
Antiguo 26-09-2003
Viet Viet is offline
Miembro
 
Registrado: jul 2003
Ubicación: Argentina - Mar del Plata
Posts: 252
Poder: 21
Viet Va por buen camino
Tal ves esto aclare un poco las cosas (del help de delphi):

All methods are static unless you specify otherwise when you declare them. Static methods work like regular procedures or functions. The compiler determines the exact address of the method and links the method at compile time.

The primary advantage of static methods is that dispatching them is very quick. Because the compiler can determine the exact address of the method, it links the method directly. Virtual and dynamic methods, by contrast, use indirect means to look up the address of their methods at runtime, which takes somewhat longer.

A static method does not change when inherited by a descendant class. If you declare a class that includes a static method, then derive a new class from it, the derived class shares exactly the same method at the same address. This means that you cannot override static methods; a static method always does exactly the same thing no matter what class it is called in. If you declare a method in a derived class with the same name as a static method in the ancestor class, the new method simply replaces the inherited one in the derived class.


Saludos
__________________
Marín Ignacio Borthiry (Viet) - "El hombre arriesga su vida cada vez que elije y eso es lo que lo hace libre" ;)
Responder Con Cita
  #5  
Antiguo 26-09-2003
Avatar de haron
haron haron is offline
Miembro
 
Registrado: may 2003
Ubicación: Las Palmas de Gran Canaria
Posts: 310
Poder: 22
haron Va por buen camino
essattamente.

realmente cuando se declara un metodo dentro de una clase, la referencia a ese metodo es estatica, si quieres que no lo sea tienes que incorporar la directiva 'override', y tambien existe otra que se llama 'overload' y otra que se llama 'reintroduce' y otra que se llama... no me acuerdo, pero hay otra.

en definitiva, la programacion en Delphi, sinceramente, no merece un premio por simplicidad.

creo que a lo que se referia shaktale es a lo siguiente

Código:
TObjeto=class
..
..

procedure metodo; static;

end;
de manera que pudiese invocar ese metodo:

Código:
TObjeto.metodo;
sin necesidad de crear una instancia de la clase TObjeto (si no es eso a lo que se refiere shaktale, porfavor que me corrija)

esto no se puede hacer en Delphi.

esto se puede hacer en Java y aunque algunos creen que va en contra de la OOP si viene muy bien en muchos casos.

bueno, como lenguaje, Delphi, cada vez me decepciona mas...
__________________
“Plantad la semilla de la avaricia en la infértil tierra de la estupidez y obtendreis la bella flor de la mierda”
(Confucio)
Responder Con Cita
  #6  
Antiguo 26-09-2003
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
Cita:
Posteado originalmente por haron

creo que a lo que se referia shaktale es a lo siguiente

Código:
TObjeto=class
..
..

procedure metodo; static;

end;
de manera que pudiese invocar ese metodo:

Código:
TObjeto.metodo;
sin necesidad de crear una instancia de la clase TObjeto (...)

esto no se puede hacer en Delphi.
Yo creo, sin ánimo de ofender, que estás mal entendiendo.

Los métodos que puedes llamar como TObjeto.metodo sí que existen en Delphi pero se llaman métodos de clase y se declaran así:

Código:
TMiClase = class
  class procedure metodo;
end;
La referencia de Viet a lo que indica la ayuda de Delphi es bastante clara. Por "default" los métodos en Delphi son estáticos. En otros lenguajes por "default" son virtuales y hay que declararlos como estáticos si así los quiere uno

Cita:
Posteado originalmente por haron

bueno, como lenguaje, Delphi, cada vez me decepciona mas...
Lamento que tengas esta opinión; sólo puedo decirte que me parece que hay que entender un poco más el lenguaje para poder juzgarlo tan severamente.

// Saludos
Responder Con Cita
  #7  
Antiguo 26-09-2003
Viet Viet is offline
Miembro
 
Registrado: jul 2003
Ubicación: Argentina - Mar del Plata
Posts: 252
Poder: 21
Viet Va por buen camino
No quiero hacer un debate... pero: yo he programado en VC++(donde si se puede hacer un metodo Static), VB , algo en java y obviamente Delphi . (Sin contar ASP y algo de PHP) . Y salvando las obvias diferencias que existen con los lenguajes Web, Delphi me sigue pareciendo ampliamente superior a todos los que probe.

Pero como dice el dicho " nadie es perfecto"....
__________________
Marín Ignacio Borthiry (Viet) - "El hombre arriesga su vida cada vez que elije y eso es lo que lo hace libre" ;)
Responder Con Cita
  #8  
Antiguo 26-09-2003
Avatar de haron
haron haron is offline
Miembro
 
Registrado: may 2003
Ubicación: Las Palmas de Gran Canaria
Posts: 310
Poder: 22
haron Va por buen camino
eso me pasa por bocazas.

he estado a punto de poner 'creo que no se puede'.

Código:
TMiClase = class
  class procedure metodo;
end;
pues me parece muy interesante esta forma de declarar metodos 'estaticos' como en Java.

de todas formas Java como lenguaje me parece infinitamente mas sencillo que Delphi y creo que deberia tomarse como referencia.

creo que le voy a poner los cuernos a Delphi.
__________________
“Plantad la semilla de la avaricia en la infértil tierra de la estupidez y obtendreis la bella flor de la mierda”
(Confucio)
Responder Con Cita
  #9  
Antiguo 29-09-2003
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Buen día a todos!

En Definitiva Delphi es una de las mejores opciones para programación orientada a objetos, en gran parte porque paradójicamente uno decide que tan orientado a objetos programar: Libertad.

Se pueden definir métodos estáticos, virtuales, dinámicos, redefinidos, sobrecargados, clase, constructores, destructores, de lectura y escritura para propiedades, etc: Flexibilidad.

La manera en que el compilador genera el código máquina le haría brillar los ojos a Einstein: Potencia.

El lenguaje fuente es bastante legible, intuitivo, fácil de memorizar y fácil de teclar: Amigabilidad.

Sus herramientas auxiliares, su biblioteca nativa, las ya existentes de otros fabricantes y la posibilidad de crear otras, son un pilar invaluable: Recursos.

Hay muchas herramientas de programación que dan libertad, que son flexibles, potentes, amigables y que cuentan con útiles recursos. Sólo que Delphi es una de las pocas que presentan estas cinco características.

Espero esto sea de utilidad. Seguimos en contacto.

Al González .

Última edición por Al González fecha: 29-09-2003 a las 01:45:03.
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 11:45:16.


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