SlideShare una empresa de Scribd logo
1 de 6
Descargar para leer sin conexión
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.

Más contenido relacionado

La actualidad más candente

ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++Idalia Tristan
 
Interprete sencillo utilizando irony y c sharp
Interprete sencillo utilizando irony y c sharpInterprete sencillo utilizando irony y c sharp
Interprete sencillo utilizando irony y c sharpAndresDvila
 
Software para el aprendizaje de la programación EC 2. Presentación 3: Python
 Software para el aprendizaje de la programación EC 2. Presentación 3: Python Software para el aprendizaje de la programación EC 2. Presentación 3: Python
Software para el aprendizaje de la programación EC 2. Presentación 3: PythonUCC_Elearning
 
Programación básica en java
Programación básica en javaProgramación básica en java
Programación básica en javaJorge Tapia
 
Unidad III procedimientos
Unidad III procedimientosUnidad III procedimientos
Unidad III procedimientosaaronastorga4
 
4035426 ejercicios-resueltos-en-pascal
4035426 ejercicios-resueltos-en-pascal4035426 ejercicios-resueltos-en-pascal
4035426 ejercicios-resueltos-en-pascalLuis Fernando Jimenez
 
3 d cruz_borges_aime_b1examen
3 d cruz_borges_aime_b1examen3 d cruz_borges_aime_b1examen
3 d cruz_borges_aime_b1examenmichelleortegon2
 
Compiladores y analizador léxico
Compiladores y analizador léxicoCompiladores y analizador léxico
Compiladores y analizador léxicokatherine133
 
Arreglos Turbo C
Arreglos Turbo CArreglos Turbo C
Arreglos Turbo Ctacubomx
 

La actualidad más candente (14)

UNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓNUNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓN
 
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++
 
Interprete sencillo utilizando irony y c sharp
Interprete sencillo utilizando irony y c sharpInterprete sencillo utilizando irony y c sharp
Interprete sencillo utilizando irony y c sharp
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Software para el aprendizaje de la programación EC 2. Presentación 3: Python
 Software para el aprendizaje de la programación EC 2. Presentación 3: Python Software para el aprendizaje de la programación EC 2. Presentación 3: Python
Software para el aprendizaje de la programación EC 2. Presentación 3: Python
 
TALLER FLEX Y BISON
TALLER FLEX Y BISONTALLER FLEX Y BISON
TALLER FLEX Y BISON
 
Programación básica en java
Programación básica en javaProgramación básica en java
Programación básica en java
 
Unidad III procedimientos
Unidad III procedimientosUnidad III procedimientos
Unidad III procedimientos
 
Net reflector
Net reflectorNet reflector
Net reflector
 
4035426 ejercicios-resueltos-en-pascal
4035426 ejercicios-resueltos-en-pascal4035426 ejercicios-resueltos-en-pascal
4035426 ejercicios-resueltos-en-pascal
 
Flex bison
Flex bisonFlex bison
Flex bison
 
3 d cruz_borges_aime_b1examen
3 d cruz_borges_aime_b1examen3 d cruz_borges_aime_b1examen
3 d cruz_borges_aime_b1examen
 
Compiladores y analizador léxico
Compiladores y analizador léxicoCompiladores y analizador léxico
Compiladores y analizador léxico
 
Arreglos Turbo C
Arreglos Turbo CArreglos Turbo C
Arreglos Turbo C
 

Destacado

Destacado (6)

Clase3 - Identificadores y directivas en Delphi
Clase3 - Identificadores y directivas en DelphiClase3 - Identificadores y directivas en Delphi
Clase3 - Identificadores y directivas en Delphi
 
Semana 11 servidrores concurrentes ok
Semana 11 servidrores concurrentes okSemana 11 servidrores concurrentes ok
Semana 11 servidrores concurrentes ok
 
56874982 curso-de-delphi-7
56874982 curso-de-delphi-756874982 curso-de-delphi-7
56874982 curso-de-delphi-7
 
Clase4 - Operadores en Delphi
Clase4 - Operadores en DelphiClase4 - Operadores en Delphi
Clase4 - Operadores en Delphi
 
Elementos Básicos en Delphi 7
Elementos Básicos en Delphi 7Elementos Básicos en Delphi 7
Elementos Básicos en Delphi 7
 
Curso de delphi
Curso de delphiCurso de delphi
Curso de delphi
 

