Clase2 t programas - unidades - workspaces - Delphi

6
1 Embarcadero Delphi / Introducción Ing. Américo Torres Gonzales Programas y Unidades Esta sección cubre la estructura general de una aplicación en Delphi: El encabezado program, la sintaxis de declaración unit, y la clausula uses. Consideraciones Básicas para realizar un programa: Divide programas grandes en modulos que puedan ser editados separadamente. Crea librerías que puedas compartir con otros programas. Distribuye las librerías a otros desarrolladores en formato compilado, por lo que el código fuente queda protegido. I. Estructura y Sintaxis de un Programa Una aplicación ejecutable completa Delphi consiste de múltiples módulos, todas unidas por un archivo de código fuente llamado Archivo de Proyecto (.dpr). En programación tradicional Pascal, todo el código fuente, incluyendo el programa principal, es almacenado en un archivo .pas. Las herramientas Embarcadero usan el archivo dpr para designar al programa principal, mientras que otros archivos de código fuente residen en unidades que tienen la extensión .pas. Para construir un proyecto, el compilador necesita el archivo dpr, y los archivos de código fuente de las unidades en .pas o ya compiladas. Nota: Estrictamente hablando, no necesitas usar específicamente unidades en un proyecto, pero ya por defecto todos los programas usan las unidades System y SysInit. El archivo de código fuente para un ejecutable Delphi contiene: Una declaración program. Una clausula opcional uses, y Un bloque de declaraciones y sentencias ejecutables. Adicionalmente, un programa RAD Studio podría contener una clausula namespace, para especificar espacios de nombres adicionales para buscar unidades. A. La declaración Program Especifica un nombre para el programa ejecutable. Consiste de la palabra reservada program, seguido por un identificador valido, seguido de un punto y coma. El siguiente ejemplo muestra el código fuente de un archivo de proyecto llamado Editor. Dado que el programa es llamado Editor, este archivo de proyecto se llama Editor.dpr.

Transcript of Clase2 t programas - unidades - workspaces - Delphi

1 Embarcadero Delphi / Introducción

Ing. Américo Torres Gonzales

Programas y Unidades

Esta sección cubre la estructura general de una aplicación en Delphi: El encabezado program,

la sintaxis de declaración unit, y la clausula uses.

Consideraciones Básicas para realizar un programa:

Divide programas grandes en modulos que puedan ser editados separadamente.

Crea librerías que puedas compartir con otros programas.

Distribuye las librerías a otros desarrolladores en formato compilado, por lo que el código

fuente queda protegido.

I. Estructura y Sintaxis de un Programa

Una aplicación ejecutable completa Delphi consiste de múltiples módulos, todas unidas por un

archivo de código fuente llamado Archivo de Proyecto (.dpr). En programación tradicional

Pascal, todo el código fuente, incluyendo el programa principal, es almacenado en un archivo

.pas. Las herramientas Embarcadero usan el archivo dpr para designar al programa principal,

mientras que otros archivos de código fuente residen en unidades que tienen la extensión

.pas. Para construir un proyecto, el compilador necesita el archivo dpr, y los archivos de código

fuente de las unidades en .pas o ya compiladas.

Nota: Estrictamente hablando, no necesitas usar específicamente unidades en un proyecto,

pero ya por defecto todos los programas usan las unidades System y SysInit.

El archivo de código fuente para un ejecutable Delphi contiene:

Una declaración program.

Una clausula opcional uses, y

Un bloque de declaraciones y sentencias ejecutables.

Adicionalmente, un programa RAD Studio podría contener una clausula namespace, para

especificar espacios de nombres adicionales para buscar unidades.

A. La declaración Program

Especifica un nombre para el programa ejecutable. Consiste de la palabra reservada program,

seguido por un identificador valido, seguido de un punto y coma. El siguiente ejemplo muestra

el código fuente de un archivo de proyecto llamado Editor. Dado que el programa es llamado

Editor, este archivo de proyecto se llama Editor.dpr.

2 Embarcadero Delphi / Introducción

Ing. Américo Torres Gonzales

Explicación: La primera línea contiene el nombre del programa. Luego la clausula uses en este

ejemplo especifica una dependencia de 3 unidades adicionales: Forms, REAbout y REMain. La

directiva de compilador $R enlaza el archivo de recursos del proyecto. Finalmente, el bloque

de sentencias dentro de las palabras begin / end son ejecutadas cuando el programa corre. El

archivo de proyecto, como todos los archivos fuente Delphi, termina con un punto.

Los archivos de proyecto son usualmente cortos, ya que toda la lógica esta en sus unidades. Un

