Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Delphi es un entorno de desarrollo rpido de software diseado para la programacin de propsito general con nfasis en la programacin visual. Se utiliza una versin moderna de Pascal llamada Object Pascal. Es producido comercialmente por la empresa norteamericana BORLAND. En sus diferentes variantes, permite producir archivos ejecutables para Windows, GNU/Linux y la plataforma .NET
Tabla de contenidos
3 4 4 5 6 7
Componentes La Biblioteca en tiempo de ejecucin Eventos Base de Datos Desarrollo visual Entorno Integrado de Desarrollo (EID)
o
1. Uso y variantes
El principal uso de Delphi es para el desarrollo de aplicaciones visuales y de bases de datos cliente-servidor y multicapas. Debido a que es una herramienta de propsito mltiple, se usa tambin para proyectos de casi cualquier tipo, incluyendo aplicaciones de consola, servicios del sistema operativo Delphi inicialmente slo produca ejecutables binarios para Windows (Win16 y Win32). En la actualidad da ms posibilidades:
Existe una versin de Delphi para sistemas Unix y Linux, denominada Kylix (de la cual existe una versin gratuita, aunque limitada).
2. El lenguaje de programacin
Delphi est basado en una versin moderna de Pascal, llamada Object Pascal, que amplia las posibilidades de su lenguaje fuente:
Soporte para la programacin orientada a objetos, tambin existente desde Turbo Pascal 5, pero mucho mas avanzada, en cuanto a: o Objetos en s: clases, instancias, etc. o Encapsulacin: declarando partes privadas, protegidas, pblicas o Propiedades : concepto nuevo que luego han adaptado muchos otros lenguajes. o Herencia simple y Polimorfismo. Soporte para excepciones, mejorando sensiblemente el manejo de errores de usuario y del sistema. Programacin manejada por eventos (event-driven), posible gracias a las ya mencionadas propiedades de los objetos.
La mayora de los lenguajes de programacin modernos soportan programacin orientada a objetos (OOP). Los lenguajes OOP se basan en tres conceptos fundamentales: La Encapsulacin. La herencia. El polimorfismo. En programacin orientada a objetos, se denomina Encapsulacin al ocultamiento del estado, es decir, de los datos, de un objeto de manera que slo se puede cambiar mediante las operaciones definidas para ese objeto. De esta forma el usuario de la clase puede obviar la implementacin de los mtodos y propiedades para concentrarse slo en cmo usarlos. Por otro lado se evita que el usuario pueda cambiar su estado de maneras imprevistas e incontroladas. El ENCAPSULADO tambin indica que solo es revisado por un usuario externo. Pero este usuario solo puede revisar o mirar, ciertas partes de la clase. Como ejemplo un circuito electrnico en una caja (ocultado). El usuario solo accede a ciertas partes del circuito, mas las partes del circuito internas s pueden compartir informacin entre el mismo encapsulado. Existen tres principales formas de encapsulado: 1) estndar 2) abierto 3) cerrado Una clase puede tener cualquier cantidad de datos. Sin embargo, para conseguir una buena tcnica orientada a objetos, los datos deberan estar ocultos o encapsulados dentro de la clase que los usa. Por ejemplo: cuando se accede a una fecha, no tiene sentido cambiar slo el valor del da directamente. De hecho, si se cambia el valor del da podra resultar una fecha no vlida, como el 30 de febrero, por ejemplo. Si se usan mtodos para acceder a la representacin interna de un objeto, se limita el riesgo de generar situaciones errneas, puesto que los mtodos pueden verificar si la fecha es vlida y negarse a modificar el nuevo valor si no lo es. La herencia es uno de los mecanismos de la programacin orientada a objetos, por medio de la cual una clase se deriva de otra de manera que extiende su funcionalidad. Una de sus funciones ms importantes es la de proveer Polimorfismo y late binding .
Tipos de herencia
Herencia sencilla: Un objeto puede extender las caractersticas de otro objeto y de ningn otro, es decir, solo puede tener un padre. Herencia mltiple: Un objeto puede extender las caractersticas de uno o ms objetos, es decir, puede tener varios padres. En este aspecto hay discrepancias entre los diseadores de lenguajes. Algunos de ellos han preferido no admitir la herencia mltiple por las posibles coincidencias en nombres de mtodos o datos miembros. Por ejemplo C++ admite herencia mltiple, Java y Ada slo herencia simple.
En programacin orientada a objetos se denomina polimorfismo a la capacidad del cdigo de un programa para ser utilizado con diferentes tipos de datos u objetos. Tambin se puede aplicar a la propiedad que poseen algunas operaciones de tener un comportamiento diferente dependiendo del objeto (o tipo de dato) sobre el que se aplican. El concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos. As nacen los conceptos de funciones polimrficas y tipos polimrficos . Las primeras son aquellas funciones que pueden evaluarse y ser aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimrficos , son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no est especificado.
Polimorfismo dinmico: es aqul en el que el cdigo no incluye ningn tipo de especificacin sobre el tipo de datos sobre el que se trabaja. As, puede ser utilizado a todo tipo de datos compatible. Polimorfismo esttico: es aqul en el que los tipos a los que se aplica el polimorfismo deben ser explicitados y declarados uno por uno antes de poder ser utilizados.
Manejo de excepciones
El Manejo de excepciones es una estructura de control de los lenguajes de programacin diseada para manejar condiciones anormales que pueden ser tratadas por el mismo programa que se desarrolla. Por ejemplo, un programa puede admitir como aceptable cierto nmero de errores en el formato de los datos y continuar su proceso de manera de producir el mejor resultado posible en lugar de producir una salida aparatosa con condiciones de error probablemente incomprensibles para el usuario. Muchas veces la accin asociada a una excepcin es simplemente producir un mensaje informativo y terminar, otras veces, es slo indicacin de la necesidad de un cambio en la estrategia de resolucin del problema. Algunos lenguajes de programacin, por ejemplo Lisp, Ada. C++, Delphi, Objective C, Java, Eiffel y Ocaml incluyen soporte para el manejo de excepciones. En esos lenguajes, al producirse una excepcin se desciende en la pila de ejecucin hasta encontrar un manejador para la excepcin, el cual toma el control en ese momento. Ejemplo de manejo de excepcin en Delphi:
Procedure TForm1.Button1Click(Sender : TObject); Begin try try a := b / c; except on e:EZeroDivide do // Manejo de la excepcin Divisin por cero. on e:Exception do // Manejo de una excepcin "genrica". end; finally // Este cdigo siempre se ejecuta, independientemente de si ocurre o no una excepcin. end; end;
Otras caractersticas
El lenguaje Delphi es una extensin del clsico lenguaje Pascal orientado a objetos, que Borland ha liderado durante muchos aos con sus compiladores Turbo Pascal. La sintaxis del lenguaje Pascal suele considerarse bastante explcita y ms legible que, por ejemplo el lenguaje C. Su extensin orientada a objetos sigue el mismo enfoque, ofreciendo la misma potencia de los recientes lenguajes Orientados a Objetos (OOP), desde Java a C#. Incluso el ncleo del lenguaje est sujeto a cambios continuos, pero algunos de ellos afectarn a las necesidades diarias de programacin. En Delphi 6, por ejemplo, Borland aadi el soporte para varias caractersticas ms o menos relacionadas con el desarrollo de Kylix, la versin para Linux de Delphi Por otro lado, Delphi 7 aade tres advertencias del compilador adicionales: tipo inseguro, cdigo inseguro, y conversin insegura. Estas advertencias se emiten en caso de operaciones que no se puedan utilizar para generar cdigo gestionado seguro sobre la plataforma Microsoft .NET. En algunos lenguajes orientados a objetos, al declarar una variable de un tipo clase, se crea una instancia de dicha clase. En Delphi, en cambio, se basa en un modelo de referencia a objetos. La idea es que una variable de un tipo de clase, no mantiene el valor del objeto. En lugar de eso, contiene una referencia, o un puntero, para indicar la posicin de memoria en la que se ha almacenado el objeto. El nico problema de esta tcnica es que cuando se declara una variable, no se crea un objeto en memoria (lo que es inconsistente con el resto de variables, confundiendo a los nuevos usuarios de Delphi); slo se reserva la posicin de memoria para una referencia al objeto. Las instancias de los objetos habrn de crearse manualmente, al menos para los objetos de las clases que se definan; todo esto mediante la aplicacin de un constructor a su clase.
Objetos y memoria
La administracin de memoria en Delphi est sujeta a tres normas, al menos si se permite que el sistema trabaje en armona sin violaciones de acceso y sin consumir memoria innecesaria: Todo objeto ha de ser creado antes de que pueda usarse. Todo objeto ha de ser destruido tras haberlo utilizado. Todo objeto ha de ser destruido slo una vez.
3. Componentes
Delphi introdujo la idea del uso de componentes, que son piezas reutilizables de cdigo (clases) que pueden interactuar con el EID en tiempo de diseo y desempear una funcin especfica en tiempo de ejecucin. Desde un enfoque ms tcnico, se catalogan como componentes todos aquellos objetos que heredan desde la clase TComponent. Una gran parte de los componentes disponibles para Delphi son controles (derivados de TControl), que encapsulan los elementos de interaccin con el usuario (botones, mens, barras de desplazamiento, etc). Delphi incluye una biblioteca de clases bien diseada denominada VCL (Visual Component Library , Biblioteca de Componentes Visuales) y, en sus versiones 6 y 7, una jerarqua multiplataforma paralela denominada CLX. sta tambin se incluye en Kylix. Estas jerarquas de objetos incluyen componentes visuales y no visuales, tales como los pertenecientes a la categora de acceso a datos, con los que puede establecerse conexiones de forma nativa o mediante capas intermedias (como ADO, BDE u ODBC) a la mayora de las bases de datos relacionales existentes en el mercado. La VCL tambin est disponible para el desarrollo en .NET. Adems de poder utilizar en un programa estos componentes estndar (botones, grillas, conjuntos de datos, etc.), es posible crear nuevos componentes o mejorar los ya existentes, extendiendo la funcionalidad de la herramienta. En Internet existe un gran nmero de componentes, tanto gratuitos como comerciales, disponibles para los proyectos a los que no les basten los que vienen ya con la herramienta.
En las nuevas versiones de Delphi, la RTL posee una nueva estructura y varias unidades nuevas. Borland aadi nuevas unidades ya que tambin aadi numerosas funciones nuevas. En la mayora de los casos, las funciones existentes se encuentran en las unidades en las que solan estar, pero las nuevas funciones aparecen ahora en unidades especficas. Hasta la versin 5, la biblioteca de clases de Delphi era conocida como VCL, que significa Biblioteca de Componentes Visuales. Se trata de una biblioteca de componentes que se proyecta sobre la API de Windows. Kylix, la versin de Delphi para Linux, introdujo una nueva biblioteca de componentes, denominada CLX, pronunciando clics, y que significa Biblioteca de Componentes para Plataforma X o Multiplataforma. Delphi 6 fue la primera versin en incluir ambas bibliotecas. Para los componentes visuales, las dos bibliotecas resultan alternativas. Sin embargo, las clases principales y las partes de la base de datos e internet de las dos bibliotecas son bsicamente compartidas. La VCL estaba considerada como una gran biblioteca nica, aunque los programadores solan referirse a diferentes partes de ella (componentes, controles, componentes no visuales, conjuntos de datos, controles data-aware, componentes de internet, etc). CLX presenta una divisin en cuatro partes: BaseCLX, VisualCLX, DataCLX y NetCLX. En las versiones ms recientes de Delphi, esta distincin se ve resaltada por el hecho de que los componentes y las clases centrales no visuales de la biblioteca forman parte del nuevo paquete RTL, que utilizan tanto la VCL como la CLX. An ms utilizar este paquete en aplicaciones no visuales (por ejemplo: en programas de servidor Web) permite reducir considerablemente el tamao de los archivos que se van a desplegar y cargar en memoria.
5. Eventos
Delphi permite de manera sencilla ejecutar trozos de cdigo en respuesta a acciones o eventos (sucesos) que ocurren durante el tiempo que un programa se ejecuta. Por ejemplo, cuando se presiona un botn, la VCL captura la notificacin estndar de Windows, y detecta si hay algn mtodo asociado al evento OnClick del botn. Si lo hay, manda ejecutar dicho mtodo.
Los eventos pueden generarse debido a la recepcin de seales desde elementos de hardware como el ratn o el teclado, o pueden producirse al realizar alguna operacin sobre un elemento de la propia aplicacin (como abrir un conjunto de datos, que genera los eventos BeforeOpen/AfterOpen ). La VCL ha demostrado estar bien diseada y el control que se tiene a travs de los eventos de la misma es suficiente para la gran mayora de aplicaciones. Otros eventos los produce el sistema, en respuesta a una llamada de mtodo o un cambio de una de las propiedades del componente. Tcnicamente, la mayora de los eventos de Delphi se desencadenan al recibir el mensaje correspondiente del sistema operativo, aunque no existe un mensaje individual para cada evento. Los eventos de Delphi suelen ser de mayor nivel que los mensajes del sistema operativo y Delphi ofrece una serie de mensajes adicionales entre componentes.
6. Base de Datos
El soporte de Delphi para aplicaciones de bases de datos es una de las caractersticas clave del entorno de programacin. Maneja casi todo tipo de base de datos, desde bases de datos planas (dBase, Foxpro, Paradox) a bases de datos SQL (Oracle, MS-SQL, Interbase, FireBird, MySQL, etc). El mtodo de conexin puede ser por nativo por medio de D B Express, ADO, DBE y/o ODBC). Muchos programadores pasan la mayor parte de su tiempo escribiendo cdigo de acceso a los datos, que necesita ser la parte ms robusta de una aplicacin de bases de datos. En las primeras versiones de Delphi, la nica tecnologa disponible para acceder a los datos de bases de datos era utilizar el Borland Database Engine (BDE). Desde Delphi 3, la parte de la VCL relacionada con el acceso a bases de datos se ha reestructurado para abrirla ms a diversas soluciones de acceso a bases de datos entre las que en la actualidad se incluye ADO, componentes InterBase nativos, la biblioteca dbExpress y BDE. Muchas terceras partes ofrecen mecanismos alternativos de acceso a bases de datos para una amplia variedad de formatos de datos (aunque algunos no sean accesibles como componentes de Borland) y ofrecen an as una solucin integrada con la VCL de Delphi.
7. Desarrollo visual
Como entorno visual, la programacin en Delphi consiste en disear los formularios que componen al programa colocando todos sus controles (botones, etiquetas, campos de texto, etc.) en las posiciones deseadas, normalmente usando un ratn. Luego se asocia cdigo a los eventos de dichos controles y tambin se pueden crear mdulos de datos, que regularmente contienen los componentes de acceso a datos y las reglas de negocio de una aplicacin. Como hemos podido apreciar, Delphi dispone de dos bibliotecas de clases visuales: la biblioteca multiplataforma CLX y la tradicional biblioteca de Windows VCL. Existen muchas diferencias, incluso en el uso de la RTL y de las clases de la biblioteca de cdigo, entre desarrollar programas para Windows o con un enfoque multiplataforma y estas diferencias resultan ms notables en la interfaz del usuario. La parte visual de la VCL es un envoltorio de la API de Windows. Contiene envoltorios de controles originarios de Windows (como botones y los cuadros de edicin), de controles comunes (como vistas en rbol y vistas en lista), adems de una serie de controles originarios de Delphi ligados al concepto Windows de ventana. VisualCLX, la parte visual de CLX, es un envoltorio de la biblioteca Qt. Contiene envoltorios nativos de Qt, que van de controles bsicos a controles avanzados, muy similares a los controles estndar de Windows.
El modo ms obvio para cdigo en un entorno visual implica responder a eventos, comenzando por los eventos enlazados con las operaciones realizadas por los usuarios del programa como hacer clic sobre un botn o escoger un elemento de un cuadro de lista. Puede usarse el mismo enfoque para manejar eventos internos, como los eventos que implican cambios en bases de datos o notificaciones del sistema operativo. Por primera vez en Delphi 6 apareci un importante cambio. El IDE permite ahora utilizar dos bibliotecas de componentes distintas: la VCL (Visual Componente Library, Biblioteca de componentes visuales) y la CLX (Component Library for Cross-Platfor, Biblioteca de componentes para multiplataforma). Cuando creamos un nuevo proyecto, sencillamente escogemos cual de las dos bibliotecas queremos emplear.
EXTENSIN
MOMENTO DE CREACION
.BPG
.BPL
Archivos de mapas de bits, iconos y cursores: archivos estndar de Windows usados para almacenar imgenes de mapas Grupo de proyectos Borland: archivos que usa el nuevo Proyect Manager. Biblioteca de paquetes Borland: una DLL que contiene componentes VCL que usa el entorno Delphi en tiempo
Normalmente no, pero pueden ser necesarios en tiempo de ejecucin y para una posterior modificacin Necesario para compilar de nuevo todos los proyectos del grupo a la vez. Se distribuirn a otros desarrolladores Delphi y opcionalmente a usuarios finales
Desarrollo
Compilacin: Enlace
.CAB
.CFG
.DCP
de diseo o las aplicaciones en tiempo de ejecucin Compilacin Formato de Archivo comprimido de Microsoft Cabinet usado por Delphi para el despliegue Web. Desarrollo Archivo de configuracin con las opciones de proyecto. Paquete Compilacin componentes de Delphi: un paquete con informacin de smbolos para el cdigo compilado en el paquete
Distribuido a usuarios
Necesario solo si se han definido opciones especiales de compilacin Necesario cuando usamos paquetes, Slo se distribuye a otros desarrolladores junto con los archivos BDPL.
9. Depurador integrado
Es una potente caracterstica que nos permite establecer puntos de ruptura (breakpoints), la ejecucin paso a paso de un programa, el seguimiento de los valores de las variables y de la pila de ejecucin, as como la evaluacin de expresiones con datos de la ejecucin del programa. Con su uso, un programador experimentado puede detectar y resolver errores lgicos o semnticos en el funcionamiento de un aplicativo desarrollado con Delphi. En las ediciones Client/Server y Enterprise se aade la opcin de depuracin a programas corriendo en equipos remotos (remote debugging ), lo que posibilita el uso de todas las caractersticas del depurador con un programa ejecutndose en su entorno normal de trabajo y no en el ordenador del programador (en donde muchas veces no ocurren los errores). Cuando se ejecuta un programa en el IDE de Delphi, generalmente se arranca en el depurador integrado. Se puede entre otras opciones ya mencionadas, explorar sus detalles internos; como el cdigo ensamblador que se ejecuta y el uso de los registros de la CPU.