PDFMAILER.COM Print and send PDF files as Emails with any application, ad-sponsored and free of charge www.pdfmailer.com DELPHI DELPHI c04 “Objetos en Delphi” Pablo Roncagliolo prb@2005 1 AÑO LENGUAJE INVENTOR DESCRIPCION 1900s 1950 1951 1952 1956 1956 1958 1960 1961 1961 1960 1964 1964 1966 1967 1970s 1972 1980s 1980 Bool primer lenguaje lenguaje ensamblador fue el primer compilador compilador muy rudimentario sistema de TRAducción de FORmulas matemáticas Compilador BINARIO ASM (ensamblador) A-0 AUTOCODE FORTRAN COBOL ALGOL 58 LISP FORTRAN IV COBOL 61 Extendido ALGOL 60 Revisado PASCAL BASIC FORTRAN 66 SIMULA 67 GW-BASIC C SMALLTALK/V C con clases Grace Hopper Alick E. Glennie IBM IBM Interprete orientado a la Inteligencia Artificial sistema de TRAducción de FORmulas matemáticas Niklaus Wirth Universidad de Dartmouth (california) IBM programacion estructurada Beginners All Purpose Symbolic Instruction Code sistema de TRAducción de FORmulas matemáticas Laboratorios Bell Digitalk Laboratorios Bell antiguo y clasico BASIC lenguaje con tipos pequeño y rapido lenguaje con clases prb@2005 2 DELPHI AÑO LENGUAJE INVENTOR 1981 1982 1984 1985 1985 1989 1990s 1990s 1990 1993 1993 1990s 1990s 1990s 1991 1995 1995 1995 1995 1995 2001 Ministerio Japonés de Comercio InternacionalLenguaje e Industria estandar (MITI)para la Inteligencia Artificial Ministerio de Defensa de los EE.UU lenguaje muy seguro AT&T Bell Laboratories (Bjarne Stroustrup) compilador compilador para bases de datos Microsoft® compilador de BASIC interprete tipo QBASIC shareware PROLOG ADA C++ CLIPPER QuickBASIC ASIC v5.0 VISUAL C++ VISUAL BASICScript HTML XML SGML WML ASP PHP VISUAL BASIC JAVA CLIPPER 5.01 GNAT ADA95 FORTRAN 95 DELPHI prb@2005 VISUAL BASIC .NET DESCRIPCION Microsoft® Tim Berners-Lee C. M. Sperberg-McQueen Charles F. Goldfarb lenguaje de script para internet para internet para internet para internet para internet para internet Microsoft® Microsoft® Sun Microsystems Kernighan & Ritchie Ministerio de Defensa de los EE.UU IBM para internet y proposito general compilador para bases de datos lenguaje muy seguro sistema de TRAducción de FORmulas matemáticas Microsoft® La evolución de Visual Basic 3 DELPHI prb@2005 4 P.O.O. Problemas que resuelve: lRAD: Desarrollo Rápido de Aplicaciones. § § § § lDelphi: Delphi: Utiliza el lenguaje Object Pascal. Actualmente una de las áreas má más candentes en la industria y en el ámbito acadé académico es la orientació orientación a objetos. La orientació orientación a objetos promete mejoras de amplio alcance en la forma de diseñ diseño, desarrollo y mantenimiento del software ofreciendo una solució solución a largo plazo a los problemas y preocupaciones que han existido desde el comienzo comienzo en el desarrollo de software: la falta de portabilidad del có código y reusabilidad, reusabilidad, có código que es difí difícil de modificar, ciclos de desarrollo largos y té técnicas de codificació codificación no intuitivas. lPOO: Programación Orientada a Objetos (OOP en Inglés) prb@2005 l § Portabilidad Reusabilidad Modificación de Código (=>herencias) Tiempos de Programación Codificación Intuitiva 5 prb@2005 6 1 PDFMAILER.COM Print and send PDF files as Emails with any application, ad-sponsored and free of charge www.pdfmailer.com DELPHI P.O.O. Característica de un Lenguaje P.O.O: § § § OBJETO: Basado en Objetos Utiliza Clases Herencia un conjunto complejo de datos y programas que poseen estructura y forman parte de una organizació organización l Un lenguaje orientado a objetos ataca estos problemas. Tiene tres tres caracterí características básicas: debe estar basado en objetos, basado en clases y capaz de tener herencia de clases. Muchos lenguajes cumplen uno o dos de estos puntos; muchos menos cumplen los tres. La barrera má más difí difícil de sortear es usualmente la herencia. El concepto de programació programación orientada a objetos (OOP) no es nuevo, lenguajes clá clásicos como SmallTalk se basan en ella. Dado que la OOP. se basa en la idea natural de de la existencia de un mundo lleno de objetos y que la resolució resolución del problema se realiza en té términos de objetos, un lenguaje se dice que está está basado en objetos si soporta objetos como una caracterí característica fundamental del mismo. Esta definició definición especifica varias propiedades importantes de los objetos. En primer primer lugar, un objeto no es un dato simple, sino que contiene en su interior interior cierto nú número de componentes bien estructurados. En segundo lugar, cada objeto no es un ente aislado, sino que forma parte de una organizació organización jerá jerárquica o de otro tipo. prb@2005 prb@2005 7 P.O.O. 8 P.O.O. OBJETO: OBJETO: silla § § § § Relaciones Propiedades Métodos § § Relaciones: • Sobre el “Piso” Piso” • En la habitació habitación Cada uno de estos componentes desempeñ desempeña un papel totalmente independiente: • Las relaciones permiten que el objeto se inserte en la organizaci organización y está están formadas esencialmente por punteros a otros objetos. • Las propiedades distinguen un objeto determinado de los restantes restantes que forman parte de la misma organizació organización y tiene valores que dependen de la propiedad de que se trate. Las propiedades de un objeto pueden ser heredadas a sus descendientes descendientes en la organizació organización. • Los mé métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estará estarán incorporados en forma de programas (có (código) que el objeto es capaz de ejecutar y que tambié también pone a disposició disposición de sus descendientes a travé través de la herencia. prb@2005 9 P.O.O. Propiedades: • Nº de patas = 4 • Material = madera • Color = café café • Estilo = rú rústico Métodos: • Sentarse en la silla • Pararse de la silla • Mover la silla prb@2005 10 P.O.O. Estructura de un OBJETO: OBJETO: § § Encapsulamiento Ocultació Ocultación § Como hemos visto, cada objeto es una estructura compleja en cuyo interior hay datos y programas, todos ellos relacionados entre sí sí, como si estuvieran encerrados conjuntamente en una cá ), es una de las caracterí cápsula. Esta propiedad (encapsulamiento (encapsulamiento), características fundamentales en la OOP. Los objetos son inaccesibles, e impiden que otros objetos, los usuarios, usuarios, o incluso los programadores conozcan có cómo está está distribuí distribuída la informació información o qué qué informació información hay disponible. Esta propiedad de los objetos se denomina ocultació ocultación de la informació información. Esto no quiere decir, sin embargo, que sea imposible conocer lo necesario respecto a un objeto y a lo que contiene. Si así así fuera no se podrí podría hacer gran cosa con él. Lo que sucede es que las peticiones de informació información a un objeto. deben realizarse a travé través de mensajes dirigidos a él, con la orden de realizar la operació operación pertinente. La respuesta a estas ordenes será será la informació información requerida, siempre que el objeto considere que quien enví envía el mensaje está está autorizado para obtenerla. El hecho de que cada objeto sea una cá cápsula facilita enormemente que un objeto determinado pueda ser transportado a otro punto de la organizació organización, o incluso a otra organizació organización totalmente diferente que precise de él. prb@2005 Relaciones Propiedades Métodos 11 § § prb@2005 Relaciones § Jerá Jerárquicas (Obj. PadrePadre-Hijos) § Semá Semánticas (Clasificació (Clasificación de objetos) Propiedades § Propias § Heredadas (de Obj. Padres) Métodos § Propios § Heredados 12 2 PDFMAILER.COM Print and send PDF files as Emails with any application, ad-sponsored and free of charge www.pdfmailer.com P.O.O. DELPHI: “visual pascal” Ej. de OBJETOS en Delphi: Delphi: l Button § § § l Relació Relación § ClassInfo (pointer) pointer) Propiedad § Caption § Font Método § OnClick Edit § § § prb@2005 Relació Relación § ClassInfo (pointer) pointer) Propiedad § Text Método § OnChange 13 Objetos Básicos prb@2005 14 FORM Label El objeto TForm Label. Label.caption Label. Label.font • La Grilla • Seleccionar Objetos • PopupMenu Edit Edit. Edit.text Edit. Edit.font • • • “Tiempo de Diseño” • “Tiempo de Ejecución” • El ícono (Project | Options) Options) Button Button. Button.caption Ejemplos en Delphi prb@2005 15 FORM prb@2005 16 FORM Propiedad Descripción Valores Eventos Descripción Caption Título String... String... OnActivete Name Nombre Form1 Cada vez que se selecciona el form OnCreate BorderStyle Borde Single, Sizeable, Sizeable, Tool Sólo cuando comenzó el programa el form OnClose Cuando se cierra el form OnKeyPress Cuando se presiona una tecla OnShow Cuando se muestra el form OnClick Cuando se presiona el botón del mouse sobre el form Color Color WindowState Estado prb@2005 “Alinear” “Bring to Front” Front” y “Send “Send to Back” clRed, clRed, clBlue, clBlue,clGreen ... Normal, maximizado, minimizado 17 prb@2005 18 3 PDFMAILER.COM Print and send PDF files as Emails with any application, ad-sponsored and free of charge www.pdfmailer.com MULTIPLES FORM MULTIPLES FORM Para crear un nuevo Form Para activar un Form en “tiempo de ejecución”: xxx.Show Se crear un nuevo Unit Donde xxx es el nombre del Form Refernecias “cruzadas” prb@2005 19 MULTIPLES FORM prb@2005 20 EJERCICIO PROPUESTO Para cerrar un Form en “tiempo de ejecución”: Muchas aplicaciones mantienen la tradición de utilizar una ventana denominada “acerca de” (about ), (about), para incluir el nombre de los autores, empresa desarrolladora, versión del software, logo, logo, fecha de creación etc. Realice un programa básico que posea una ventana “acerca de” que pueda ser controlada desde un menú. Close; Close; Mediante refernecias “cruzadas”: xxx.close xxx.close;; Donde xxx es el nombre del Form que se desea cerrar prb@2005 21 GUARDAR • • IMAGE • Picture: Picture: carga imágenes BMP, JPG y otras • Autosize: Autosize: ajusta el tamaño del objeto al de la imagen. • Stretch: Stretch: permite ajustar el tamaño de la imagen. • Transparent: Transparent: permite transparentar las partes no coloreadas de la imagen. No utilizar nombre extraños Crear un directorio para cada proyecto Utilizar siempre el botón “save all” all” Tipos de archivos... Abrir siempre el .dpr .dpr prb@2005 22 OBJETOS ESPECIALES Guardar todo “save all” all” • prb@2005 23 SHAPE • Brush | Color: Color: define el color de relleno • PEN | Color: Color: define color del borde • Shape: Shape: tipo de figura prb@2005 (círculo, rectángulo, etc.) 24 4 PDFMAILER.COM Print and send PDF files as Emails with any application, ad-sponsored and free of charge www.pdfmailer.com OBJETOS ESPECIALES OBJETOS ESPECIALES SpeedButton • Glyph: Glyph: permite asignar una imagen al botón. Imágenes.... RichEdit Editor de Texto • Font • Align: Align: permite autoajustar el objeto según el tamaño del Form (client, client, top, top, left, left, none) none) Toolbar Permite crear una barra de herramientas (botones) prb@2005 25 TIPs prb@2005 TIPs • El tamaño de los objetos y los forms se mide en pixels (puntos) La pantalla de un computador posee varias posibles resoluciones Ancho 640 pixel de ancho por 480 pixel de alto (width) width) • • • • • 800 x 600 1024 x 780 Etc... • Cada objeto en el form se posiciona según las propiedades Left, Left, Top. Top. top x,y Alto (height) height) Alto (height) height) y prb@2005 800,600 27 Gráficos (Chart) • • • Ancho (width (width)) Left 0,0 x • • 26 prb@2005 Grilla (StringGrid) Tipo: línea, barras, pie Axis: Axis: • Left • Bottom Title 3D o 2D Gradiente Series... • Series1.Add (y,’’,clred clred)) Series1.Add(y,’’, • Series1.AddXY (x,y,’’,clteecolor clteecolor)) Series1.AddXY(x,y,’’, • Series1.AddBar (valor,’’,clteecolor clteecolor)) Series1.AddBar(valor,’’, • Series1.clear Series1.clear • Series1.count Series1.count prb@2005 28 Grid1.Cells [0,0] Grid1.Cells[0,0] • • • • • • • 29 F i l a s Columnas Grid1.Cells [col,fil fil]] Grid1.Cells[col, Grid1.colcount Grid1.colcount Grid1.rowcount Grid1.rowcount Grid1.Cells [3,1] Grid1.Cells[3,1] Grid1.fixedCols Grid1.fixedCols Grid1.fixedRows Grid1.fixedRows Grid1.Options true Grid1.Options..goEditing:= goEditing:=true prb@2005 30 5 PDFMAILER.COM Print and send PDF files as Emails with any application, ad-sponsored and free of charge www.pdfmailer.com Reloj (Timer) Intervalo en milisegundos • • Timer1.enabled := true o false Timer1.enabled:= Timer1.interval := 200; Timer1.interval:= prb@2005 31 6