archivo de proyecto contiene típicamente solo codigo suficiente para lanzar la ventana

principal del programa, y arrancar el bucle de eventos. Los archivos de proyecto son generados

y mantenidos automáticamente por el IDE.

B. La clausula Uses

Ella lista las unidades que son incorporadas al programa. Esas unidades podrían tener a su vez

sus propias dependencias en su clausula uses.

C. El Bloque

Contiene una o muchas sentencias que son ejecutadas cuando el programa corre. En la

mayoría de los archivos de programa, el bloque consiste de un conjunto de sentencias

encerradas entre las palabras reservadas begin y end, estas sentencias son simplemente

llamadas a métodos al objeto Application del proyecto. La mayoría de los proyectos tienen una

variable global Application que tiene una instancia de Forms.TApplication, TWebApplication o

SvcMgr.TServiceApplication. Este bloque pueden también tener declaraciones de constantes,

tipos, variables, procedimientos y funciones.

II. Estructura y Sintaxis de una Unidad

Una unidad consiste de tipos (incluyendo clases), constantes, variables, y rutinas (funciones y

procedimientos). Cada unidad esta definida en su propio archivo .pas.

Un archivo de Unidad comienza con la palabra Unit, luego de la cual sigue la palabra interface,

luego de esta de forma opcional puede haber una clausula uses para especificar dependencias

si estas existieran. Luego viene la sección implementation, seguido por las secciones

opcionales initialization y finalization. El esqueleto de una unidad es mostrado a continuación:

3 Embarcadero Delphi / Introducción

Ing. Américo Torres Gonzales

La unidad debe terminar siempre con la palabra reservada end seguida de un punto (.).

A. La palabra Unit

Sirve para especificar el nombre de la unidad. Consiste de la palabra unit, seguido por un

identificador valido, seguido de un punto y coma. Para aplicaciones desarrolladas usando

herramientas Embarcadero, el identificador debe coincidir con el nombre del archivo .pas, de

modo que por ejemplo si tenemos:

Unit FormularioPrincipal;

Debería existir un archivo fuente llamado FormularioPrincipal.pas, y el archivo resultante luego

de la compilación debería ser FormularioPrincipal.dcu. Los nombres de las unidades deben ser

únicos en un proyecto. Aun si sus archivos están en diferentes directorios, dos unidades con el

mismo nombre no pueden ser usadas en un solo programa.

B. La Sección interface

Esta sección comienza con la propia palabra interface y continúa hasta que se encuentre la

palabra reservada implementation. En ella se declaran constantes, tipos, variables,

procedimientos y funciones que estarán disponibles para los clientes. Esto es, para otras

unidades o programas que desean usar los elementos de esta unidad. Estas entidades son

llamadas públicas debido a que el código en otras unidades puede accederlas como si

estuvieran declaradas en la misma unidad.

La declaración de la interface de un procedimiento o función incluye solamente la firma de la

rutina. Esto es, el nombre de la rutina, los parámetros, y el tipo de retorno (para funciones). El

bloque que contiene el código ejecutable para el procedimiento o función se encontrara

siempre en la sección implementation.

La declaración de la interface para una clase debe incluir declaraciones para todos sus

miembros de clase: campos, propiedades, procedimientos y funciones.

4 Embarcadero Delphi / Introducción

Ing. Américo Torres Gonzales

La sección interface puede incluir su propia clausula uses, la cual, de ser usada, debe aparecer

inmediatamente después de la palabra interface.

C. La Sección implementation

Esta sección comienza con la propia palabra implementation y continua hasta el comienzo de

la sección initialization, o, si no hay sección initialization, hasta el final de la unidad (end.). Esta

sección define procedimientos y funciones que son declarados en la sección interface. Dentro

de la sección implementation, esos procedimientos y funciones pueden ser definidos y

llamados en cualquier orden.

Esta sección también puede incluir su propia clausula uses, la cual debe ser incluida, si se usa,

inmediatamente después de la palabra implementation. Los identificadores declaradas con

unidades especificadas en una sección implementation son solo disponibles para uso en esa

sección. No pueden ser referenciadas a esos identificadores en la sección interface.

D. La Sección Initialization

Es opcional. Comienza con la propia palabra initialization y continúa hasta el comienzo de la

sección finalization, o si no existe esta ultima hasta el final de la unidad (end.). Esta sección

contiene sentencias que son ejecutadas, en el orden en que aparecen. Asi, por ejemplo, si has

definido estructuras de datos que necesitan ser inicializadas, puedes hacer esto en esta

