Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > OOP
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 16/02/2011
FelixInasa FelixInasa is offline
Registrado
NULL
 
Join Date: Jan 2011
Posts: 7
Poder: 0
FelixInasa Va por buen camino
clase estatica D7

Hola

se pude definir una clase estática en D7?

gracias
Reply With Quote
  #2  
Old 16/02/2011
Ñuño Martínez's Avatar
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Join Date: Jul 2006
Location: Ciudad Catedral, Españistán
Posts: 6,025
Poder: 28
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Que yo sepa, no.

De todas formas puedes usar una unidad Pascal como "pseudo-objeto". Yo lo hago muchas veces.

El compilador Pascal crea automáticamente "nombres de espacio" por cada unidad Pascal, de forma que pueden utilizarse para identificar objetos. Por ejemplo:
Código Delphi [-]
UNIT Unidad1;

INTERFACE

(* Método cualquiera. *)
  PROCEDURE ElMetodo;

IMPLEMENTATION
  PROCEDURE ElMetodo;
  BEGIN
    WriteLn ('Estamos en ElMetodo de la unidad 1.');
  END;
END.
Código Delphi [-]
UNIT Unidad2;

INTERFACE

(* Método cualquiera. *)
  PROCEDURE ElMetodo;

IMPLEMENTATION
  PROCEDURE ElMetodo;
  BEGIN
    WriteLn ('Estamos en ElMetodo de la unidad 2.');
  END;
END.
Código Delphi [-]
PROGRAM Ejemplo;

USES
  Unidad1, Unidad2;

BEGIN
  Unidad1.ElMetodo;
  Unidad2.ElMetodo;
END;
Reply With Quote
  #3  
Old 16/02/2011
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: 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
Quote:
Originally Posted by FelixInasa View Post
Hola

se pude definir una clase estática en D7?

gracias
Todo depende de a qué le llames clase estática. Yo, por clase estática entenderia una cuyos métodos son todos estáticos, es decir, métodos asociados a la clase en sí y no a una instancia particular de la clase.

Y sí, delphi cuenta con los llamados métodos de clase que son sinónimos de los estáticos.

// Saludos
Reply With Quote
  #4  
Old 16/02/2011
rgstuamigo's Avatar
rgstuamigo rgstuamigo is offline
Miembro
 
Join Date: Jul 2008
Location: Santa Cruz de la Sierra-Bolivia
Posts: 1,646
Poder: 20
rgstuamigo Va por buen camino
Arrow

A partir de una version superior de Delphi 7 (Delphi 2007 por ejmplo)sí se puede, pero de Delphi 7 para abajo no se puede...
En Delphi 2007 se puede hacer así:
Código Delphi [-]
...
type
  TEntidad = class sealed //<-clase cerrada
  private
    Numero: Integer;
    Nombre: String;
  public
    constructor Create;
    procedure SetNombre( s: String );
  end;
..
Si intentamos crear una nueva clase descendiente de TEntidad
Código Delphi [-]
...
TCliente = class( TEntidad )
private
  CIF: String;
end;
..
El compilador gritará un error...
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Reply With Quote
  #5  
Old 16/02/2011
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: 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
No es lo mismo sealed que static.

// Saludos
Reply With Quote
  #6  
Old 16/02/2011
Delphius's Avatar
[Delphius] Delphius is offline
Miembro Premium
 
Join Date: Jul 2004
Location: Salta, Argentina
Posts: 5,582
Poder: 28
Delphius Va camino a la fama
Quote:
Originally Posted by roman View Post
Todo depende de a qué le llames clase estática. Yo, por clase estática entenderia una cuyos métodos son todos estáticos, es decir, métodos asociados a la clase en sí y no a una instancia particular de la clase.

Y sí, delphi cuenta con los llamados métodos de clase que son sinónimos de los estáticos.

// Saludos
¿Será que yo ya estoy olvidando la teoría OO?
No recuerdo si existe, formalmente el concepto Clase estática, pero si métodos estáticos o métodos de clases.

Ahora me pregunto, El que una clase tenga métodos de clase es suficiente criterio como para concluir que la clase es estática.
A lo que voy: Si hay métodos estáticos, ergo: la clase es estática.

