lecciÓn 22

24
22. Compartiendo Objetos y Código LECCION 22 COMPARTIENDO OBJETOS Y CÓDIGO El Form Builder Developer/2000 incluye algunas características específicas para reusar objetos y código. En esta lección aprenderá como compartir objetos y código entre módulos de forma usando la librería de objetos. También aprenderá como compartir código usando la librería de PL/SQL. Objetivos Después de completar esta lección, usted podrá realizar las siguientes tareas: Describir los distintos métodos para reusar código y objetos Heredar propiedades de clases de propiedades Agrupar objetos relacionados para reusar Explicar los símbolos de herencia en la paleta de propiedades Reusar objetos de una librería de objetos Reusar código PL/SQL 1-24 Developer 6i: Build Forms I

Upload: lupita0816

Post on 21-Dec-2015

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LECCIÓN 22

22. Compartiendo Objetos y Código

LECCION 22

COMPARTIENDO OBJETOS Y CÓDIGOEl Form Builder Developer/2000 incluye algunas características específicas para reusar objetos y código. En esta lección aprenderá como compartir objetos y código entre módulos de forma usando la librería de objetos. También aprenderá como compartir código usando la librería de PL/SQL.

ObjetivosDespués de completar esta lección, usted podrá realizar las siguientes tareas: Describir los distintos métodos para reusar código y objetos Heredar propiedades de clases de propiedades Agrupar objetos relacionados para reusar Explicar los símbolos de herencia en la paleta de propiedades Reusar objetos de una librería de objetos Reusar código PL/SQL

1-17 Developer 6i: Build Forms I

Page 2: LECCIÓN 22

22. Compartiendo Objetos y Código

OBJETOS REUSABLES Y VISIÓN DE CÓDIGOCuando esta desarrollando aplicaciones puede compartir y reusar objetos y código donde sea posible en orden para: Incrementar productividad Disminuir mantenimiento Incrementar modularidad Mantener standards

Incrementar productividadUsted puede desarrollar aplicaciones mucho más efectiva y eficientemente si no trata de “reinventar la rueda” cada vez que escribe una pieza de código.Compartiendo y reusando frecuentemente los objetos y códigos usados, puede reducir tiempo de desarrollo e incrementar productividad.

Disminuir mantenimientoCreando aplicaciones que usen o llamen el mismo objeto o pieza de código en distintos momentos, puede disminuir tiempo de mantenimiento.

Incrementar modularidadCompartiendo y reusando código incrementa la modularidad de sus aplicaciones.

Mantener estandaresPuede mantener estandares reusando objetos y código. Si usted crea un objeto una vez y lo copia otra vez y otra vez, no corre el peligro de introducir menores cambios. En realidad, puede crear un grupo de objetos estandar y algunas piezas de código estandar y usarlo como punto de inicio para todos sus nuevos módulos de forma.

2-17 Developer 6i: Build Forms I

Page 3: LECCIÓN 22

22. Compartiendo Objetos y Código

CLASE DE PROPIEDAD¿Qué es una clase de propiedad?Una clase de propiedad es un objeto llamado que contiene una lista de propiedades y sus escenarios.

¿Por qué usar clases de propiedad?Use clases de propiedad para incrementar productividad con marcos estandar o valores usados frecuentemente para propiedades comunes y asociando estos con distintos objetos form builder. Una clase de propiedades lo deja definir propiedades estandar no sólo para un objeto particular sino varios al mismo tiempo. Esto resulta en una mayor productividad, porque elimina el tiempo perdido en repeticiones de colocar propiedades idénticas a distintos objetos.

3-17 Developer 6i: Build Forms I

Page 4: LECCIÓN 22

22. Compartiendo Objetos y Código

CREANDO UNA CLASE DE PROPIEDADCuando crea una clase de propiedad, tiene todas las propiedades para cada objeto Form Builder disponible. Usted elige las propiedades y sus valores. Puede crear una clase de propiedad de dos maneras distintas: Use el botón Crear en el navegador de objetos Use el botón Crear Clase de Propiedad