Similar a Clase2 t programas - unidades - workspaces - Delphi

investigacion unidad tres componentes y librerias
investigacion unidad tres componentes y libreriasinvestigacion unidad tres componentes y librerias
investigacion unidad tres componentes y libreriasAnel Sosa
 
Instrucciones básicas para c++
Instrucciones básicas para c++Instrucciones básicas para c++
Instrucciones básicas para c++Aquino1912
 
Lenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosLenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosDoris Aguagallo
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++juliancetis109
 
Tutorial de visual C++
Tutorial de visual C++Tutorial de visual C++
Tutorial de visual C++juliancetis109
 
Tutorial de visual_c_
Tutorial de visual_c_Tutorial de visual_c_
Tutorial de visual_c_oscar020615
 
411958729 curso-de-delphi-pdf
411958729 curso-de-delphi-pdf411958729 curso-de-delphi-pdf
411958729 curso-de-delphi-pdfxavazque2
 
Investigacion de Python.pptx
Investigacion de Python.pptxInvestigacion de Python.pptx
Investigacion de Python.pptxSelTrejo
 
Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1armando_cardenas
 
TEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptxTEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptxVctorEmmanuelEspinoM
 
03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdf03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdfRamonMartinespaa
 

Similar a Clase2 t programas - unidades - workspaces - Delphi (20)

investigacion unidad tres componentes y librerias
investigacion unidad tres componentes y libreriasinvestigacion unidad tres componentes y librerias
investigacion unidad tres componentes y librerias
 
Instrucciones básicas para c++
Instrucciones básicas para c++Instrucciones básicas para c++
Instrucciones básicas para c++
 
Lenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosLenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetos
 
Guia3 java
Guia3 javaGuia3 java
Guia3 java
 
Conceptos estructuras de datos
Conceptos estructuras de datosConceptos estructuras de datos
Conceptos estructuras de datos
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++
 
Tutorial de visual C++
Tutorial de visual C++Tutorial de visual C++
Tutorial de visual C++
 
Tutorial de visual_c_
Tutorial de visual_c_Tutorial de visual_c_
Tutorial de visual_c_
 
Ap01 java
Ap01 javaAp01 java
Ap01 java
 
Uso y creacion de unidades
Uso y creacion de unidadesUso y creacion de unidades
Uso y creacion de unidades
 
411958729 curso-de-delphi-pdf
411958729 curso-de-delphi-pdf411958729 curso-de-delphi-pdf
411958729 curso-de-delphi-pdf
 
Investigacion de Python.pptx
Investigacion de Python.pptxInvestigacion de Python.pptx
Investigacion de Python.pptx
 
Programas (Introducción)
Programas (Introducción)Programas (Introducción)
Programas (Introducción)
 
Tutorial de eclipse terminado yarker
Tutorial de eclipse terminado yarkerTutorial de eclipse terminado yarker
Tutorial de eclipse terminado yarker
 
Lp pract2006
Lp pract2006Lp pract2006
Lp pract2006
 
Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1
 
TEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptxTEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptx
 
Compilación de programas
Compilación de programasCompilación de programas
Compilación de programas
 
Curso netcsharp
Curso netcsharpCurso netcsharp
Curso netcsharp
 
03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdf03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdf
 

Más de Julio Antonio Huaman Chuque

Replicación de Base de Datos en PostGreSQL 9.4 en Sistemas Operativos de Win...
Replicación de  Base de Datos en PostGreSQL 9.4 en Sistemas Operativos de Win...Replicación de  Base de Datos en PostGreSQL 9.4 en Sistemas Operativos de Win...
Replicación de Base de Datos en PostGreSQL 9.4 en Sistemas Operativos de Win...Julio Antonio Huaman Chuque
 
Guía Aplicacion laserwayes_[GPON] [La Nueva Tendencia en Redes]
Guía Aplicacion laserwayes_[GPON] [La Nueva Tendencia en Redes]Guía Aplicacion laserwayes_[GPON] [La Nueva Tendencia en Redes]
Guía Aplicacion laserwayes_[GPON] [La Nueva Tendencia en Redes]Julio Antonio Huaman Chuque
 
