Conceptos básicos en la programación con Delphi

 

    No es el objeto del presente proyecto hacer un repaso exhaustivo de la programación en Pascal, por eso vamos a ver de forma somera solo algunas de las características de que dispone Delphi, principalmente aquellas que le diferencian más del Pascal estándar. Para ello, vamos a introducir una serie de conceptos:
 

  1. Objetos
  2. Componentes
  3. Propiedades
  4. Eventos
  5. Métodos
 

Objetos

 

    Como su propio nombre indica, el Object Pascal (usado por Delphi) es un lenguaje totalmente orientado a objetos. Prácticamente todos los elementos del entorno Delphi son objetos, que unas veces se encuentran definidos de antemano (los forms, los componentes de la paleta, objetos no visuales, etc), y otras se definen en nuestra propia aplicación (por ejemplo el componente TPostIt de ANALOGIA.EXE definido en la unit U_Misc).

    Todo el desarrollo de aplicaciones en Delphi está íntimamente ligado con la definición y uso de objetos, por lo que es fundamental conocer la mecánica que Object Pascal utiliza para describir un objeto, sus características y su funcionamiento, sobre todo a la hora de que el programador cree sus propios componentes. En muchos casos no es necesario conocer el funcionamiento de la programación orientada a objetos para programar con Delphi, puesto que en la mayoría de los casos existen controles ya creados sin necesidad de tener que programarlos. Por ejemplo en ANALOGIA.EXE la mayoría de los objetos forman parte de la VCL de Delphi y otros dos componentes han sido escritos por terceros (RChart y TFormulaParser), sin embargo ha sido útil desarrollar un componente propio (TPostIt) para mostrar la tabla de valores de los componentes en el programa.

    La propia programación visual de Delphi, que escribe parte del código automáticamente, hace posible utilizar objetos de forma práctica sin tener por qué comprender al cien por cien su funcionamiento.

 

Componentes

 

    Un componente es cualquiera de los elementos que podemos insertar en una ficha, tanto si su función es visual como si no lo es (por supuesto un componente es también un objeto). Un ejemplo de componente puede ser RChart, usado en ANALOGIA.EXE para dibujar las gráficas. Sin conocer exactamente el cómo realiza su función, el programador manipula una serie de propiedades, métodos y eventos que caracterizan al componente, a través de los cuales se "maneja" el componente en la forma deseada. Por supuesto el usuario puede crear sus propios componentes y usarlos en distintas aplicaciones, de forma que la reusabilidad del código es máxima. A los componentes que cuentan con una parte visual, como puede ser un botón, se les denomina controles.

 

Propiedades

 

    Los componentes, y de hecho todos los objetos de Delphi son de uso general, por lo que a la hora de usarlos de alguna forma deberemos adecuarlos a nuestras necesidades. Para ello nos serviremos de las propiedades de cada objeto, mediante las cuales podremos establecer el título de una ventana, el tipo de letra de una etiqueta de texto o el color en el que aparecen los distintos controles.

    Se puede pensar en las propiedades como si fuesen variables pertenecientes a un objeto (veremos que no es así exactamente), de tal forma que para acceder a ellas generalmente habrá que indicar no sólo el nombre de la propiedad, sino también a qué objeto pertenece.

    La modificación o consulta del valor de una propiedad puede diferir según intentemos acceder a ella mientras estamos diseñando un form, en tiempo de diseño, o bien mediante el código del programa, en tiempo de ejecución. Ciertas propiedades están sólo accesibles en tiempo de ejecución, por lo que mientras estamos diseñando la ficha no aparecerán. Además hay algunas propiedades que son de sólo lectura, por lo que su valor puede ser consultado, pero no modificado, y otras que son sólo de escritura.

    Aunque a primera vista si usamos un componente prefabricado, las propiedades pueden parecer simples variables, en la mayoría de las ocasiones una propiedad no es una variable, y la modificación o consulta de su valor puede conllevar que internamente el componente ejecute un cierto código. Si por ejemplo tuviésemos un componente para comunicaciones serie que se encargase de enviar mensajes a un ordenador remoto, podríamos tal vez asignar una cadena de caracteres a una hipotética propiedad "Envia". De esta forma, con una simple asignación (Envia:='Mensaje a mandar') se pondría en marcha todo el mecanismo implícito en el componente para enviar el mensaje al ordenador remoto. Esta propiedad podría ser un ejemplo de propiedad de sólo escritura, ya que sólo interesa mandar el mensaje al ordenador remoto, sin conservar información acerca del mensaje, por lo que sería inapropiada su lectura.

 

Eventos

 

    Como dije anteriormente, la programación en el entorno Windows se caracteriza por estar dirigida por eventos, de tal forma que un programa no tiene por qué ejecutarse necesariamente de forma secuencial, sino que ciertas porciones de código se ejecutarán cuando ocurra un cierto evento.

    Los eventos son señales que el entorno recibe desde distintos elementos, como puedan ser el ratón, el teclado o un temporizador. Estos eventos son redirigidos a las aplicaciones, que en caso de aceptarlos deberán responder adecuadamente de ellos. Ciertos eventos pueden ser gestionados por el propio Windows, otros quedarán a cargo del propio lenguaje que estemos usando, y un tercer grupo serán los que lleguen hasta nuestro programa. En Delphi prácticamente todo el código que escribimos irá asociado a algún evento. Si retomamos el ejemplo del componente para comunicaciones serie, podría interesarnos que se ejecutara un evento cada vez que se recibiese un carácter por el puerto serie, de forma que podríamos escribir el código necesario para guardar el carácter en un archivo cada vez que se produjese el evento. Normalmente los eventos a los que reaccionarán los componentes serán las pulsaciones del teclado o el ratón, activaciones de los componentes, etc.

 

Métodos

 

    Los componentes Delphi además de disponer de propiedades y poder responder a ciertos eventos, habitualmente también disponen de métodos. Un método es un procedimiento o función que nos permite realizar una determinada acción en el componente, pudiendo necesitar o no el paso de algún parámetro.

    Al igual que ocurre en las propiedades, a la hora de usar un cierto método normalmente tendremos que indicar primero el objeto o componente al que pertenece, de tal forma que la acción del método recaiga sobre él, y no sobre cualquier otro. El hecho de que cada objeto sea propietario de una serie de propiedades y métodos, variables y código, que no son accesibles a ningún otro objeto externo, recibe el nombre de encapsulación, aunque también es posible definirlos de tal modo que sean accesibles a otros objetos.
 


[Página principal]            [Indice Delphi]