Pasos para crear una clase de propiedad desde el navegador de objetos1 Oprima el nodo clase de propiedad2 Oprima crear. Una nueva entrada de clase de propiedad se despliega3 Agregue las propiedades requeridas y sus valores usando el botón agregar

propiedad en la paleta de propiedades

Pasos para crear una clase de propiedad desde la paleta de propiedades1 En el navegador de objetos, oprima el objeto cuyas propiedades desea

copiar dentro de la clase de propiedad2 Diríjase a la paleta de propiedades, seleccione las propiedades que desea

copiar dentro de la paleta de propiedades, y oprima el ícono clase de propiedad. Una alerta de información se despliega

3 Use el navegador de objetos para ubicar la clase de propiedad y cambiar su nombre.

Agregando una propiedadUna vez que crea una clase de propiedad, puede agregar una propiedad oprimiendo el botón agregar propiedad y eligiendo una propiedad de la lista. Entonces coloca el valor para esa propiedad usando la paleta de propiedades.

Borrando una propiedadPuede eliminar propiedades de una clase de propiedad por medio del botón borrar propiedad.

4-17 Developer 6i: Build Forms I

Page 5: LECCIÓN 22

22. Compartiendo Objetos y Código

HEREDANDO UNA CLASE DE PRPIEDADUna ve que crea una clase de propiedad y agrega propiedades pueda usarla. Para aplicar las propiedades de una clase de propiedad a un objeto, use la propiedad información de subclase de la paleta de propiedades.

¿Qué es una propiedad heredada?Una propiedad heredada es aquella que toma su valor de la clase de propiedad que ha asociado con el objeto. Una propiedad heredada se despliega con una flecha a la izquierda del nombre de la propiedad.

¿Qué es una propiedad variante?Una propiedad variante es aquella que tiene un valor modificado aunque es heredada de la clase de propiedad asociada con el objeto. Puede anular el ajuste de cualquier propiedad heredada para hacerla Variante. Propiedades variantes se despliegan con una cruz roja sobre una flecha.

Pasos para heredar valores de propiedad desde una clase de propiedad1 Oprima el objeto al que desea aplicar las propiedades desde una clase de

propiedad2 Oprima la propiedad información de subclase en la paleta de propiedades3 Seleccione la clase de propiedad cuyas propiedades desea usar.

El objeto toma los valores de la clase de propiedad.Propiedades heredadas se despliegan con un símbolo de flecha.

Convertir una propiedad variante a una propiedad heredadaPara convertir una propiedad variante a una propiedad heredada, oprima propiedad heredada en la paleta de propiedades.

Convertir una propiedad heredada a una propiedad variantePara convertir una propiedad heredada a una propiedad variante, simplemente sobrescriba el valor heredado con un nuevo valor.

5-17 Developer 6i: Build Forms I

Page 6: LECCIÓN 22

22. Compartiendo Objetos y Código

CREAR UN GRUPO DE OBJETOS¿Qué es un grupo de objetos?Un grupo de objetos es un contenedor lógico para un grupo de objeto Form Builder.

¿Por qué usar un grupo de objetos?Usted define un grupo de objetos cuando quiere empacar objetos relacionados para copiar o usar como subclase en otro modulo. Puede usar grupos de objetos para agrupar numerosos objetos dentro de un nivel superior construyendo bloques que puede usar nuevamente en otra aplicación

6-17 Developer 6i: Build Forms I

Page 7: LECCIÓN 22

22. Compartiendo Objetos y Código

Pasos para crear un grupo de objetos 1 Oprima el nodo de grupo de objetos en el navegador de objetos2 Oprima el ícono crear (una nueva entrada de grupo de objetos se

despliega)3 Renombre el nuevo grupo de objetos4 Oprima el modulo de form y expanda todo5 Control-oprimir todos los objetos de un tipo que quiere incluir en el grupo

de objetos6 Arrastre los objetos seleccionados dentro de la nueva entrada de grupo de

objetos7 Los objetos se despliegan como hijos del grupo de objetos8 Repita pasos 5 y 6 para diferentes tipos de objetos

Los objetos en el grupo de objetos todavía se despliegan en su posición usual en el navegador de objetos también dentro del grupo de objetos. Los objetos en el grupo de objetos no están duplicados pero apuntan a los objetos fuente.