Clase 02 - Base de Datos Estratégica [Inteligencia de Negocios en las Organiz...
Clase 02 - Base de Datos Estratégica [Inteligencia de Negocios en las Organiz...Clase 02 - Base de Datos Estratégica [Inteligencia de Negocios en las Organiz...
Clase 02 - Base de Datos Estratégica [Inteligencia de Negocios en las Organiz...Julio Antonio Huaman Chuque
 
Clase 01 - Introducción [Base de Datos Estratégica]
Clase 01 -  Introducción [Base de Datos Estratégica]Clase 01 -  Introducción [Base de Datos Estratégica]
Clase 01 - Introducción [Base de Datos Estratégica]Julio Antonio Huaman Chuque
 
Exploramos el origen de la republica aristocratica
Exploramos el origen de la republica aristocraticaExploramos el origen de la republica aristocratica
Exploramos el origen de la republica aristocraticaJulio Antonio Huaman Chuque
 

Más de Julio Antonio Huaman Chuque (18)

Replicación de Base de Datos en PostGreSQL 9.4 en Sistemas Operativos de Win...
Replicación de  Base de Datos en PostGreSQL 9.4 en Sistemas Operativos de Win...Replicación de  Base de Datos en PostGreSQL 9.4 en Sistemas Operativos de Win...
Replicación de Base de Datos en PostGreSQL 9.4 en Sistemas Operativos de Win...
 
Semana 10 servidores y clientes
Semana 10 servidores y clientesSemana 10 servidores y clientes
Semana 10 servidores y clientes
 
Eset smart sercurity_premium_10
Eset smart sercurity_premium_10Eset smart sercurity_premium_10
Eset smart sercurity_premium_10
 
Guía Aplicacion laserwayes_[GPON] [La Nueva Tendencia en Redes]
Guía Aplicacion laserwayes_[GPON] [La Nueva Tendencia en Redes]Guía Aplicacion laserwayes_[GPON] [La Nueva Tendencia en Redes]
Guía Aplicacion laserwayes_[GPON] [La Nueva Tendencia en Redes]
 
tcp_udp [Redes de Computadoras] [Semana 7]
tcp_udp [Redes de Computadoras] [Semana 7]tcp_udp [Redes de Computadoras] [Semana 7]
tcp_udp [Redes de Computadoras] [Semana 7]
 
api_de_socket [Explicación Completa]
api_de_socket [Explicación Completa]api_de_socket [Explicación Completa]
api_de_socket [Explicación Completa]
 
Clase 02 - Base de Datos Estratégica [Inteligencia de Negocios en las Organiz...
Clase 02 - Base de Datos Estratégica [Inteligencia de Negocios en las Organiz...Clase 02 - Base de Datos Estratégica [Inteligencia de Negocios en las Organiz...
Clase 02 - Base de Datos Estratégica [Inteligencia de Negocios en las Organiz...
 
Clase 01 - Introducción [Base de Datos Estratégica]
Clase 01 -  Introducción [Base de Datos Estratégica]Clase 01 -  Introducción [Base de Datos Estratégica]
Clase 01 - Introducción [Base de Datos Estratégica]
 
Semana 6 - Enrutamiento
Semana 6 - EnrutamientoSemana 6 - Enrutamiento
Semana 6 - Enrutamiento
 
Aplicacion_calculadora_vcl
Aplicacion_calculadora_vclAplicacion_calculadora_vcl
Aplicacion_calculadora_vcl
 
Seguridad de datos teoría
Seguridad de datos   teoríaSeguridad de datos   teoría
Seguridad de datos teoría
 
Exploramos el origen de la republica aristocratica
Exploramos el origen de la republica aristocraticaExploramos el origen de la republica aristocratica
Exploramos el origen de la republica aristocratica
 
Bizagi [Descripción funcional]
Bizagi [Descripción funcional]Bizagi [Descripción funcional]
Bizagi [Descripción funcional]
 
YUGIOH MANUAL
YUGIOH MANUALYUGIOH MANUAL
YUGIOH MANUAL
 
Aplicación de las derivadas en la economia
Aplicación de las derivadas en la  economiaAplicación de las derivadas en la  economia
Aplicación de las derivadas en la economia
 
Modelo de préstamo de libros
Modelo de préstamo de librosModelo de préstamo de libros
Modelo de préstamo de libros
 
Diagramas causales
Diagramas causalesDiagramas causales
Diagramas causales
 
subsistemas
subsistemassubsistemas
subsistemas
 

Clase2 t programas - unidades - workspaces - Delphi

  • 1. 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. 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. 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. 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. 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. 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.