sección.

E. La Sección Finalization

Es opcional. Puede aparecer solo en unidades que tienen la sección inicialization definida.

Comienza con la propia palabra finalization y continúa hasta el final de la unidad. Contiene

sentencias que son ejecutadas cuando el programa principal termina (a menos que el

procedimiento Halt sea usado para terminar el programa). Esta sección se usa también para

liberar recursos que son asignados en la sección inicialization.

La liberación de recursos se realiza en orden inverso a la de inicialización de los mismos. Por

ejemplo, si tu aplicación inicializa las unidades A, B y C en ese orden, deberán ser finalizadas en

el orden C, B y A.

Una vez que el código de inicialización de la unidad comienza a ejecutarse, la sección

finalization correspondiente esta garantizada a ejecutarse cuando la aplicación finalice.

5 Embarcadero Delphi / Introducción

Ing. Américo Torres Gonzales

Espacios de Nombres (Namespaces) con Delphi

En Delphi, una unidad es un contenedor básico para tipos; mientras que un Espacio de Nombre

es un contenedor de unidades.

A diferencia de las unidades tradicionales, los espacios de nombres pueden ser apilados para

formar una jerarquía. Los espacios de nombres proveen una forma de organizar

identificadores y tipos, y son usados para que no existan ambigüedades con tipos que tengan

el mismo nombre. Ya que hay un contenedor para Unidades, los espacios de nombres pueden

ser usados para diferenciar entre unidades del mismo nombre que residen en paquetes

diferentes.

Por ejemplo, la clase MiClase en MiNombreEspacio1, es diferente de la clase MiClase en

MiNombreEspacio2.

A. Declaración de Espacios de Nombres

En RAD Studio, un archivo de proyecto (programa, librería o paquete) implícitamente

introduce su propio espacio de nombre, llamado el “Espacio de Nombre por defecto”. Una

unidad podría ser un miembro de un “Espacio de Nombre por defecto”, o podría ser declarado

explícitamente a si mismo para ser un miembro de un Espacio de Nombre diferente. En otro

caso, una unidad declara su membresía a un Espacio de Nombre en su encabezado de unidad.

Por ejemplo, considera la siguiente declaración:

Unit MiEmpresa.AreaContabilidad.UnidadPlanContable;

Primero, nota que las partes de los Espacios de nombres están separadas por puntos. Los

espacios de nombres no introducen nuevos símbolos para los identificadores entre los puntos;

los puntos son parte del nombre de la unidad. El nombre del archivo fuente para esta ejemplo

es MiEmpresa.AreaContabilidad.UnidadPlanContable.pas, y el nombre del archivo compilado

resultante será: MiEmpresa.AreaContabilidad.UnidadPlanContable.dcu.

Segundo, nota que los puntos implican una relación conceptual de un espacio de nombre con

otro. El ejemplo arriba declara la unidad UnidadPlanContable que es miembro del espacio de

nombre AreaContabilidad, el cual esta contenido en el espacio de nombre MiEmpresa.

Un espacio de nombre por defecto declara un espacio de nombre para todas las unidades en el

proyecto. Considera las siguientes declaraciones:

Program MiEmpresa.AreaContabilidad.UnidadPlanContable;

Library MiEmpresa.AreaContabilidad.UnidadPlanContable;

Package MiEmpresa.AreaContabilidad.UnidadPlanContable;

Estas 3 sentencias establecen el espacio de nombre por defecto para el programa, librería y

paquete respectivamente. El espacio de nombre es determinado removiendo el identificador y

punto que están mas a la derecha de la declaración.

6 Embarcadero Delphi / Introducción

Ing. Américo Torres Gonzales

Una unidad que omite un espacio de nombre explicito es llamado Unidad Genérica. Una

Unidad Genérica automáticamente se vuelve miembro del espacio de nombre por defecto.

Dada la declaración anterior de program, la siguiente declaración de unidad causaría que el

compilador trate a la unidad UnidadPlanContable como miembro del espacio de nombre

MiEmpresa.AreaContabilidad:

unit UnidadPlanContable;

El espacio de nombre por defecto no afectará el nombre del archivo fuente para una unidad

genérica. En el ejemplo anterior, el nombre del archivo fuente sería UnidadPlanContable.pas.

El compilador sin embargo usa la extensión dcu para el nombre del archivo con el espacio de

nombre por defecto. El archivo dcu resultante sería por lo tanto:

MiEmpresa.AreaContabilidad.UnidadPlanContable.dcu.

Los Espacio de Nombre no son case-sensitive.