Me voy a los libros... porque ya estoy dudando.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Reply With Quote
  #7  
Old 16/02/2011
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: 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
Quote:
Originally Posted by Delphius View Post
No recuerdo si existe, formalmente el concepto Clase estática, pero si métodos estáticos o métodos de clases.
Por eso dije yo que todo depende de lo que entienda por clase estática. Que yo sepa, ni Java ni C++ ni Delphi tienen clases estáticas. Pero, informalmente, se entiende por estática una clase en la que todos sus miembros son estáticos.


Quote:
Originally Posted by Delphius View Post
Ahora me pregunto, El que una clase tenga métodos de clase es suficiente criterio como para concluir que la clase es estática.
No lo creo. No habiendo una definición formal de clase estática (*), tal apelativo sólo podría aplicarse si la totalidad de miembros son estáticos.


----------------------------
(*) Al parecer, C# sí implementa explícitamente las clases estáticas.


// Saludos
Reply With Quote
  #8  
Old 16/02/2011
Delphius's Avatar
[Delphius] Delphius is offline
Miembro Premium
 
Join Date: Jul 2004
Location: Salta, Argentina
Posts: 5,582
Poder: 28
Delphius Va camino a la fama
Pues, creeme roman si lo que he dicho no iba en plan de humor... es una DUDA REAL que me asalta ahora ¿Siendo correctos, en la teoría OO, existe el concepto de clase estática? No apunto a si un lenguaje tiene o no soporte a eso... ¿Está el concepto en la teoría?

Sorprendentemente intento recordar la teoría... pero es como si esa zona en mi cabeza justo estuviera dañada. Recuerdo clases abstractas, virtuales, métodos estáticos, sobrecargados, etc. Pero en si... el concepto clase estática es como si no estuviera en mi cabeza

Me hace falta algo para la memoria

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Reply With Quote
  #9  
Old 16/02/2011
rgstuamigo's Avatar
rgstuamigo rgstuamigo is offline
Miembro
 
Join Date: Jul 2008
Location: Santa Cruz de la Sierra-Bolivia
Posts: 1,646
Poder: 20
rgstuamigo Va por buen camino
Arrow

Quote:
Originally Posted by roman View Post
No es lo mismo sealed que static.
Tal parece que entendí mal la pregunta..., quizás nuestro amigo FelixInasa debe aclararnos mejor lo que busca.
Quote:
Originally Posted by roman View Post
Por eso dije yo que todo depende de lo que entienda por clase estática. Que yo sepa, ni Java ni C++ ni Delphi tienen clases estáticas. Pero, informalmente, se entiende por estática una clase en la que todos sus miembros son estáticos.
...
Pues en Java si existe el concepto de clase Estática aunque solo ésta permitido dentro de clases anidadas.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Reply With Quote
  #10  
Old 16/02/2011
Ñuño Martínez's Avatar
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Join Date: Jul 2006
Location: Ciudad Catedral, Españistán
Posts: 6,025
Poder: 28
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Quote:
Originally Posted by Delphius View Post
¿Será que yo ya estoy olvidando la teoría OO?
No, no has olvidado la teoría de la "Orientación a Objetos", porque las clases estáticas no son parte de esa teoría, sino un añadido posterior. Puede haber OO sin clases estáticas.
Quote:
Originally Posted by Delphius View Post
¿Siendo correctos, en la teoría OO, existe el concepto de clase estática?
La teoría OO "sólo" exige:
  • Encapsulación
  • Herencia
  • Polimorfismo

Todo lo demás es accesorio. Además, las "clases estáticas" sólo pueden ser aplicadas a lenguajes orientados a clases . Hay lenguajes orientados a objetos que no tienen clases, como Small-Talk (el "Lenguaje Original").

Last edited by Ñuño Martínez : 16/02/2011 at 19:02.
Reply With Quote
  #11  
Old 16/02/2011
Al González's Avatar
[Al González] Al González is offline
In .pas since 1991
 
Join Date: May 2003
Posts: 5,610
Poder: 32
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
Off topic

Fuera de tema:

Los creadores de lenguajes no sólo evitan suprimir la más perniciosa que provechosa sección privada de las clases, sino que encima se dan el lujo de inventar el concepto de clase sellada.

