Consejos

Comprender los métodos de clase de Delphi

Comprender los métodos de clase de Delphi

En Delphi, un método es un procedimiento o función que realiza una operación en un objeto. Un método de clase es un método que opera en una referencia de clase en lugar de una referencia de objeto.

Si lee entre líneas, encontrará que los métodos de clase son accesibles incluso cuando no ha creado una instancia de la clase (el objeto).

Métodos de clase versus métodos de objeto

Cada vez que crea un componente Delphi dinámicamente, utiliza un método de clase: el Constructor.

El constructor Create es un método de clase, a diferencia de prácticamente todos los demás métodos que encontrará en la programación de Delphi, que son métodos de objeto. Un método de clase es un método de la clase y, de manera adecuada, un método de objeto es un método que puede ser llamado por una instancia de la clase. Esto se ilustra mejor con un ejemplo, con clases y objetos resaltados en rojo para mayor claridad:

myCheckbox: = TCheckbox.Create (nil);

Aquí, la llamada a Crear está precedida por el nombre de la clase y un punto ("TCheckbox"). Es un método de la clase, comúnmente conocido como constructor. Este es el mecanismo por el cual se crean las instancias de una clase. El resultado es una instancia de la clase TCheckbox. Estas instancias se llaman objetos. Contraste la línea de código anterior con lo siguiente:

myCheckbox.Repaint;

Aquí, se llama al método Repaint del objeto TCheckbox (heredado de TWinControl). La llamada a Repaint está precedida por la variable del objeto y un punto ("myCheckbox").

Los métodos de clase se pueden llamar sin una instancia de la clase (por ejemplo, "TCheckbox.Create"). Los métodos de clase también se pueden invocar directamente desde un objeto (por ejemplo, "myCheckbox.ClassName"). Sin embargo, los métodos de objeto solo pueden ser invocados por una instancia de una clase (por ejemplo, "myCheckbox.Repaint").

Detrás de escena, el constructor Crear está asignando memoria para el objeto (y está realizando cualquier inicialización adicional según lo especificado por TCheckbox o sus antepasados).

Experimenta con tus propios métodos de clase

Piense en AboutBox (un formulario personalizado "Acerca de esta aplicación"). El siguiente código usa algo como:

procedimiento TfrMain.mnuInfoClick (remitente: TObject);
empezar
AboutBox: = TAboutBox.Create (nil);
tratar
AboutBox.ShowModal;
finalmente
AboutBox.Release;
fin;
fin;Esto, por supuesto, es una forma muy agradable de hacer el trabajo, pero solo para hacer que el código sea más fácil de leer (y administrar), sería mucho más eficiente cambiarlo a:

procedimiento TfrMain.mnuInfoClick (remitente: TObject);
empezar
TAboutBox.ShowYourself;
fin;La línea anterior llama al método de clase "ShowYourself" de la clase TAboutBox. El "ShowYourself" debe estar marcado con la palabra clave "clase":

procedimiento de clase TAboutBox.ShowYourself;
empezar
AboutBox: = TAboutBox.Create (nil);
tratar
AboutBox.ShowModal;
finalmente
AboutBox.Release;
fin;
fin;

Cosas a tener en cuenta

  • La definición de un método de clase debe incluir la clase de palabra reservada antes del procedimiento o la palabra clave de función que inicia la definición.
  • El formulario AboutBox no se crea automáticamente (Project-Options).
  • Coloque la unidad AboutBox en la cláusula de usos del formulario principal.
  • No olvide declarar el procedimiento en la parte de la interfaz (pública) de la unidad AboutBox.