Cosas a considerar cuando usa grupos de objetos Incluir un bloque también incluye sus elementos, el trigger items-level, el trigger

block-level y las relaciones (usted no puede usar ninguno de estos objetos en un grupo de objetos sin el bloque)

Incluir otro grupo de objetos no es posible Borrar un objeto de un modulo automáticamente borra el objeto del grupo de objetos Borrar un grupo de objetos de un modulo no borra los objetos que contiene del

modulo.

Diálogo información de subclaseLa propiedad información de subclase de un objeto de forma despliega una caja de dialogo que provee información sobre el origen del objeto. Puede ver si un objeto es local del documento de forma o foráneo. Si el objeto es foráneo a la forma actual el campo Modulo muestra el modulo del cual es original el objeto. El nombre original del objeto es mostrado en el campo Nombre del Objeto

7-17 Developer 6i: Build Forms I

Page 8: LECCIÓN 22

22. Compartiendo Objetos y Código

COPIAR Y CREAR SUBCLASES CON OBJETOS Y CÓDIGOCuando usted arrastra y suelta objetos entre módulos en el navegador de objetos la alerta de subclase o copia se despliega. Los mecanismos copiar y subclasele permiten reusar objetos en más de un módulo. Específicamente el mecanismo copiar le permite crear un objeto en una forma o en un modulo fuente y entonces copiar ese objeto a otra forma o modulo en blanco.Mientras que el mecanismo subclase le permite crear un objeto en una forma o en un modulo fuente y entonces crear una subclase de ese objeto en otra forma o modulo en blanco.Nota: crear una subclase es un termino orientado a objetos que se refiere a las siguientes capacidades: Heredar las características de la clase base (herencia) Sobrescribir propiedades de la clase base (especialización)

Copiar un objetoCopiar un objeto crea una separada, única versión del objeto en el modulo meta. Algunos objetos del objeto copiado también serán copiados

Puntos a recordar Use copiar para exportar la definición de un objeto a otro modulo Cambios hechos a un objeto copiado en el modulo fuente no afectan el objeto copiado

en al modulo meta.

8-17 Developer 6i: Build Forms I

Page 9: LECCIÓN 22

22. Compartiendo Objetos y Código

Crear subclases de un objetoEn versiones tempranas de Form Builder, sólo se proveía la habilidad de heredar desde una clase base, y limitaba severamente la utilidad del mecanismo de referencia. Crear subclases es similar a hacer referencias en Developer/2000 Release 1. Pero es más poderoso y refleja verdaderas subclases de objetos

Habilidad para agregar a un objetoUsted puede todavía crear una copia exacta de un objeto, como con referencia, pero puede agregar a la subclase del objeto. Por ejemplo, puede agregar items adicionales a la subclase de un bloque.

Habilidad para alterar propiedadesCon subclases usted puede hacer una copia exacta, y entonces alterar las propiedades de algunos objetos. Si usted cambia la clase padre los cambios también aplican a propiedades del objeto subclase que no tiene alterado. Como sea, las propiedades que usted sobrescribió permanecen así.Esto provee un poderoso modelo de herencia de objetos. Con la paleta de propiedades puede identificar propiedades heredadas o sobrescritas.Icono de paleta de propiedades SignificadoCirculo El valor de la propiedad es por defectoCuadro El valor de la propiedad fue cambiadoFlecha El valor de la propiedad fue heredadoFlecha con una cruz roja encima El valor de la propiedad fue heredado y

sobreescrito (propiedad variante)

Habilidad para heredar cambiosCuando cambia las propiedades de un objeto padre todos los objetos hijo heredan esas propiedades si no fueron sobrescritosLos hijos heredan cambios: Inmediatamente, si los objetos padre e hijo estan en la misma forma Cuando usted carga nuevamente la forma que contiene al objeto hijo

9-17 Developer 6i: Build Forms I

Page 10: LECCIÓN 22

22. Compartiendo Objetos y Código