¿Qué sigue? ¿Clases de pago por evento? ¿Canon por redefinir métodos virtuales?

¡Pabernoslimitao!

Cierro este off topic de desahogo teórico-filosófico.
Reply With Quote
  #12  
Old 17/02/2011
Lord Delfos's Avatar
Lord Delfos Lord Delfos is offline
Miembro
 
Join Date: Jan 2008
Location: Tandil, Argentina
Posts: 558
Poder: 19
Lord Delfos Va por buen camino
A ver si aclaro...

Una "clase estática" es una clase que no tiene instancia... O mejor dicho, una clase que tiene una sola instancia que se crea automágicamente.

Por ejemplo en Java (de donde, se me ocurre, viene el término) uno puede hacer Numero= Math.Random() y obtener un número aleatorio entre 0 y 1 *SIN* tener que instanciar Math.

¿Adivinen qué es Math? Sí, una clase estática.

En otras palabras, en un lenguaje que sólo soporta programación OO, en algún momento se va a necesitar llamar a una función... El problema es que las funciones no existen en OO, solamente métodos adentro de clases. Es decir que sin instanciar una clase, no hay método. De ahí la clase estática. En Delphi llamás a random y listo, feliz de la vida... pero Java es otro cantar.

En este sentido, creo que en las versiones modernas de Delphi existe el modificador static, pero no podría asegurarlo, pero en D7 seguro que no.
Reply With Quote
  #13  
Old 17/02/2011
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: 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
Quote:
Originally Posted by Lord Delfos View Post
A ver si aclaro...
En este sentido, creo que en las versiones modernas de Delphi existe el modificador static, pero no podría asegurarlo, pero en D7 seguro que no.
Tal como dije desde el principio:

Quote:
Originally Posted by roman View Post
Y sí, delphi cuenta con los llamados métodos de clase que son sinónimos de los estáticos.
Es decir, Delphi no cuenta con el modificador static pero sí cuenta con métodos estáticos, sólo que se llaman métodos de clase:

Código Delphi [-]
TMiObjeto = class(...)
  class procedure HazAlgo(...);
end;

Son estáticos en tanto que no requieren una instancia particular de la clase. Estos métodos existen también en delphi 7 y versiones anteriores.

Por otra parte, una misma clase puede tener métodos estáticos y métodos no estáticos.

// Saludos
Reply With Quote
  #14  
Old 17/02/2011
ecfisa's Avatar
ecfisa ecfisa is offline
Moderador
 
Join Date: Dec 2005
Location: Tres Arroyos, Argentina
Posts: 10,508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Tengo una duda en cuanto a las definiciónes de método estático y método de clase, que a fines prácticos, quizá no tenga mayor importancia.
Pero la comento a ver si me la pueden aclarar.

Un artículo de Ian Marteens que leí hace un tiempo en una parte dice:
Quote:
Primero, es necesario aclarar la diferencia entre un método estático y un método de clase, porque estos últimos ya existían en Delphi nativo. Aunque ambos tipos de métodos se aplican sobre un nombre de clase, en el caso del método estático no hay un parámetro oculto Self, como en los métodos de instancias; los métodos de clase sí utilizan un parámetro oculto Self, aunque éste apunta a una referencia de clase, en vez de apuntar a un objeto.
Y por otro lado encuentro esta definición en Wikipedia y en muchas páginas más, donde se considera a los términos como sinónimos:
Quote:
En la programación orientada a objetos, un método es una subrutina asociada exclusivamente a una clase (llamados métodos de clase o métodos estáticos) ...
Para mí ambos conceptos son cláramente antagónicos...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
INFO: DLL's, BPL's, carga dinámica, carga estática y Packages en Runtime Neftali [Germán.Estévez] OOP 26 13/12/2013 19:29
clase que contiene otra clase definida de forma posterior astwin OOP 5 20/02/2009 11:26
Clase jakuna OOP 2 30/08/2007 21:50
variable estatica no muere con el form !!!!!!!!!!! david_uh Varios 5 28/07/2007 00:51
...la clase... Jure Humor 0 27/07/2004 20:00


All times are GMT +2. The time now is 02:16.


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