Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-12-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
No hay razon para decir que es "anormal" usar class methods. La idea de que solo es OO si se usan clases/objetos es solo un subproducto de que desafortunadamente la OO que se hizo popular es la deficiente implementación de C++/Java.

En ausencia de un sistema de modulos, los class methods se pueden usar tal como es usar funciones "simples". No hay razon para crear objetos para solo hacer un procesos que se puede directo con funciones/class-methods.
__________________
El malabarista.
Responder Con Cita
  #2  
Antiguo 06-12-2014
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:
Empezado por mamcx Ver Mensaje
Y porque no?


Los class methods se usan regularmente de la forma exacta que se describe, no solo en Delphi sino en todos los lenguajes que soportan esta opcion.
Cita:
Empezado por mamcx Ver Mensaje
No hay razon para decir que es "anormal" usar class methods. La idea de que solo es OO si se usan clases/objetos es solo un subproducto de que desafortunadamente la OO que se hizo popular es la deficiente implementación de C++/Java.

En ausencia de un sistema de modulos, los class methods se pueden usar tal como es usar funciones "simples". No hay razon para crear objetos para solo hacer un procesos que se puede directo con funciones/class-methods.
Claro Mario, pero a lo que nos referimos dec y yo es a que en el ejemplo que puso, ecfisa olvidó poner class en la declaración de los métodos. Sirve si no se hace referencia a variables de la clase pero no es lo que "debe" hacerse.

No tenemos nada en contra de los métodos de clase

// Saludos
Responder Con Cita
  #3  
Antiguo 06-12-2014
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: 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
De hecho los métodos de clase están bastante difundidos ya en las bibliotecas Delphi nativas y de terceros. Cubren diversas necesidades. Menciono las que ahora vienen a mi memoria:
  • Agrupación de funciones y variables globales que llevan estrecha relación entre sí. Algo que ya puede hacer una mera unidad .pas, pero con las ventajas de la POO (el encapsulamiento, la herencia y el polimorfismo aplican también a clases sin instancias). Además de la obligación sintáctica de usar identificadores calificados (escribir el nombre de la clase) cuando se usa desde afuera.
  • Virtualización de funciones: A llama a B; en cierto caso deseo que llame a C en lugar de B, sin modificar su código. Para conseguir algo parecido sin clases había que definir a B como una variable procedimental, pero cambiar el valor de esta afectaba a todos los llamadores de A.
  • Una especie de patrón singleton, disponible desde que arranca el programa, sin necesidad de crear una instancia de la clase que lo implementa.
  • Exponer una variable global privada —o campo de clase—, como propiedad de sólo lectura, de tal manera que la variable no pueda ser modificada desde fuera de la clase, sólo leída. La manera de conseguir esto sin una clase era definiendo una función global que devolviera el valor de la variable, pero con el costo de la llamada (el Call interno) a la función —no hay Call alguno cuando una propiedad lee directamente de un campo FXXX—. El costo extra de CPU al usar una función puede aliviarse un poco si es compilada inline, pero esto no siempre es deseable o posible.
  • Que una clase pueda llevar el control de sus propias instancias. Los campos (variables) y métodos de clase pueden usarse para administrar una lista de todas las instancias de objeto de esa clase, e intercambiar mensajes entre ellas.

Un saludo.

Al González.
Responder Con Cita
  #4  
Antiguo 25-12-2014
Eason Eason is offline
Registrado
NULL
 
Registrado: dic 2014
Posts: 2
Poder: 0
Eason Va por buen camino
Si,los class methods se usan regularmente de la forma exacta que se describe.
Responder Con Cita
  #5  
Antiguo 07-12-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: 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 roman.
Cita:
Empezado por roman Ver Mensaje
Claro Mario, pero a lo que nos referimos dec y yo es a que en el ejemplo que puso, ecfisa olvidó poner class en la declaración de los métodos. Sirve si no se hace referencia a variables de la clase pero no es lo que "debe" hacerse.

No tenemos nada en contra de los métodos de clase

// Saludos
En realidad no fué un olvido, quise poner en relieve precisamente la curiosidad que Delphi permite utilizar "métodos de objeto" sin haber creado una instancia de la clase.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 07-12-2014
Avatar de BDWONG
BDWONG BDWONG is offline
Miembro
NULL
 
Registrado: nov 2013
Posts: 113
Poder: 13
BDWONG Va por buen camino
ecfisa haber si entendi entoces un metodo de clase es una referencia encambio un metodo de objeto seria como llamar directamente a un metodo enconcreto

y por ultimo tu recomiendas el uso de alguno de los dos o dependiendo la ocacion ves si los utilizas
Responder Con Cita
  #7  
Antiguo 07-12-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: 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 BDWONG

Los métodos de clase se accionan sobre una referencia de clase y los métodos de objeto sobre una instancia de la clase, te pongo un código que ejemplifica a ambos:
Código Delphi [-]
...
type
  TForm2 = class(TForm)
  private
  public
    class procedure Mostrar(const aCaption: string); // método de clase
    procedure foo;                                   // método de objeto (o instancia)
  end;

var
  Form2: TForm2;

implementation

class procedure TForm2.Mostrar(const aCaption: string);
begin
  if not Assigned(Form2) then
    Form2:= TForm2.Create(nil);
  Form2.Caption:= aCaption;
  Form2.Show;
end;

procedure TForm2.foo;
var
  x: Integer;
begin
  x:= 5 + 4;
  ShowMessage(IntToStr(x));
end;

Llamada ejemplo:
Código Delphi [-]
...
procedure TForm1.Button1Click(Sender: TObject);
begin
  TForm2.Mostrar('Un título'); // método de clase, se invoca desde la clase
  Form2.foo;                   // método de objeto, se invoca desde la instancia(objeto)   
end;
También te podría interesar ampliar con estos artículos:
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 07-12-2014
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: 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
Cita:
Empezado por mamcx Ver Mensaje
No hay razon para decir que es "anormal" usar class methods. La idea de que solo es OO si se usan clases/objetos es solo un subproducto de que desafortunadamente la OO que se hizo popular es la deficiente implementación de C++/Java.
Totalmente de acuerdo. De hecho, hay muy pocos lenguajes que, siendo absolutamente estrictos en la definición, sean orientados a objetos (Small-Talk y poco más).

Por cierto (aunque sé que llego tarde...), hay un método que usamos mucho sin crear el objeto: El método Create.
Responder Con Cita
  #9  
Antiguo 08-12-2014
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: 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
Sí Ñuño, el constructor Create, y con la misma frecuencia el método de clase NewInstance.
Responder Con Cita
  #10  
Antiguo 10-12-2014
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:
Empezado por ecfisa Ver Mensaje
En realidad no fué un olvido, quise poner en relieve precisamente la curiosidad que Delphi permite utilizar "métodos de objeto" sin haber creado una instancia de la clase.
De todas formas, no es lo correcto. Y los despistados, lean bien el hilo para saber que lo que se discute no es si los métodos de clase son buenos o no

// Saludos
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
Un momento, ¿no sería mejor comenzar con Python 3.x? Al González Python 4 05-04-2011 16:30:43
Liberar un objeto Com marcosl OOP 1 25-10-2007 00:10:19
Liberar el foco de un objeto Velia Varios 4 18-11-2005 01:08:08
Liberar un objeto xerkan Servers 1 28-10-2003 17:29:10


La franja horaria es GMT +2. Ahora son las 04:22:05.


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