EjemploUsted puede crear una subclase de objeto en un módulo de forma seleccionando el objeto en el navegador de objetos y usando [ctrl]+arrastrar para crear el nuevo objeto. Aparece un dialogo que pregunta si desea copiar o crear una subclase del objeto, usted puede: Cambiar la estructura del padre automáticamente propagando los cambios al hijo Agregar o cambiar propiedades al hijo para sobrescribir la herencia Cuando crea una subclase de un bloque de datos no puede: Borrar elementos del hijo Cambiar el orden de los elementos en el hijo Agregar elementos al hijo salvo que los agregue al final.

Puntos a recordar Usted sólo puede agregar elementos al final del bloque subclase: usted no puede

ordenar nuevos elementos antes o entre los existentes elementos subclase. Es un comportamiento intencional que permite al layout frame controlar y ordenar los elementos.

El mayor beneficio de las subclases es que usted puede especializar como heredar. Esto hace el reuso mucho más útil.

Otra mejora, principalmente una de conveniencia, es que usted no necesita cerrar y volver a abrir para ver los cambios en objetos heredados

La herencia también trabaja en una forma simple. Por ejemplo, si usted quiere crear otro botón igual a un existente, pero con una etiqueta diferente, usted simplemente crea una subclase del botón. En el pasado usted tenia que crear una clase de propiedad para hacer esto.

No hay limite de profundidad para la jerarquía de subclase, solo su habilidad para manejar la complejidad.

10-17 Developer 6i: Build Forms I

Page 11: LECCIÓN 22

22. Compartiendo Objetos y Código

¿QUÉ ES UNA LIBRERIA DE OBJETOS?

La librería de objetos es un contenedor de objetos para reusar. Simplifica el reuso en ambientes complejos y soporta estándares corporativos, de proyecto y personales.

Una librería de objetos puede contener objetos simples, clases de propiedad, grupos de objetos y unidades de programa, que son protegidos contra cambios en la librería.

Los objetos pueden ser usados como estándares (clases) por otros objetos.

Las librerías de objetos simplifican compartir o reusar componentes. Reusar componentes le permite:

Aplicar estándares a objetos simples, como botones y elementos para una apariencia consistente.

Reusar objetos complejos como un navegador

En combinación con clases smart, que discutiremos después las librerías de objetos soportan ambos requerimientos.

Nota: Form Builder abre todas las librerías que estaban abiertas la ultima vez que cerro Forms Builder.

¿Por qué librerías de objetos en lugar de grupos de objetos?

Las librerías de objetos pueden contener objetos individuales, por ejemplo botones de icono. La unidad mas pequeña aceptada en un grupo de objetos es el bloque

Las librerías de objeto aceptan unidades de programa de PL/SQL Si usted cambia un objeto en una librería de objeto, todas las formas que contienen la

subclase del objeto reflejaran el cambio.

11-17 Developer 6i: Build Forms I

Page 12: LECCIÓN 22

22. Compartiendo Objetos y Código

TRABAJANDO CON LIBRERIAS DE OBJETO

Las librerías de objeto aparecen en el navegador si lo abre. Puede crear, abrir y cerrar librerías de objeto como otros módulos. Las librerías de objetos son automáticamente reabiertas cuando reinicia Form Builder, haciendo inmediatamente accesibles sus objetos reusables. Es fácil usar librerías de objetos con un simple una simple interface de pestaña. Esta iterface tiene las pestañas agregar y eliminar que le ayudan a crear sus propios grupos. Arrastrando un objeto de la librería de objetos crea un objeto de subclase. Para crear una copia del objeto presione CTRL y arrastre al objeto. Para mover el objeto fuera de la librería de objetos presione SHIFT y arrastre el objeto. Puede salvar librerías de objetos aun archivo del sistema como un archivo .olb o la base de datos.

Poblando una librería de objetos

1 Seleccionar herramientas librerías de objetos para desplegar la librería de objetos

2 Arrastra objetos del navegador de objetos dentro de la librería de objetos.3 El comentario descriptivo viene desde la propiedad objeto comentario, pero

puede ser editado independientemente de esta propiedad.

Beneficios de la librería de objetos

Hay diferentes ventajas de usar librerías de objetos para desarrollar aplicaciones:

Simplifica compartir y reusar objetos Provee control y aplicación de estándares Elimina la necesidad de mantener múltiples formas referidas.

12-17 Developer 6i: Build Forms I

Page 13: LECCIÓN 22

22. Compartiendo Objetos y Código

¿QUÉ ES UNA CLASE SMART?

Si usa frecuentemente objetos como estándares, tal como un botón estándar, elementos de dato y alertas puede marcarlos como clase smart seleccionando cada objeto en la librerías de objetos y eligiendo objetos clase smart.

Puede marcar como clases smart diferentes objetos que son desplegados a través de múltiples librerías de objetos.

También puede tener algunas clases smart de un tipo de objeto dado, por ejemplo:

Wide_button Narrow_button Small_iconic_button Large_iconic_button

Trabajando con clases smart

1 Seleccionar un objeto en el layout editor o navegador2 Del menu pop-up seleccione clase smart

Todas la clases smart en todas la librarías de objeto abiertas del tipo de objeto aparecen en la lista. Seleccione una clase de la lista.

3 El menu pop-up de clases smart lista todas las clases smart de todas las librerías de objeto abiertas que tiene el mismo tipo que el objeto.Cuando selecciona una clase para el objeto, este se convierte en la clase padre del objeto. Puede ver sus detalles en el cuadro de diálogo información de subclase así como cualquier otro objeto de subclase.

Este mecanismo hace muy sencillo aplicar clases a objetos existentes.

13-17 Developer 6i: Build Forms I

Page 14: LECCIÓN 22

22. Compartiendo Objetos y Código

Reusando PL/SQL

PL/SQL en Triggers

Pude reusar PL/SQL en sus triggers para: Copiar y pegar, usando el menú de Editar Copiando a otra área del actual modulo de la forma, usando Copiar y Pegar del menu

del botón derecho de Mouse. Copiando o agregando una subclase de otro modulo de la forma, usando arrastrar y

soltar en el Navegador de Objetos.

Unidades de Programa PL/SQL

Aunque los trigger son el primer camino para agregar control de programación a una aplicación de Form Builder, usando unidades de programa PL/SQL para complementar los triggers pude reusar código sin tener que escribirlo nuevamente.

Con Form Builder puede crear unidades de programa PL/SQL para contener código usado comúnmente. Estas unidades de programa PL/SQL puede usar parámetros que disminuyan la necesidad de nombres de objetos de código duro en el cuerpo del procedimiento.

Puede reusar unidades de programa PL/SQL:

Copiando y pegando usando el menú Editar Copiando o agregando una subclase de otro modulo de la forma, usando arrastrar y

soltar en el Navegador de Objetos. Creando un modulo de librería

14-17 Developer 6i: Build Forms I

Page 15: LECCIÓN 22

22. Compartiendo Objetos y Código

LIBRERIAS PL/SQL

Una librería es una colección de unidades de programa de PL/SQL incluyendo procedimientos, funciones y paquetes. Una librería simple puede contener varias unidades de programa que pueden ser compartidas entre módulos y aplicaciones Developer/2000 que necesitan usarlo.

Una librería:

Es producida como un módulo separado y almacenado en un archivo o en la Base de Datos

Provee un conveniente significado de código del cliente y lo comparte entre aplicaciones.

Significa que una copia simple de unidades de programa pueden ser usadas por varios módulos de forma de menú de reporte o gráfica.

Soporta carga dinámica de unidades de programa.

Alcance de objetos

Por que las librerías son compilada independientemente de los módulos de Developer/2000 que las usan, las variables bind en formas menús, reportes y despliegues estan fuera del alcance de la librería. Esto significa que usted no puede referir directamente las variables que son locales de otro módulo, ya que el compilador no sabe sobre ellas cuando compila las unidades de programa de la librería.

Hay dos maneras de evitar la referencia directa a variables bind:

Puede referir una variable global y una variable de sistema en forms indirectamente como una cadena dada, usando cierto subprograma built-in

Escribir una unidad de programa con parámetros IN e IN OUT que son designados para aceptar referencias a variables bind. Puede pasar el nombre de la variable bind como parámetro cuando llame a la unidad de programa de la librería desde su aplicación Developer/2000.

Ejemplo:

Considere el segundo camino sugerido en el siguiente subprograma de librería:

FUNCTION locate_emp (bind_value IN NUMBER) RETURN VARCHAR2 IS v_ename VARCHAR2 (15); BEGIN SELECT ename INTO v_ename FROM emp WHERE empno = bind_value; RETURN (v_ename);END;

15-17 Developer 6i: Build Forms I

Page 16: LECCIÓN 22

22. Compartiendo Objetos y Código

TRABAJANDO CON LIBRERIAS PL/SQL

Creando una librería

Primero debe crear librerías en el constructor antes de agregar unidades de programa.Para hacer esto usted puede:

Seleccionar Archivo nuevo librería de los menús ( una entrada para la nueva librería aparece en el navegador)

Seleccionar el nodo librería en el navegador, y elegir la herramienta crear de la barra de herramientas

En la jerarquía de librería del navegador esta el nodo unidades de programa. Desde este punto pude crear procedimientos, funciones, cuerpos de paquete y especificaciones del mimo modo que en otros módulos.

Salvando la librería

1 Con la librería activa, elija la opción salvar en el constructor 2 Elija el destino de la librería (archivo de sistema o base de datos) si requiere, y el

nombre con el que la librería será salvada.

Adjuntando una librería

Antes de que puede referir una unidad de programa de librería desde una forma menú, reporte o gráfica debe adjuntar la librería al módulo.

Para adjuntar una librería a un módulo:

1 abra el módulo que necesita ser adjuntado a la librería. Este puede ser una forma menú, reporte gráfica o otro módulo de librería.

2 Expanda el módulo y seleccione el nodo librería adjuntada en el navegador. Cuando elige crear aparece el diálogo adjuntar librería .

3 En el diálogo adjuntar librería especifique el nombre de librería y elija archivo de sistema o base de datos

4 Presione adjuntar5 Salve el módulo al que a adjuntado la librería, esto registra permanentemente la

librería adjuntada en la definición de este modulo.

Separando una librería

Para separar la librería simplemente borre la entrada de librería de la lista de librerías adjuntadas para el módulo en el navegador. El módulo no será hábil o no podrá referir la unidad de programa de librería en el diseño o tiempo de ejecución

16-17 Developer 6i: Build Forms I

Page 17: LECCIÓN 22

22. Compartiendo Objetos y Código

REFIRIENDO UNA LIBRERÍA DE UNIDADES DE PROGRAMA ADJUNTADA.

Refiere librería de unidad de programa de la misma manera si son definidas localmente, o almacenadas en la Base de Datos. Recuerde que los objetos declarados en un paquete deben ser referidos con el nombre de paquete como prefijo, sean o no parte de una librería.

Las unidades de programa son buscadas primero en la llamada al módulo y después en las librerías en las que están adjuntadas.

Ejemplo

Asuma la unidad de programa report_totals.how_many_people.pack5 y del_emps son definidos en una librería adjuntada.

Report_totals (:subl); --library procedure v_sum := how_many_people --library function Pack5.dell_emps; --library package procedure

Cuando distintas librerías son adjuntadas

Puede adjuntar distintas librerías al mismo módulo de Developer/2000. Refiere y resuelve buscando a través de librerías en el orden que estas aparecen en la lista de adjuntadas .

Si dos unidades de programa del mismo nombre y tipo aparecen en diferentes librerías en la lista de adjuntadas la que esta en la librería mas grande será ejecutada ya que es localizada primero.

Creando archivos .plx

La librería archivo .plx es una especifica plataforma ejecutable que no contiene fuente.

Cuando este listo para desplegar su aplicación probablemente quiera general una versión de su librería que contenga solo el p-código compilado sin ninguna fuente. Puede general un archivo .plx desde Form Builder o desde la línea de comando.

Ejemplo

El siguiente comando crea una librería de tiempo de ejecución llamada runlib1.plx basada en la librería abierta mylib.pll:

GENERATE LIB mylib FILE runlib1;

17-17 Developer 6i: Build Forms I