Sistema Automatizado de Información para las Oficinas de la Coordinación Divisional de Docencia y Atención a Alumnos de CBI para el Area de Posgrado. (Modulo: Oficinade Gestión Escolar para Posgrado), Realizado por: Jorge Alejandro Morales Orea Reporte Final del Proyecto de Investigación Asesor: Omar Lucio.Cabrera Jiménez 1 . Introducclon........................................................................................... 1 . l . Objetivos del proyecto....................................................................... 1.2. Metodología orientada a objetos ........................................................... 3 3 3 2 . UML-Lenguaje de ModeladoUnificado .................................................... 2.1. Descripción del UML......................................................................... 2.2. Historia del UML.............................................................................. 2.3. Utilización del UML............................................................................ 2.4. Tendencias del UML.......................................................................... 5 5 6 6 7 3 . Programación Orientada a Objetos ......................................................... 3.1. Un ejemplo de un lenguaje Orientado a Objetos...................................... 3.2. Conceptos de la P O 0........................................................................ 3.2.1. Propiedades, eventos y métodos................................................. 3.2.2. Objetos del mundo que nos rodea y del mundo informático.............. 3.3. Características de la PO0.................................................................. 3.3.1 Herencia................................................................................. 3.3.2 Polimorfismo........................................................................... 3.3.3 Encapsulación......................................................................... 3.3.3.1 Control del Acceso a métodos y propiedades...................... 3.3.3.2 Acceso a propiedades y métodos desde el propio objeto. . . . . . . 3.4 Un ejemplo de como se traduce UML a un lenguaje Orientado a Objetos ...... 7 7 8 10 10 11 11 13 14 14 15 15 4 . Análisis y Diseño Orientadoa Objetos...................................................... 4.1 Modelo de Requerimientos................................................................... 4.1. IModelo de Casos ........................................................................ 4.1.2 Modelo de lnterfaz ...................................................................... 4.1.3 Modelo del Dominio del Problema.................................................. 4.1.3.A Definición de clases y objetos............................................ 4.1.3.B Determinación de objetos................................................. 4.1.3.C Atributos ....................................................................... 4.1.3.D Diagramas de Clases....................................................... 4.2 Modelo de Análisis Dinámico ................................................................. 4.2.1 Tipos de Objetos: Visuales 'y no Visuales .......................................... 4.2.2 Modelo de Tres Capas.................................................................. 4.2.3 Análisis mediante escenarios......................................................... 4.2.4 Diagrama de Colaboración............................................................ 4.2.5 Modelo de Clases Dinámicas......................................................... 4.3 Modelo de Construcción ....................................................................... 4.3.1 Modelo de Diseño ....................................................................... 4.3.1.A Diagrama de Secuencia..................................................... 4.3.1. B Criterios de Calidad para el Diseño...................................... 4.3.2 Modelo de Componentes............................................................. 4.3.3 Modelo de Implementación.......................................................... 18 21 21 24 26 27 27 30 32 45 45 46 46 48 52 54 54 54 56 58 59 . I Universidad Autónoma MetroDolitana lztapalapa 5. Arquitectura del Desarrollo ...................................................................... 5.1 Desarrollo de Prototipos....................................................................... 5.2Tres Características Importantes del Enfoque Iterativo.......................................... 5.3 BeneficiosResultantes ................................................................................... 5.4 Actividades Detalladas del Ciclo Iterativo............................................................ 5.5 SeleccionandoIteraciones ............................................................................... 5.6 No Existe una Solución Mágica ........................................................................ 68 68 69 69 70 71 71 6 . Aplicaciones en Internet ......................................................................... 72 7 . DBSP (Data Base Scripting Pages) .............................................................. 7.1 ISAPl (Internet Server Applicatiort Program Interface ................................. 7.2Comofunciona DBSP? ....................................................................... 73 74 75 8. JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1 Características de JavaScript ..................................................................... 77 78 9 . Programación Orientada a Páginas WEB................................................... 9.1 Modelo de objetos del documento .......................................................... 9.2 Eventos esenciales de una Página WEB .................................................. 80 80 81 10. Modelado de una aplicación WEB usando DBSP.................................... 10.1 Ejemplo de Implementación de una aplicación usando DBSP.................... 83 83 11. Conclusiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 12. Referencia Bibliográfica ........................................................................ 117 . 13. Desarrollo Práctico (Anexo) 1.I.Objetivos del Proyecto Los propósitos de este proyecto son: O O O O 0 Demostrar el desarrollo de software, usando el Análisis y Diseño Orientado a Objetos. Hacer una descripción detallada decómo implementar un sistema con DBSP (Data Base Scripting Pages) una tecnología basada en ISAPls, basándonos de un ADOO. Explicar cuales son las diferencias para implementar entre un lenguaje en el que su estructura de codificación se base en ADOO, como por ejemplo JAVA y DBSP. Modelado de la aplicación para aplicarla dentro de una Intranet, así como también para aplicarla sobre Internet. Referencia para los estudiantes de Computación que desean aprender como aplicar los conceptos teóricos a una aplicación real. El proyecto se realizó en dos partes. En la primera se trabajo con los requerimientos iniciales y se obtuvo un primer prototipo funcional del sistema. La segunda parte se trabajo la depuración y adiciones a los requerimientos iniciales, así como nuevos requerimientos, se obtuvo el siguiente prototipo más completo en cuanto a funcionalidad y diseño visual. En la primer apartado de este trabajo se explicarán los conceptos y el tipo de notación que se utiliza para el modelado Orientado a Objetos. En el Anexo se describe es el desarrollo practico del sistema de la Oficina de Docencia y Atención a Alumnos de Posgrado de CBI. Con respecto a la utilización de DBSP, vamos a mostrar que es muy rapido implementar una aplicación orientada a Web, a diferencia de otras tecnologías utilizadas para este fin, como la se Servlets de Java y CGI. 1.2 Metodología orientada a objetos. La metodología orientada a objetos, es un nuevo paradigma que a demostrado buenos resultados en el desarrollo de sistemas. La mayor parte del software que se pro'duce en la actualidad no cumple con los requisitos que espera el usuario final. No ofrecen una solución efectiva al problema por el que se concibió principalmente el sistema, apenas, resuelve algunos aspectos de la problemática. Sin embargo, se tienen que aceptar los costos no porque sean bajos, sino porque, el tiempo invertido y la necesidad de la organización por el sistema no le dejan más opción. Pero el mayor costo no es el desarrollo del sistema sino su mantenimiento, el cual resulta el doble del costo de su construcción. En muchos casos, no solo es el doble, sino que puede llegar a números mayores. Para disminuir el costo de los sistemas se utiliza la reutilización de componentes. Ubicando a los componentes como algo que esta bien construido y los cuales solo tienen que incorporarse en los sistemas sin hacer una modificación a su interior. ...............................,... ~ ~~~:.~;~:~.~...:..:.:..:.x::..::...i :~~~~ .~.:.:. ....:.:.:<.:.:.:.:~~.:.:.: ........... .~<.~..... ..M.:.:.:.:<. ..,.<.:.:.:.:.t: i.:.:.:.:.:.:.:.:~~.~ :.:.:.:.:.x<.: .,.,..<..,.+ , ........ . A ...A,., Universidad Autónoma MetroDolitana IztaDalaDa La definición del enfoque Orientado a IObjetosse basa en la idea de componentes. Los sistemas construidos bajo este enfoque son más flexibles, con gran reutilización de partes de sistemas. La comunidad del desarrollo de sistemas actualmente tiende al modelo con Orientación a Objetos en respuesta a minimizar los costos de desarrollo y sobre todo los costos de mantenimiento. La razón por la quetodoestosurgióesque la programación estructurada, éI último paradigma, no satisfacía las necesidades de los programadores. La programación estructurada recomendaba utilizar tantos procedimientos y funciones diferentes como fuera necesario para dividir todas las tareas en sus funciones. Si cada función, era limpia, no afectaba nada más, y se limpiaba después por sí misma, ¿qué podía estar mal? Se suponía que la clave era el establecimiento de estándares de programación: numero la máximo de líneas decódigoqueun procedimiento puede tener, los anchosde tabulación estándar, nomenclaturas de ,funcionesy variables, y casi todos los aspectos del estilo de programación a fin de poner en vigor la modularidad. Se suponía que se debía crear un código con funcionalidad genérica que haría del mantenimiento del programa una tarea fácil. Se oía bien pero resulta que la programación modular estructurada era una teoría que no efectuó la transición a la practica. El c6digo nunca puede ser lo suficientemente genérico para emplearlo en todas partes. Hay una compensación constante ya sea que "clonemos o modifiquemos" para cadasituación ligeramente distinta o, si en realidad somos dogmáticos, utilizamos una instrucción CASE para cadavariable,que con el tiempo produce el código, el cual es mucho m i s difícil de mantener que su idea original, simple y elegante. Y si se descubrió un defecto fundamental en el código original o se necesita hacer un cambio que afecte todos los casos, tenemos que hacer el seguimiento de todos los clones y hacerles los mismos cambios a todos. Los costosde mantenimiento de los sistemashechosconel enfoque estructurado son demasiado altos. Cada vezquehay luna modificaciónalsistema, la estructura básica sufre un proceso de degeneración, hasta llegar a un punto que se complica tanto el flujo de ejecución que el mantenimiento inyecta erroresque no existían antes. El disefio Orientado a Objetos es la solución. Pone en practica la modularidad y reduce los gastos generales de administración de códigos'. En la actualidad la comunidad de desarrolladores con Orientación a Objetos sé esta moviendo a UML para efectos de notación. UML permite incorporar todos los conceptos planteados en las metodologías más importantes de desarrollo con Orientación a Objetos, tales como Diagramas de Casos, Diagramas de Clases, Diagramas de estados, Diagramas de Componentes, etc. UML es una herramienta notational, que apoya los procesos de Análisis, Construcción y Pruebas. Por lo mismo es conveniente incorporar herramientas CASE que permitan utilizar notación UML como Rational Rose, para apoyar tales procesos. Pero qué es UML, cuál es historia, sus conceptos y hacia donde va: 2.1 Descripción del UML 0 0 0 UML se entiende como Lenguaje de Modelado Unificado (Unified Modeling Language por sus siglas en inglés) El UML combina lo mejor de m Conceptos de Modelado de Datos (Diagramas E-R) Modelado de Negocio (work flow) Modelado de Objetos y de Componentes El UML es el lenguaje estándar para la visualización, especificación, construcción y documentación de elementos de un sistema intensivo en software. Puede utilizarse con todo proceso a lo largo del ciclo de vida del desarrollo y con diferentes tecnologias de implantación. m Universidad Autónoma Metropolitana lztapalapa ..................... . ................. . . . . .... ....... .... ...... ....... ..... ...... ......... ...... ..... .(.. .......... ....... ............... .... ,,.:. :,,. .,.::"" ff,terfhz de Usu.&jo ,,,,:::::.~..."~""~.~' "'"..'.... ..... '... ..... ..:.... .... ..... ..... ..... ... .... .... ..... .... .... .... ... .... (vls;ual Basic , ' ....... ' : : : . : $ Y ...... ... ... ........ Java) ,,,:::f"$ ...., .:.. ..... .... ... ..::::.. .:gógica deNegoci'fs ... ... ...... ... ':$,: (C++, Java) ':$. . . .... ...... ... ... .... .......... .... .... .... .... ..... ...... ... .... ... ... ..... ..... ... .... .... .:.. . ... ... ... ... .. .... .... ... .A,.. ... ..:.::.. ..... :::.:... ... :.x BD .:.. (C:++ 8 SQL) ...2;: .. Servidorde ....... .... ... Figura 2: UML define la Arquitectura del Software Desarrollado en 1995 por los tres metodistas de Orientación a Objetos más importantes: 0 Grady Booch James Rumbaugh 0 Ivan Jacobson En 1997 es aceptado por la OMG (Object Managment Group) como estándar. Esto atrajo a miembros importantes del software como Microsoft, HP, IBM, Oracle, etc. 0 El UML puede utilizarse para: Mostrar los límites del sistema y sus principales funciones utilizando Casos y Actores Ilustrar las realizaciones de los Casos con diagramas de interacción - - Representar una estructura estática del sistema utilizando los diagramas de clases Describir la implantación física de la arquitectura con diagramas de componentes y distribución física. Extender la funcionalidnd con estereotipos 2.4. Tendencias de UML Se espera que en un futuro próximo UMLsea la única descripción de modelos con Orientación a Objetos. Y sea establecido como el estándar en la industria. En la actualidad varias herramientas de desarrollo como JBuilder 4, JCreator, Delphi, utilizan la notación planteada por UML para efectos de identificación de componentes de código. Programación Orientada a Objetos. ¿Clue es eso de objetos? Y qué es lo debemos variar respecto a nuestra programación estructurada tradicional, y además por qué hemos de hacerlo. Estas son preguntas comunes que nos hemos hecho todos al empezar con un lenguaje orientado a objetos. Vamos a intentar desvelar los misterios que esconde y a convencernos de su validez y utilidad y, sobre todo, que no es tan complejo como parece indicamos la teoría. Evidentemente, Java no es el primer lenguaje orientado a objetos. Aunque da la impresión de que esto es un invento de hace poco, la historia se remonta bastante atrás, concretamente a 1967 y a un lenguaje llamado Simula, luego llegaron otros como el Smallfalk, Flavors, Loops y por fin, el mas utilizado modernamente, el C y posteriormente el C++ ya en plena década de los ochenta. Java ..., pero, ¿qué es Java? Java es un Lenguaje de Programación Orientado a Objetos ideado por Sun Microsystem. Tiene muchas cosas que lo hacen parecerse a C++ pero es mucho más seguro y sobre todo mucho más fácil de leer. Es un lenguaje de propósito general por lo que se podría crear cualquier tipo de aplicación con éI, pero su mayor éxito se produce en Internet, con los famosos Applets, las aplicaciones Chente/Servidor o las tan demoda "Java Server Pages". d y,: :.y :. $ '.. &.p. I +C-. ..: . _ xt JAVA ¿Por qué está de moda Java? Habrás oído que con el lenguaje de programación Java, puedes "escribir una vez, ejecutar en cualquier parte". Esto significa que cuando se compila un programa, no se generan instrucciones para una plataforma específica. En su lugar, se generan bytecodes Java, que son instrucciones para la Máquina Virtual nJava(Java VM). Si tu plataformasea Windows, UNIX, MacOS o un navegador de internet-- tiene la Java VM, podrá entender los bytecodes. Figura 2.1 Un programa Java es independiente del Sistema Operativo Por esta razón utilizamos Java en la construcción del sistema, así no tendremos que preocuparnos por la plataforma en donde se instalara la aplicación. La PO0 surge como una evolución natural de la programación estructurada. No es algo que rompa esquemas clásicos como podría suponerse. La P O 0 formaliza técnicas utilizadas en dicha programación estructurada. Esta es la mejor manera de comprender enun primer momento su misión. Ahora bien, su definición es algo más obtusa y filosófica, yaque académicamente podemosdecirque la PO0 aplica los objetos del mundo real a nuestras aplicaciones. De ahí el concepto de orientación a objetos, nuestras aplicaciones las van a conformar entidades llamadas objetos. Un objeto es algo tangible que tiene características y un comportamiento. En el mundo real podemos hablar del objeto silla, automáticamente construimos en nuestro cerebro un determinado tipo desilla, pero en cualquiera de los casos lo hacemos siempre con las características con las que nuestra percepción reconoce al objeto silla. Tendrá un respaldo, un asiento, un soporte, un color, etc. Ese concepto de silla es lo que llamamos clase. Una clase es una abstracción de un objeto, es algo intangible, es el conjunto de ideas, no es algo real. A la acción de crear un objeto partiendo de una clase se le llama instanciamiento. Ya tenemos dos conceptos que en la PO0 van a ser fundamentales, las clases y los objetos. Nosotros pasaremos gran partle del tiempo dedicándolo a diseñar clases, a crear abstracciones que sean inherentes a muchos objetos, o mirándolo desde el punto de vista informático, al código que utilicemos repetidamente en muchos módulos. He aquí una de las claves de la PO0 reutilizar el código. La forma en la representaremos gráficamente una clase será con la notación deUML: Lenguaje Unificado de Modelado. En la actualidad esel modelo de notación quetiene mayor aceptación dentro de la comunidad de desarrolladores con Orientación a Objetos. Para aprender más acerca de esta notación puedes consultar las Notas deAnálisis y Diseño Orientado a Objetos de Luis Fernando Castro Careaga. Figura :2.2 Una clase en UML Muchas veces hablaremos de clases y de objetos indistintamente, no hay que confundirlos, pero tampoco hay que cclnsiderarlos como algo distinto. Nosotros podemos manipular las clases y los objetos, mientras que el usuario sólo puede actuar sobre los objetos. En nuestras aplicaciones, por tanto, siempre debemos convertir,esdecir, instanciar las clases en objetos. Generalmente, se utiliza la palabra reservada new para crear una instancia de una claseen la mayoría de los lenguajes de programación orientada a objetos. Volviendo al ejemplo de la silla, si a la abstracción, esto es, a la clase silla, le damos unas características especificas como pueden ser: tapicería decuero,color negro, soporte giratorio y con ruedas, respaldo doble de alto, tendríamos en la mente el nombre silla de ejecutivo. Es realmente un objeto, pero un objeto que tiene unas características tan definidas y que se repiten en muchos objetos silla, que podemos considerar a este tipo como una clasede silla. Ahora bien, al partir del concepto genérico desilla,estaremos hablando de una subclase. Por tanto, de una clase genérica o mejor llamada clase base, podemos crear subclases y éstas a su vez tener más subclases, así formaremos una jerarquía de clases. 3.2.1 Propiedades, eventos y métodos Hasta ahora hemos hablado de características de los objetos. Bien, en la terminología de la POO, a estas se les llama propiedades. Por tanto, todos los objetos tienen unas propiedades que los distinguen de otros. Del mismo modo, el mundo real es algo dinámico y, por tanto, las cosas, esto es, los objetos, están expuestos a acciones externas y, a pesar de ser inanimados, pueden cambiar su estado dependiendo de esas acciones. Por ejemplo, si nos recostamos sobre el respaldo flexible de una silla, este se echará hacia atrás. Se ha producido una acción, recostarse, y una reacción, echarse hacia atrás el respaldo. En la POO, a las acciones les llamaremos eventos y a las reacciones métodos. Si esto lo aplicamos a la programación, los eventos serán acciones del usuario sobre nuestra aplicación y los métodos serán código asociado a cada evento. Ahora bien, también pueden existir métodos que no respondan a eventos, aunque esto no es del todo preciso, ya que si responden a una acción, que es la nosotros realizamos programáticamente al llamar dicho método. Bien, entonces ya tenemos los elementos con los que vamos a jugar en la POO: las clases, los objetos, las propiedades, los eventos y los métodos. Esto es lo que debemos saber y dominar, ni más ni menos. I NombreClase I - Propiedad1 : tipo Propiedad2 : tipo ! $Metodo0 %€:vent00 Figura 2.3 Propiedades, Métodos y Eventos en UML 3.2.2 Objetos del mundo que nos rodea y del mundo informático Llegado a este punto, es fácil que el ‘lector encuentre todo esto como un desvarío que poco o nada tiene que ver con la programación y sí mucho con filosofía barata. Pero hagamos ahora una traslación de lo dicho a nuestro mundo. Parece que nos tenemos que dedicar a convertir nuestros programas en poco menos que una colección de objetos tales como mesas, coches, arboles, etc. Realmente la P O 0 sí que dice que esto sea así, un ejemplo menos estereotipado seria el objeto articulo, o el objeto cliente, ambos son entidades que tienen unas propiedades y se realizan acciones con ellos. Ahora bien, tan cierto es que éstos son objetos, como que también nuestro mundo, el informático, tiene objetos. ¿,O no lo son, las ventanas, los botones, las listas desplegables ...? Todos ellos son elementos que tambikn tienen unas características propias y actúan de diversa forma respecto a los eventos realizados por nuestro opuesto, que no es otro que el usuario final. Por tanto, tal vez sea más fácil, asimilar la P O 0 pensando en objetos de nuestro entorno de programación, de la interfaz, etc. que en algo tan vastocomo el entorno vital. Nuestra mente cuadriculada lo agradecerá. Los componentes están vistos, pero que más nos ofrece la PO0 para que sea más útil. Bien veamos tres fundamentales. 3.3.1 Herencia Una de las principales ventajas de la F'OO. La herencia se produce al crear subclases u objetos. Consiste en que éstos tienen las propiedades y métodos que hayamos definido en la clase base, por lo que no tendremos que repetirlos. Aquí aparece una de las razones, la reutilización del código. Nosotros, en la programación estructurada, utilizamos el famoso método de copiar y pegar todo lo que nos sirve de otro programa que tuviéramos hecho. En la POO, hay poner ese código que nos vale en una clase y, sólo con esto, todas las subclases y objetos que creemos partiendo de esa clase tendrán, sin hacer nada, ese código sin tener por tanto que reescriibirlo. Además, cuantas veces hemos tenido que retocar un código por un pequeño errsr de sintaxis cuando ya lo habíamos "pegado" en varios módulos y, por tanto, deberemos modificar en cada uno de ellos. O ese color de ventana que no le gusta al usuario y que hemos empleado en las cuarenta y siete que tiene la aplicación, por lo que ahora tenemos que modificarlas una a una. tendremos que hacerlo, puesto que la herencia funciona Gracias a la PO0 yano automáticamente, por lo que iremos a la clase base y modificaremos esa propiedad o ese método que estaba mal y listo, el cambio se reflejará en todas las subclases y objetos que se crearon a partir de dicha clase. Sólo por esto, merece la pena programar con orientación a objetos. Claro, que muchas veces va a suceder que una determinada propiedad o método no nos sirve. Esto tampoco representa un problema, ya que no estamos obligados a tener que heredarlo, sino que podemos sobreescribir el método o la propiedad en cuestión. Directamente sucederá cuando escribamos en la propiedad o en el método. También podemos utilizar el código heredado y sumarle el propio que nos interese. En fin, disponemos de todas las posibilidades. Por último, podemos impedir que una propiedad o método heredado pueda ser modificado en algún sitio que no sea la clase base, esto es lo que se denomina proteger la propiedad o método. En la notación de UML la relación de herencia entre dos clases se indica por medio de una flecha hueca que apunta a la clase ascendiente. En general, se utiliza la palabra reservada extends en la clase hija, para indicar que se hereda la funcionalidad de la clase padre. Clasepadre t Figura 2.4 Herencia en UML Ejemplo Un buen ejemplo en donde se puede aplicar la herencia es en los autos, existen dos tipos estándar y automático. Vemos que los dos tipos de autos tienen cuatro ruedas, motor, compartimento para pasajeros, volante, etc. sólo difieren en ciertos aspectos. De la misma forma ambos tienen funciones similares de encendido, apagado, avance, retroceso, etc. A continuación se muestra esta situación en la figura. Ij ~ - Autómovil $gMa rca $gModelo $pií0 &Placas $gDueiio '@Apagado() 'bAvance() '@Retroceso() '@Vuelta() @Velocidades 1 %CambioVelocidad() 2""" 1 %ktivaSobreMarcha() ~ Figura 2.5 La clase Automóvil tiene las subclases Estándar y Automático Las subclases Estándar y Automático heredan las propiedades Marca, Modelo, Año, Placas y Dueño de la clase Automóvil, así como las funciones. Cada subclase agrega su propia funcionalidad para el tipo de transmisión. Universidad Autónoma MetroDolitana IztaDalaDa 3.3.2 Polimorfismo También es una característica propia de la PO0 y consiste en que varios objetos, aunque partan de distintas clases, tengan métodos o propiedades con elmismo nombre y que actúen de distinta forma. Tiene una relación directa con la herencia, ya que un método o propiedad heredado se puede sobreescribir y por tanto puede actuar de distinta forma de lo que lo hacia en la clase base. Ejemplo Quien no ha jugado o visto alguna vez un videojuego, donde los personajes son dibujados en la pantalla de diferentes formas conforme va avanzando el juego. Es claro que si cada se dibujara de acuerdo a sus personaje es un obieto, - . y- éstossondistintos,cadauno propiedades. Si nosotros quisiéramos hacer ¡a función de dibujó del personaje por el método estructurado, el código tendría la siguiente forma: I( Function dibuja (Personaje) P switch(P.Tipo) ( case T1: dibuja-personaje1 ( ) ; case T2: dibuja-personaj (e2 ) ; I ... 1 ) De la forma tradicional se tiene que por cada personaje hay un case y una función de dibujo asociados. Ahora, desde el punto de vista del objeto que está ordenando que se dibuje el personaje, no importara si es un personaje u otro, sólo ordena que se dibuje el personaje que está solicitando. Si utilizamos Polimorfismo quedaría de la siguiente forma: dibuja (Personaje P) P.Dibuja(); Debido a que cada personaje tiene una función de dibujo, ésta es llamada sin importar a que tipo de personaje pertenece, cada función de dibujo es implementada de acuerdo a las características del personaje. De esta forma vemos que la función de dibujo puede tomar varias formas, de acuerdo a personaje pasado como parámetro. Es más fácil de entender y mantener el código en la versión con Polimorfismo, por decir, si se desea agregar mas personajes al videojuego la función de dibujo no sufrirá ningún cambio, al contrario de la versión sin Polimorfismo en la que agregaríamos un case por cada nuevo personaje. 3.3.3 Encapsulación Siguiendo con la dinámica de actuación de la POO, al crear clases lo que estamos haciendo implícitamente es agrupar propiedades y métodos para que, cuando tengamos que hacer otra aplicación, cojamos esa clase y la pongamos en ella sin tener que cambiar nada. A esto se le llama encapsulación. En la programación estructurada teníarnos código desperdigado en módulos, programas, etc., y en la PO0 todo lo guardamos en el mismo sitio, en la clase u objeto, lo encapsulamos. Si queremos utilizar una propiedad o método debemos llamar al objeto en cuestión mediante mensajes. Lo podríamos asociar con las clásicas llamadas a funciones o procedimientos almacenados en prgs, archivos h, o unit, por ejemplo. Una propiedad o atributo puede ser accesible desde otros objetos; sin embargo, depende de la visibilidad del mismo. Puede ser de alguno de estos tipos: 3.3.3.1 Control del Accesoa metodos y propiedades Visibilidad Oculta o Privada Las propiedades y métodos definidos como privados sólo son accesibles y visibles desde la propia clase donde se definen. En cluanto a las propiedades, cualquier método inscrito en la clase puede modificar el contenido de estas propiedades privadas; sin embargo, a efectos de su visibilidad son invisibles desde cualquier otro objeto. Por tanto, se recurre muchas veces a la utilización de un método visible para recoger el valor de una propiedad privada y visualizarlo desde el exterior. En General se antepone la palabra reservada private al nombre del método o propiedad. Visibilidad Protegida Se establece este tipo de visibiliclad para que propiedades y funciones sean referenciables por código de funciones; de subclases dentro de la jerarquía de herencia. En General se utiliza la palabra reservada protected. Visibilidad Pública Un método o propiedad con acceso publico tiene la visibilidad más amplia posible. Cualquier objeto puede verlo y cualquiera puede utilizarlo. En General se utiliza la palabra reservada public. Visibilidad Amigo Se utiliza el nivel amigo cuando se desea que sólo algunos objetos puedan tener acceso a las propiedades y métodos definidos en la clase. En algunos lenguajes se tiene la noción de visibilidad amigo de modo que solamente las funciones que están dentro de un archivo fuente dado puedan verlas. En General esta noción es remplazada por la idea más explícita de paquetes, los cuales pueden agrupar clases. La encapsulación, por tanto, ayuda tarnbién a la reutilización del código y a hacer más fácil su búsqueda en nuestras aplicaciones. 3.3.3.2 Acceso a propiedades y métodos desde el propio objeto Para referenciar un objeto o método definido en una clase desde la propia clase se utiliza el operador this, y su función es la de acceder al propio objeto. Se antepone this y punto antes de la propiedad o método al que se desea acceder, esto se aplica con frecuencia cuando se programan JavaScripts dentro del código de HTML, cuando se manejan formularios especialmente. Daremos un ejemplo ficticio de cómo traducir UML, utilizando Java. Supongamos que nos piden llevar el registro del mobiliario de una oficina. El mobiliario se compone de sillas, escritorios, mesas, sillones, equipo de computo, y artículos de oficina. Cada uno ellos son objetos de la vida real, y de acuerdo a lo que nos dice la P O 0 también serán objetos de nuestra aplicación. Si recordamos en nuestro ejemplo de la silla anteriormente planteado, ésta presentó las siguientes características: un respaldo, un asiento, un soporte, un color, etc. publicclass UML Silla ( Silla (from Loqlcal Mew) @respaldo : String '&asiento : String @soporte : String &color: String Java // D e f i n i c i ó n de String String String String protected pro'tected pro'tected protected ... // Método l a s características respaldo; asiento; soporte; color; constructor puhlic Silla ( ) Dentro de la oficina también se encuentran las sillas ejecutivas. Un objeto Silla Ejecutiva será una subclase del objeto Silla. UML P u b l i c class SlllaEjecutiva extends Silla ( // D e f i n i c i ó n de l a s c a r a c t e r l s t i c a s private String marca; private String ... Silla tapiceria; // Método c o n s t r u c t o r public SillaEjecutiva( ) Java . ( @asiento : String @soporte :String Q c o l o r : String // Asignamos l a s c a r a c t e r í s t i c a s tapiceria = "cuero"; color = "negro"; soporte = "giratorio y con ruedas"; respaldo = "doble alto"; ... / / Método para asignarla marca public voidsetMarca(String marca) ( SillaEjecutim this.marca = marca; I @marca : String &tapiceria : String " " ~ ... I .". " - %etMarca(marca : Stnng) " " ." A la hora del diseño de clases también tenemos que tener en cuenta que una clase puede contener a otros objetos, son las llamadas clases contenedoras, que no debemos confundir con las subclases, que nos abrirán más posibilidades. La clase Oficina contiene diferentes tipos de objetos como sillas normales o ejecutivas, escritorios, y todo objeto que sea parte del mobiliario. Public UML t Oficina (from Logical View) @SillaGerente : SillaEjecutiva tZ$SillaCapturista : Silla Escritoriol : Escritorio Java classOficina // D e f i n i c i ó n de l a s propiedades private SillaEjecutiva SillaGerente; private silla Sillacapturista; private Escritorio Escritoriol; ... // Método c o n s t r u c t o r public Oficina ( ) ( 1 // Método paracrear los mueblesde la // o f i c i n a public voidcrearMobiliario0 I // Instanciamos l a c l a s e s i l l a SillaGerente = new SillaEjecutiva(); SillaGerente. setMarca ("Bellini"); Sillacapturista = new Silla ( ) ; Escritoriol = new Escritorio(); I .. ... 1 Universidad Autónoma Metropolitana IztaDalaDa De esta forma cuando la aplicación haga una instancia de la clase oficina, podrá llamar a su método crearMobiliario() para crear cada objeto de la oficina. Tal vez se quiera hacer referencia a un objeto contenido en la clase oficina, para ello simplemente se creara un método publico que devuelva una referencia a ese objeto. La forma en que se paso de la notación de UML a Java, es solo una forma de hacerlo y no es la única, mi intención es dar una idea de cómo convertir los diagramas de clase en código, no intento decir que así se tenga que construir la aplicación. Es trabajo del lector buscar la mejor forma de traducir la nlotación de UML a código. Si se cuenta con una herramienta CASE como Rational Rose 2000, se puede crear código automáticamente tanto para Java, Visual Basic, C++ y Or'acle8 a partir de los diagramas de clases. Tradicionalmente, la creación de una aplicación siempre ha pasado por las fases de análisis, diseño, programación, pruebas y documentación. Sin embargo, todos sabemos que las dos primeras se acortaban hasta hacerse, en algunos casos, inexistentes. Siempre tenemos que hacer las cosas para pasado mañana, con lo que el sacrificado suele ser normalmente el análisis. Y no solo me refiero a pequeñas corporaciones en las que el programador es a la vez analista, probador, documentador y, si me apuras, instalador e instructor; me refiero también a equipos en programación que obvian en demasía la importancia de la primera fase de una aplicación. El hecho de tener un gran bagaje profesional, hace que se tomen a la ligera aspectos tal vez importantes en la aplicación. Bien, en la programación tradicional, puede, hasta cierto punto, consentirse todo esto y podemos lanzarnos a programar con cuatro ideas y realizar las correcciones oportunas "sobre la marcha". Siempre, por supuesto, obligados por la inmediatez de implantación de la nueva aplicación. Cuando hablamos en programación orientada a objeto, el análisis y el diseño cobran relevancia trascendental y por tanto constituyen una fase inexcusable en el desarrollo de la aplicación. Hay que tener muy clara la idea de que un buen análisis puede acortar considerablemente la fase programática, por ello, no se deben escatimar horas en organizar y estructurar la aplicación en cuestión. Vamos a ver en los párrafos siguientes en qué medida cambia el análisis y diseño orientado a objeto respecto del tradicional. Primeramente, desglosemos las diferentes partes en las que se divide cada uno de ellos: Modelo de Casos 0 Modelo de lnterfaz 0 Modelo de Dominio del Problema Modelo de Análisis 0 Definición de Escenarios 0 Modelo de Clases Dinámicas 0 Diagramas de Colaboración Modelo de Diseño 0 Diagramas de Secuencia 0 Modelo de Componentes Modelo de lmplementación 0 Construcción de Bases de Datos Modelo de Pruebas 0 0 0 0 0 Análisis Funcional Análisis de Datos Análisis de las Reglas de Negocio Modelo de Implantación Diseño de la Aplicación 0 0 Esquema de Bases de Datos Interface del Usuario Pruebas Vamos a utilizar una aplicación ficticia para comprobar los pasos que deberemos seguir. ÉSta será una sencilla aplicación de inscripción a cursos para una universidad. Muchas de las fases serán conocidas por cualquier analista, otras las obviaré, ya que no es mi cometido hacer un completo curso del análisis, sino presentar las principales características del ADOO. Para un cornpleto curso de ADOO recomiendo las Notas de Análisis y Diseño Orientado a Objetos: Aplicado a Sistemas deInformación, de Luis Fernando Castro Careaga. La descripción de la aplicación se muestra a continuación: O La UAMl desea sistematizar su sistema de registro de Inscripción a Cursos El coordinador define los cursos a impartir en un trimestre - - Un curso puede tener varios grupos en los que se ofrece Los estudiantes seleccionan cursos obligatorios y optativos sin exceder el numero máximo de créditos permitidos en su carrera Una vez que un estudiante se inscribe en un trimestre, se notifica al sistema de pagos tal que el estudiante pueda cobrársele por el trimestre Los estudiantes pueden utilizar el sistema para agregar o eliminar cursos por un periodo de tiempo después de la inscripción. Los profesores utilizan el sistema para recibir sus listas de grupo A los usuarios del sistema de inscripción se les asignan contraseñas que utilizan en la validación al entrar al sistema Análisis de la Aplicación AI llegar a nuestras manos la aplicación, debemos tomar los datos básicos que nos puedan dar una idea del mismo. Objetivo: Registrar a los alumnos en lcls cursos abiertos por los coordinadores y enviar la información a los profesores y al sistema de pago. Usuario: Los usuarios serán los alumnos, profesores, coordinadores y la gente encargada del sistema de pago. Su experiencia en el manejo de programas informáticos es nula. Hardware y Software: Programa hecho con cualquier lenguaje de programación orientado a objetos, ejecutado en una maquina Pentium Ill a 500 Mhz sobre Windows 2000. Primera Impresión: Parece un prograrna sencillo en su dinámica, pero difícil en cuanto a que debe de ser muy intuitivo para el usuario. Primer Paso: Hablar con las personas interesadas en implantar el sistema, por lo regular serán personas que ocupan altos puestos directivos. En esta primera cita se deben de establecer las funciones y los limites del sistema, así como identificar a los usuarios clave que harán uso intensivo del sistema. Se tendrán que realizar reuniones posteriores pero con los usuarios clave, para obtener toda la información posible sobre las transacciones que realizan para el proceso de inscripción. Hagamos un pequeño esquema de lo que seria el proceso de mecanización, conseguido a través del tradicional análisis funcional, luego lo compararemos con el análisis orientado a objetos. Análisis Funcional Una de las técnicas utilizadas normalmente para el análisis funcional es el descrito por Allan Albrecht en 1979, que busca y especifica las distintas funciones del trabajo del usuario final. Según esto, podemos desglosar en nuestro ejemplo los siguientes puntos: 1. 2. 3. 4. El coordinador abre los grupos El alumno se inscribe El profesor recibe la lista de sus alumnos El Sistema de Pagos cobra a los alumnos inscritos Estas serian las 4 funciones que atañen al objetivo del programa. Veamos ahora cómo debemos matizarlas para un Análisis Orientado a Objetos. Análisis y Diseño Orientado a Objetos (ADOO) El desarrollo con enfoque Orientado a Objeto requiere de una metodología cuyos objetivos, sean incorporar de una manera fácil la funcionalidad de las necesidades de los usuarios, generar descripciones del sistema que lo integren y que sean compatibles ante los cambios. La metodología más destacada en la actualidad es la Ingeniería de Software Orientada a Objetos (IS00 por sus siglas en ingles) descrita por Jacobson. Esta metodología incorpora el levantamiento de requerimientos como su actividad principal. Sus procesos se centran en la elaboración de modelos de/ sistema. Cada modelo es una descripción de aspectos relevantes del sistema en distintos momentos del desarrollo. Los procesos que integran a la I S 0 0 se muestran en la siguiente Figura: . / I Figura 4.l:Proceso de Ingeniería de Software Orientada a Objetos. A ....,......... Los óvalos en la figura se refieren a los procesos, los rectángulos se refieren a los distintos modelos que se generan. Se observa que el Modelo de Análisis también sirve como entrada para el Proceso de Pruebas, debido a que describe los casos de prueba más relevantes. En realidad los modelos de la IS00 están compuestos por dos o más modelos detallados como se muestra a continuación. El Modelo Análisis se compone a su vez de dos modelos: 0 Modelo de Requerimientos 0 Modelo de Análisis Dinámico El Modelo de Construcción esta constituido por tres modelos más elementales: 0 Modelo de Diseño 0 Modelo de Componentes 0 Modelo de Implantación Los modelos se explicarán con mayor profundidad en los siguientes capítulos. Para efectos de incorporar los conceptos del ADOO, los modelos se describen a través de la notación planteada por UML. El objetivo principal de este modelo es acelerar el conocimiento que se extrae de los usuarios clave, de tal forma que el equipo de desarrollo pueda llegar más rápido a la solución del problema. A la vez que establecen los requerimientos básicos del sistema. El modelo de Requerimientos se constituye a su vez de tres modelos: 0 Modelo de Casos 0 Modelo de lnterfaz 0 Modelo del Dominio del Problema Enel Modelo de Casos se establecen las principales transacciones que contendrá el sistema. Siendo una transacción cualquier interacción que el sistema tendrá con los agentes externos a él. Actores 0 .,,,,,, ,.fl,$gg..;: ..,.,.,. .~ ,.,., .,.,.,,. : ..........,....., ~ . ........., ~ : ... .. "....,........*........,. .'." ~~~~~~~~ Universidad Autónoma Metropolitana IztaDalaDa Un actor es alguien o algo que debe interactuar con el sistema que se está desarrollando. En la siguiente Figura, se muestran 10s'actores que utilizarán el sistema. P r o f Pago ewr Coordinador de Sistema Alumno Figura 4.2: Actores involucrados en el sistema Use Cases 0 0 Un Caso es un patrón de comportamiento que exhibe el sistema Cada caso es una secuencia de transacciones relacionadas que son efectuadas por un actor y el sistema dentro de un diálogo Se analizan los actores para determinar sus necesidades Coordinador -- mantiene los cursos y grupos Profesor -- solicita una lista Estudiante -- mantiene un horario Sistema de Pagos -- recibe la información de cobro del proceso de inscripción La siguiente Figura se muestran las transacciones más importantes del sistema. Mantenimiento de Cursos Solicita Lista de Curso Mantenimiento de Horario Figura 4.3: Uses Cases del Sistema Documentación de los Casos A continuación en la descripción de cada Caso se planteará paso a paso en qué consiste la transacción. La descripción del Caso debe de ser simple y puede contemplar algunas verificaciones, sin embargo, omite cualquier aspecto de decisión o de manejo de errores. Siempre se asumirá que el Caso es para las situaciones más comunes de la transacción. Se construye un flujo de eventos para cada Caso Se escribe desde el punto de vista del actor Detalla lo que el sistema debe proporcionarle al actor cuando el Caso sea ejecutado Por lo regular contiene - Cómo inicia y termina el Caso El flujo normal de eventos El flujo alterno de eventos El flujo excepcional de eventos m Universidad Autónoma Metropolitana lztapalapa De nuestro ejemplo seleccionemoselCasode siguiente descripción: Mantenimiento de Homrio que tiene la Diagrama de Casos 0 Los diagramas de Casos presentan una vista externa del sistema. Se crean para visualizar las relaciones entre Actores y Casos Los actores y sus relaciones con los casos se muestra en la Siguiente Figura: í ' " " ".... Aumno Profesor I .......... /' Solicita Lista de Curso """ " '. de ( ' ., 1 "".."~. ->\" .. l Mantenimiento de Cursos Sistema Figura 4.4: Diagrama de Casos Relaciones de Uses y Extends en los Casos Conforme los Casos son documentados , se pueden descubrir relaciones con otros Casos Una relación de Uses (utilización) indica un comportamiento que es común a uno o más Casos - Una relación de Extend (extensión) indica un comportamiento opcional Las relaciones que se encontraron entre casos se muestran en la Siguiente Figura: /' "-.. i ~ " Y " I Validación de Acceso \\~"/ Mantenimiento de Cursos Figura 4.5:Casos que utilizan otro Caso para realizar su actividad El Modelo de interfaz consta principalmente de la definición de las interfaces principales que participaran en la ejecución de cada Caso cuando el sistema exista. Las interfaces son las pantallas, reportes o llamadas a otros sistemas, perose aplica más a las pantallas. Diseño de lnterfaz de Usuario Cuando enfocamos cualquier aplicación hecha en un entorno gráfico como Delphi, Visual Basic, Power Builder, Java, debemos tener presente como punto de referencia la interfaz de usuario que manejará los datos. El punto de vista del usuario es lo fundamental. Por tanto, cualquier suposición pasará siempre el tamiz de la opinión del mismo. Ahora bien, no debemos caer tampoco en una dependencia absoluta e intentaremos reconducir al usuario por donde más nos interese. Els tarea del analista educar la usuario e informarle en un lenguaje sencillo de las posibilidades y limitaciones del sistema a implantar. El 60% o el 70% del tiempo queempleamos en eldiseñode una aplicación lo centraremos en la interfaz de usuario, y es que realmente la parte que ve el usuario es tal vez una de las cosas más importantes en un entorno visual. En la Siguiente Figura, podemos observar una pantalla para registrar un curso. Figura 4.6: Pantalla de Registro a Cursos En esta pantalla se le puede explicar al usuario que tendrá que seleccionar de una lista un curso disponible, el cual puede tener varios grupos. A continuación seleccionaría de una lista el grupo al que quiere asistir. En la parte inferior de la pantalla se visualiza el horario, el profesor y el salón asignado al grupo Cuando se tienen varias pantallas involucradas, no sólo será necesario mostrar las más importantes, sino además, señalar la forma en que se estarán activando dependiendo de la interacción que tenga el usuario con el sistema. Para poder plasmar este tipo de conocimiento, utilizamos los diagrama:; de Transición de Estados, en los se muestra el estado de un objeto y sus cambios de estado a través de una transición. Diagrama de Transición de Estados 0 0 Un diagrama de estados muestra La historia deuna clase dada Los eventos que provocan una transición de un estado a otro Las acciones que resuitan de un cambio de estado Los diagramas de transición de estados son creados para objetos con un comportamiento dinámico significativo Cada estado dentro de estos diagramas denota una pantalla en la que el usuario estará introduciendo datos o bien navegando en la información. En la siguiente Figura, se presenta el diagrama de Transición de Estados para el caso de registro a cursos. . Agregar Curso y Continuar Registrando [cuenta c Cred. Max] 1"( Login y Password Registrar Cursos / 1 1'"""( asignar cuenta= O Principal Fin del Programa \ n 1 [cuenta <= Cred. Max ] Figura 4.7: Navegación de pantallas en el Modelo de Casos En este diagrama se tiene un estado inicial (circulo negro) que es donde parte la ejecución del programa, se necesitara (le un Login y Password para acceder al sistema y poder llegar a un estado o pantalla (rectángulo con leyenda) en la que el usuario puede plantear acciones a realizar. En es c.aso,las acciones a que tiene acceso son dos: Registrar Cursos o Finalizar el Programa. En caso que decida Registrar Cursos, cambia a una pantalla en donde podrá ver la información de un curso y seleccionarlo. En esa pantalla podrá agregar el Curso seleccionado a la Base de Datos y continuar registrando otros Cursos sin excederse del número de créditos máximo permitido, o bien regresar a la pantalla principal. Unavez que ha registrado todos sus cursos se muestra en una pantalla su horario correspondiente y puede regresar a la pantalla principal. Cuando en la pantalla principal se decide terminar el programa se selecciona la opción Fin del Programa y se llega al estado final (círculo negro con marco). El Modelo del Dominio del Problema tiene como objetivo principal identificar los objetos de información y las relaciones que guardan entre sí. Lo anterior se plasma en un Diagrama de Clases. Para cada Caso del Modelo de Casos, se obtiene un Diagrama de Clases, de tal forma que éste contendrá los objetos que necesite para desarrollarse. Para acometer la resolución del problema, se divide el análisis en una serie de fases. Veamos cuáles son: .,.. .......~ ...~ .....,.... ,.....,..:.,. :.:...~,:~,:...:<~.:.:.~~ .~.~~~~~~~ ......<......., ,. c.:<... .... ~~~~~~~~~~~ Universidad Autónoma Metropolitana lztapalapa " Atributos Definir estructura Servicios Temas entidades reales en clases y objetos Se han de definir atributos o propiedades para definir un objeto. Los atributos son datos almacenados en un objeto. En esta fase se declaran las relaciones existentes entre todas las entidades Se definen como servicios aquellos procesos que ha derealizar un objeto. Esta fase agrupa varias entidades por algún criterio temático 4.1.3.a Definición de clases y objetos En esta fase se tratan de identificar los elementos de la realidad que se van a convertir en definiciones de clases. Una clase no es más que una abstracción de un objeto, o lo que es lo mismo, las características comunes a un grupo de objetos. Discernir qué conjunto de objetos son susceptibles de crear una abstracción, o sea, una clase, será la labor del analista. Posteriormente, estas definiciones se utilizarán para crear objetos dentro de la aplicación. . . .,:. ., . : 4.,1.3,.bDeterminacibn -de:objetos Como su propio nombre indica lo que nos importa en este análisis es discernir cuáles van a ser los objetos que van a formar parte de la aplicación. Tal vez ésta es la tarea más complicada del analista. En un primer momento, no debemos intentar enfocar con rigurosidad los objetos que nos puedan hacer falta en nuestra aplicación. Lo que haremos será un brain storming (tormenta de ideas) que depuraremos con posterioridad. Una forma fácil de localizar objetos es encontrar en la aplicación: 0 0 0 0 0 Cosas Lugares Personas o funciones Eventos Conceptos Organizaciones Según esto, en nuestro ejemplo podemos conseguir los siguientes objetos: Cosas "b Lista de Alumnos, Horario Lugares -b Grupo Conceptos ---+ Curso, Inscripción, Trimestre Personas Alumno, Profesor, Coordinador, Sistema de Pago + Podríamos, por tanto, a partir de aquí, crear unas clases candidatas, es decir, que posiblemente serán las clases utilizadas en la aplicación. Cuando definimos las clases .......,<...,......,.,.,...,,.......c. ....A, ......... .........,.,.,....... ..,.. ,, ~~~~~~ . Universidad Autónoma Metropolitana IztaDalaDa : . : ~ , ~~~~~~~~ tenemos que indicar también cuales van a ser sus métodos y sus propiedades, así como los términos específicos de la programación Orientada a Objeto. Para aquellosque no están acostumbrados a esta terminologia, lo podemos comparar con los procedimientos y variables que debe contener un módulo, donde podemos tomarnos la licencia de igualar clase con módulo, procedimiento con método y variable con propiedad, con las salvedades de comparar estostérminossin estar en mi ánimo el decir quesean equivalentes. El siguiente esquema podría ser válido para la definición de clases: ~....:......:..:...:..:.:.:.:....,... i..:..i.:......... .....:.:.:.(. :.....(.... : .: ..: ,~,..., :~, ....... , :.:.:...:........ , , . , : ..............................................................,.,. ................ ........................... .. ... ..... ........ ,.... .....,. ,, ,, , ~..................... ~ : 1 . . 1 . .... : ..... .., ;._. : . . . . ..:. .....................:.................................................:.....................,.,..........,.....~ : ~ F ~ , .....................................................,..,.,. ................../. ,. , , . ,... ...:......, ..,................. ............ , , ,, ,,, , ,,,, ,,,, ,,, ,,,, , ,,,, Nombre Matricula Carrera CrearAlumno RegistrarCurso SolicitarHorario Profesor Nombre No. de empleado Area de investigación Crearprofesor SolicitarLista ComprobarHorario Coordinador Nombre No. de empleado Area de investigacih Carrera Materia (UEA*) Grupo Trimestre Lectivo No. de Alumnos Profesor CveGrupo Salón Horario CrearCoordinador AbrirCurso EliminarCurso ... ... Curso Grupo ... Crearcurso ComprobarExisteMateria CogerTrimestreActual CogerProfesor. ... CrearGrupo CrearHorario RegistrarSalon ... Inscripción Alumno Calificación Curso Materia (UEA*) Trimestre Lectivo Crearlnscripcion RegistrarAlumno RegistrarCurso RegistrarCalificacion ... * Unidad de Enseñanza-Aprendizaje Comprobamos que no todas las clases previamente encontradas se convierten en clases reales. Por ejemplo, comprobamos que el Trimestre es una característica del Curso y que en esta aplicación importa poco quien es el Sistema de Pago, ya que sólo se le notifica que el Alumno esta inscrito y puedecobrarle por el trimestre. El Horario y la Lista de Alumnos las proporcionara el sistema una vez realizada la inscripción. El desglose que se hizo anteriormente muestra los objetos de la aplicación en general, sin embargo, como el sistema cuenta con másde una transacción es necesario ser más preciso en cuanto a la definición de los objetos que participan en cada una de ellas. Ya quese parte del Caso, se tomará la descripción textual del Caso y se identificaran los candidatos a objetos. La forma en que identificaremos a nuestros candidatos es mediante ~ ~ ~ ~ los sustantivos de las oraciones, también es posible identificarlos con los verbos que actúan sobre los sustantivos. A continuación se muestra el Caso de Mantenimiento de Horan'o mostrando los candidatos a objetos marcados en negritas y los verbos marcados con itálicas. 1 2 3 4 5 6 7 8 9 10 El Alumno da su número de matricula. El sistema muestra los Cursos a los que se puede inscribir de acuerdo a su Carrera. El Alumno selecciona el Curso al que se desea inscribir. El Alumno selecciona un Grupo correspondiente al Curso elegido. El Alumno verifica el Horario, el Profesor y el Salón del Grupo seleccionado. El Alumno le indica al sistema que no hay problema en la elección del Grupo, de tal manera que se desea inscribir en al Curso. El sistema registra el Alumno al Curso y actualiza el número de Alumnos Inscritos en el Grupo. Mientras el Alumno no exceda el número de Créditos permitido puede seguir registrando Cursos. El Alumno le indica al sistema que haterminado de realizar su Inscripción. El sistema muestra el Horario y lo imprime. Fin del Caso. Como habíamos visto antes algunos de los candidatos encontrados no se convertirán en clases, pues son propiedades o acciones de otros. Pero contamos con información adicional que no teníamos antes. En el paso 2 tenemos que no todos los Cursos abiertos por la Universidad pueden ser inscritos por el Alumno, sino sólo aquellos en los que se cumpla con los Requisitos y de acuerdo a la Carrera cursada. Aquí tenemos una clase candidata: Carrera. En el paso 8 al no exceder el número de Créditos permitido, nos obliga a que un Curso debe de tener al menos una cantidad de Créditos asignada. Por lo tanto, un Curso tendrá las propiedades de Número de Créditos y de Requisito, sin embargo, aún nos falta detallar más este objeto como se verá más adelante. Con referente al candidato sistema es obvio que no crearemos instancias de éI, pues es la aplicación en si. En este punto surgen aspectos que son importantes para una buena administración del proyecto: Una clase es una colección de objetos que tienen en común estructura, comportamiento, relaciones y semántica Una clase se dibuja como un rectángulo con tres separaciones Las clases deben ser nombradas utilizando el vocabulario del dominio Deben crearse estándares de nomenclatura P.e., todas las clases tienen nombres en singular iniciando con la letra "c" minúscula seguido de una letra mayúscula La siguiente Figura, muestra las clases encontradas después de analizar el caso de registro a cursos. cCoordinador Figura 4.8: Clases encontradas en la descripción del Caso 4.1.3.C Atributos Definición de atributos Los atributos se utilizan para guardar información en un objeto y diferenciarlo de los otros. Existirán atributos comunes a todas las clases de una jerarquía de clases, que deberán ser definidos en la clase origen de todas las demás. Es conveniente que los atributos de un objeto sean manejados sólo por los servicios definidos en ese objeto. Si por cualquier razón otro objeto necesita acceder a los atributos de este objeto, se creará un servicio especifico para ello. Ocultar la información Del mismo modo que se diseñan los objetos para que funcionen en cualquier entorno, se hade ocultar toda la información posible del interior del mismo. Estaremos utilizando entonces el principio de encapsulación. Se debe de evitar, por tanto, que cualquier otra clase pueda visualizar elementos ocultos de ésta. Una vez establecidas las Clases iniciales, es posible asignarles los atributos básicos a cada una. 0 0 La estructura de una clase se representa por sus atributos Los atributos pueden encontrarse al analizar las definiciones de las clases, los requerimientos del problema y por aplicar el conocimiento sobre el universo del problema Analizando la definición de la clase Alumno encontramos sus siguientes atributos: Un alumno tiene un nombre, matricula y carrera cAlurnno &Carrera Figura 4.9: Definición de Alumno Algunas veces no estan directo encontrar los atributos de una clase porquepodemos estar definiendo los atributos de otra, veamos la siguiente definición: Cada curso ofrecido tiene una clave, lugar y horario Figura 4.10: Definición de Curso Debemos de ser cuidadosos porque aunque la definición se refiere a un curso, las características antes descritas son las que presenta un Grupo (Figura 4.11), estoes lo que pasa con las clases que están relacionadas con otras o son contenedoras. La Figura 4.12 muestra la definición de curso corregida. Cada Grupo tiene una clave, lugar y horario cGrupo QCveGrupc Figura 4.1 I :Definición de Grupo Cada curso ofrecido tiene al menos un grupo asignado Figura 4.12:Definición de Curso No todas las clases y los atributos los encontraremos al analizar los requerimientos o las definiciones, habrá clases o atributos que se irán agregando paulatinamente mientras se va desarrollando la aplicación. A continuación en la Figura, se muestran lasclases encontradas con sus atributos: ". cProfesor ". @Nombre QNumEmpleado I ccurso @Grupo $>U EA @Profesor @NoAlumnos &Trimestre I I P ~- . cUEA &Cve UEA I@Creditos @Requisito 1 "1 7 " cCoordinador ~ @Nombre @NumEmpleado Wealnvestigacion Carrera @$vecarrera 1 clnscripción I1 I Figura 4.13 Clases con atributos Si observamos la clase Curso, no tiene las propiedades de Créditos, Materia, y Requisito como Io habíamos definido antes, esto se debe a que definimos la clase UEA dentro de la clase Curso. Entonces un Curso tendrá un Grupo, una UEA, un Profesor, No. Alumnos y Trimestre. .. . 4.1.3.DDiagramas de Clases El éxito en la etapa del análisis orientado a objetos se basa en identificar las entidades o clases que intervendrán en el desarrollo final y cómo se van a interrelacionar. Por tanto, se pretende convertir los elementos del mundo real en clases para intentar resolver el problema propuesto. La ventaja que se obtiene de este tipo de análisis es que existe una aproximación entre todos los participant.es deun proyecto, analistas y usuarios. Un diagrama de clases muestra la existencia de clases y sus relaciones en la vista lógica de un sistema. Además se les puede aplicar los elementos de modelado: Clases con su estructura y comportamiento Relaciones de asociación, agregación, dependencia y herencia lndicadores de multiplicidad y navegación Nombres de roles Dado que el Modelo de Dominio del Problema esta centrado en los objetos de información y sus relaciones, es posible a partir de los Diagramas de Clases establecer la estructura que tendrá la base de datos. Por esta razón utilizaremos dos conceptos fundamentales de las bases de datos relacionales: Entidad y Relación. Entidad es una persona, lugar, cosa, concepto o suceso, real o abstracto, de interés para la organización. Un entidad esta compuesta por atributos o características que la hacen diferente a otras. En nuestro enfoque Orientado a Objetos es el objeto acerca del cual queremos guardar información. Una relación es una asociación o correspondencia entre entidades. Esta definición es parecida a la que tenemos con los objetos, en la que establecemos los vínculos que tendrán entre si los objetos. Determinación de los atributos que pudiesen ser llaves relacionales La llave relacional es un término que viene del diseño de bases de datos relacionales, su significado es el de un identificador Único que puede formarse por uno o más atributos que conforman la entidad. Se utiliza para poder identificar un registro de la base de datos de manera única y sin ambigüedades. Por lo tanto, no pueden existir dos valores de llave primaria iguales. Por lo anterior es importante plantear las clases que serán la base para la definición de relaciones, por lo que es necesario establecer los atributos que constituirán la llave relacional. El modelo queda de la siguiente forma: Nombre I ccurso &Grupo 3 Profesor @Trimestre cProfesor cCoordinador @NumEmpleado @ @Nombre Wealnvestigacion @NumEmpleado @ &Nombre Q$cealnvestigacion %Carrera "~ I I &Nombre QCreditos @Requisito cGrupo 1 I clnscripción Calificacion QGru po @Trimestre 1 I i Figura 4.14: Clases con Atributos llave señalados (@) Tenemos problemas al querer asignar la llave relacional a las clases Curso e Inscripción, debido a que el manejador de base de datos relacional no incluye tipos de datos complejos como lo son los objetos, sólo acepta tipos de datos simples. Así que debemos utilizar las llaves relacionales de los objetos contenidos en estas dos Clases (ver Figura 4.15) : .. .. .. .................................................... . . . . . . . . . . . . . . . . . . . . Universidad Autónoma Metropolitana ktaDalaDa . ~ . ~ - ~~~ . " " " ~~ ~ ccurso @CveGrupo @ @CWUEA@ @Trimestre @ @NumEmpleado %NoAlumnos Figura 4.15: Clases con Atributos llave formados por tipos de datos simples Tipos de Asociaciones Existen tres tipos de asociaciones: Asociación Agregación 0 0 0 Dependencia Una asociación es una conexión bidireccional entre clases Una asociación se indica con una línea conectando las clases relacionadas Una agregación es una forma más rígida de relación donde la vinculación es entre un todo y sus partes Una agregación se indica con una línea conectando las clases relacionas con rombo en el extremo de la clase que representa al todo Una relación de dependencia es una forma másdébilde relación que indica una vinculación entre un cliente y proveedor en donde el cliente no tiene un conocimiento semántico del proveedor - Una dependencia se indica con una línea punteada con dirección del cliente al proveedor Identificación de las asociaciones estáticas entre clases La forma de establecer los vínculos que tendrán entre sí los objetos es la siguiente: - Buscamos todas las combinaciones validas deasociaciones binarias: Profesor vs Curso Profesor vs UEA Profesor vs Grupo Coordinador vs Carrera Alumno vs Carrera Alumno vs Curso Alumno vs UEA Alumno vs Grupo Alumno vs Inscripción .:.:.:......,......,. .:.:.m:.:.:~m ......,.,.. :$$M : :*,:::... ~ A........I..... ~ ................................... ............................ ..~ ~ Carrera vs UEA F Curso vs UEA Curso vs Grupo Curso vs Inscripción UEA vs Grupo UEA vs Inscripción Grupo vs Inscripción Las asociaciones ternarias, cuatemarias y las que le siguen no las aplicaremos, nos quedaremos sólo con las asociaciones hinarias. Las combinaciones marcadas con negrita son las que tomaremos como validas. Algunas combinaciones no se relacionan como pudiera parecer, por ejemplo un Alumno no esta realmente relacionado con la UEA, sino con la Inscripción al Curso para acreditar la UEA. Las siguientes combinaciones marcadas con itálica no tienen relación directa: Profesor vs UEA Profesor vs Grupo Alumno vs UEA Alumno vs Grupo Alumno vs Curso UEA vs Grupo UEA vs Inscripción Grupo vs Inscripción Identificación de la multiplicidad detectadas 13 cardinalidad de las asociaciones binarias La multiplicidad define cuántos objetos participan en una relación, nos indicara las reglas de negocio que la información debe de cumplir en todo momento para que guarde la integridad entre los distintos elementos que la componen. La multiplicidad es el número de instancias de una clase relacionados con UNA instancia de Iraotra clase Para cada asociacicln y agregación, existen dos decisiones de multiplicidad que se tienen que hacer: una para cada extremo de la relación Aunque las asociaciones y las agregaciones son bidireccionales por omisión, con frecuencia es deseable restringir la navegación en una sola dirección - Si se restringe la navegación, se agrega una flecha para indicar la dirección de la navegación La forma de determinar la cardinalidad, consiste en establecer cuantos elementos a lo mínimo y a lo máximo podemos relacionar un objeto con los objetos del otro lado de la asociación. Los valores pueden ser 0,1,2,...; cuando desconocemos el número preciso de objetos que se relacionan, aplicamos el concepto de muchos (*) o N. A continuación determinaremos la cardinalidad de las asociaciones validas de nuestro ejemplo. Asociación Grupo vs Curso Un Grupo tiene asignado sólo un Curso y un Curso es abierto para un sólo Grupo (Figura 4.16) 1 Figura 4.16: Asociación Uno a Uno Asociación UEA vs Carrera Una Carrera puede tener varias UEA y una UEA puede ser impartida en varias Carreras (Figura 4.17) Figura 4.17: Asociacion Muchos a Muchos Asociación Coordinador vs Carrera Un Coordinador se encarga de una sola Carrera y una Carrera tiene sólo un Coordinador (Figura 4.18) Figura 4.1 8: Asociación dinámica Esta relación en realidad no existe porque es dinámica , es decir, se da en tiempo de ejecución de la aplicación. Un Coordinador en realidad es un Profesor que tiene a su cargo la Coordinación de cierta Carrera, su función es planear las UEA que se abrirán en el Trimestre. Entonces un Profesor esta relacionado con la Coordinación y puede estar a su cargo o no (Figura 4.19). 1 Coordinación 1 1 0..1 ~" 11 1 Figura 4.19: Asociación Uno a Uno con opcionalidad Ahora analicemos la asociación Coordinación vs Carrera, al ver sus características de ambas nos damos cuenta que no están relacionadas porque son dos cosas diferentes, la Coordinación no solamente se encarga deuna Carrera, puede abarcar el Tronco General, los laboratorios, el Posgrado y otras áreas de Universidad. Debido a que una Coordinación tiene 1JEA asignadas y las UEA pueden estar en varias Coordinaciones, obtenemos la siguiente asociación: r " " " " -~ Coordinación - -. 1..* "~ Figura 4.20: Asociación Muchos a Muchos Todas las relaciones se muestran a continuación: cCoordinaci6n QCveCoordinación @Nombre @Division 1 IQ 0..1 1..* QCwProfesor @Nombre weatnvestigacion cGrupo @CveGrupo @ @Salon @Horario 1 ! 1 1 l..* cUEA I I ccurso QCveGrupo I . .. ,/' IQ 1 @Requisito I ccarrera I I cAlumno I &Nombre Figura 4.21: Diagrama de Clases que incluyen asociaciones con multiplicidad Notemos que se cambio el nombre de la propiedad NumEmpleado de la clase Profesor por CveProfesor con el fin de que sea más entendible el diagrama. También la clase Alumno cambio su propiedad Carrera, un tipo de dato complejo, por el atributo llave CveCarrera , un tipo de dato simple. Remplazo de asociaciones cuya multiplicidadsea Uno a Uno o Muchos a Muchos. La razón por la que se remplazarán tales asociaciones es que en ellas se establecen vínculos complejos entre conjuntos de objetos, que un manejador de bases de datos puede no soportar o sea difícil darles mantenimiento. Las relaciones Uno a Uno normalmente corresponderán a situaciones en las que se establecieron atributos como clases. Por lo que la estructura de una de las clases será parte los atributos de la otra (Figura 4.22): I L Clasel I I Atributos de Clasel Atributos de Clase2 Figura 4.22 Simplificación de la asociación Uno a Uno Sin embargo, es necesario ser cuidadoso con la opcionalidad dentro de las asociaciones Uno a Uno (Figura 4.23): Figura 4.23: Asociación Uno a Uno con opcionalidad Si decidiéramos unir los atributos de las clases, se tendrían algunos campos sin utilizar con posibles problemas de llenados err'óneos. Por lo tanto, la clase con opcionalidad se le agregara el atributo llave de la clase a la que esta vinculada. La forma de simplificar las asociaciones muchos a muchos, consiste en incluir una nueva clase en lugar de la asociación. Los atributos de la clase nueva serán las llaves relacionales de las clases con quien se estará vinculando, más los atributos que correspondan por situación propia. Como se muestra en la Figura 4.24. m Universidad Autónoma MetroDolitana IztaDalaDa I 4 Clasel Clasel 3 ' I 1 1 l..* I====! Clase2 I ~ 1 a s e 1 - ~ 1 a Is e 2 a) Asociacion Muchos a Muchos b) Asociacion Muchos a Muchos Simplificada Figura 4.24: La simplificación Muchos a Muchos contiene sólo asociaciones Muchos a Uno y produce una nueva clase. El modelo completo con los reemplazos correspondientes se muestra en la Figura 4.25: cCoordinación cProfesor Q QCveCoordinaciÓn @Nombre &Division 0..1 1..* ccurso &Nombre @Creditos &$Requisito -4 @CveGrupo Q QCveUEAQ @Trimestre Q @CveProfesor 1..* QNoAumnos %Salon @Horario 1 " I 1 1..* I " I clnscripci6n I1 $;Matricula Q @Nombre CveCarrera 1 @CveU=@ @vtatricula Q QCveGrupo @ @Trimestre Q QCalificaaon Figura 4.25: Modelo que contiene sOlo asociaciones Muchos a Uno y Uno a Uno con opcionalidad Universidad Autónoma Metropolitana IztaDalaDa Es interesante lo que paso entre las clases Grupo y Curso, al principio cuando se definieron las clases hicimos la distincibn entre éstas dos, pero al analizar sus relaciones llegamos a que el Grupo es parte de Curso. Tal vez el lector ya se había percatado de esta situación, pero fue mi propósito dernostrar que siguiendo con el modelo llegaríamos a las clases correctas. También podemos comprobar que si no hubiéramos encontrado la clase Curso al analizar los requerimientos, la pudimos haber obtenido con alguna de las asociaciones, por ejemplo, la asociación Alumno vs UEA (Figura 4.26): Figura 4.26: Asociacion sin la clase Curso AI aplicar la simplifcación a esta asociacion obtenemos la clase Curso, que como habiamos visto es la que realmente esta asociada con UEA y con Alumno (Figura 4.27). 1..* Figura 4.27 La simplificación crea una nueva Clase Sin embargo, todavia existe una relaciljn Muchos a Muchos en Curso vs Alumno, por lo que, volvemos aplicar la simplificación a esta asociación para obtener la clase Inscripción (figura 4.28): Eh:H7, clnscripción , cAlumno Figura 4.28: Modelo con sólo relaciones Uno a Muchos m ..... Universidad Autónoma Metropolitana IztapalaDa Aplicar los conceptos del Modelo Orientadoa Objetos Hasta este punto se han seguido los mismos pasos que se encuentran en el Análisis de Bases de Datos Relaciones. Sin embargo, nose han incluido dentro del modelo conceptos como herencia, polimorfismo, encapsulamiento, métodos, agregación y composición. Por lo que en esta etapa iniciaremos a incluirlos. Existen dos tipos de definición de estructuras dentro de esta fase: Parte-Todo Por ejemplo, Generalización-Vehículo, EspecializaciónAutonlóvil. Emula la forma en que dividimos los objetos que nos rodean. Por ejemplo: Vehículo , compuesto de ruedas, motor. asientos. etc. Parte-Todo Este tipo define las relaciones que (existen entre las clases contenedoras y clases contenidas. Las clases contenidas no heredan atributos o servicios de las clases padre. El concepto más fácil de incluir es el de agregación simple,si recordamos una agregación es una relación entre el todo y sus partes. La agregación composición es más restrictiva que la agregación simple, se tiene que éI todo y sus partes tienen el mismo tiempo de vida, es decir, si se crea el todo se crean las partes; por el contrario si se destruye el todo también se eliminan sus partes. En la Figura 4.29, se muestra el modelo completo con las asociaciones de agregación y composición. Universidad AutónomaMetropolitana IztaDalapa cProfesor 0..1 l..* UEA-Coordinacion ____I_ &CveCoordinacion r-" @ 1 .* l.' l1 " "~~~ 1 C l..* 1 I"I 1 €$Salon @Horario PlancleEstudios @Cv&arrera@ @CVC!UEA@ 1..* ,* + T I P ~ ~ J E A 1 " A cCarrera Qcvecarrera @ o"----------@Nombre i-" 1 I clnscripción cAlumno @Matricula @ l..* &Matricula @ QCveGrupo @ @Trimestre @ ' Figura 4.29: Asociaciones de Agregación y Composición Se tiene que un Curso está compuesto por profesores, UEA y las inscripciones de los alumnos al grupo. Pudiéndose crear cada uno de ellos en momentos muy distintos. En cambio cuando se crea un alumno dekle existir una carrera, o de lo contrario no existe el alumno; y cuando se elimine la carrera también se deben de eliminar los alumnos que pertenezcan a ella. Pero una carrera puede existir sin alumnos, aunque suene ilógico debemos tenerlo presente. Las asociaciones de agregación sugieren que las operaciones de mantenimiento a esos objetos tienen que hacerse dentro de una misma transacción. Por lo que es conveniente indicarlas en el modelo. Generalización-Especialización Se utiliza este tipo para definir las relaciones de herencia entre una clase padre y su hija. De esta forma, la herencia toma atributols y servicios de la clase padre. O O 0 La herencia es una relación entre una superclase y sus subclases Existen dos formas de identificar la herencia: Generalización Especialización En el nivel más alto aplicable en la ,jerarquía se indican los elementos comunes como atributos, operaciones y/o relaciones Si recordamos nuestra aplicación será accedida por los usuarios mediante un login y un password, los usuarios son los profesores y los alumnos, entonces podemos establecer una relación de herencia que defina los atributos de los usuarios en una clase de nivel más alto. Como se muestra en la Figura 4.30: @Login @Password ~ I QCveProfesor @ @Nombre Qpcealnvestigacion cAlurnno @Matricula @ @Nombre @$vecarrera Figura 4.30 Asociación de Herencia La asociación nos dice que tanto como Profesor y Alumno heredan las propiedades Login y Password de la clase Usuario. No se mostró todo el modelo, porque resultaría difícil dibujar esta relación en el diagrama de clases. Los conceptos antes vistos son los que incluiremos en este modelo, los que faltan se incluyen en las siguientes etapas. A este nivel también podemos definir los métodos básicos de las clases, pero los dejaremos para el siguiente modelo. La encapsulación ya la discutimos al definir los atributos. Quiero detenerme en este instante para hacer notar al lector que aquí radica el 90% de las diferencias entre el Diseño tradicional yel DOO. Es el trabajo pormenorizado y concienzudo que determine las clases el que convertirá a Java en una herramienta que facilite la programación de nuestras aplicaciones, o que sea un lenguaje más, con buenas prestaciones y punto. Por tanto, es primordial que el analista o analista-programador sepa que de éI depende que el programador tarde más o menos tiempo en desarrollar una aplicación. El problema surge, sin duda, a la hora de definición de clases. Es francamente difícil, por no decir imposible, sentarse alrededor de una mesa y diseñar todas las clases. En la práctica, este proceso será paulatino, iremos incorporando a las bibliotecas de clases las que conelpaso del tiempo vayamos considerando como reutilizables. Por tanto, deberemos comenzar con un mínimo de clases a las que iremos incorporando nuevas, lo que implica que realmente sacaremos provecho de la orientación objeto cuando llevemos un cierto tiempo haciendo aplicaciones, o sea, que paciencia, ya que el resultado dará paso a lo que todo programador desea y que es Io que se ha venido a llamar últimamente R.A.D. (Rapid Application Development) o Desarrollo Rápido de Aplicaciones. Discutido este punto pasemos a la siguiente etapa del desarrollo, el Modelo de Análisis Dinámico. Universidad Autónoma MetroDolitana IztaDalaDa El objetivo de este proceso es identificar las principales interacciones dinámicas entre los objetos obtenidos y por supuesto descubrir nuevos objetos dinámicos. En primer lugar se establecen los distintos tipos de objetos que pueden estar dentro de un sistema. Se plantea el mecanismo de colaboración entre los objetos, así como los mensajes y la secuencia de los mismos. Como hemos entrado de lleno en las clases que podríamos llamar informáticas, esta muy clara la división que se puede hacer. Por un lado, tenemos aquellas clases que se van a convertir en objetos en pantalla y que, por tanto, tienen representación gráfica. Son las clases visuales; por el otro, las que son una colección de propiedades y métodos que son llamados desde otros objetos pero que no forman parte de la interfaz, son las clases no visuales. A estos, se han unido clases que manipulan datos. Por tanto, el diseño de las clases que anteriormente veíamos nunca puede ir desligado con los objetos visuales que vaya a telner la aplicación. Según esto, hay una forma muy clara de asociar las clases definidas a nivel analítico con los objetos que el usuario va a ver. Las categorías más simples de objetos son: 0 Objetos lnterfaz 0 Objetos de Negocio 0 Objetos de Datos Objetos lnterfaz I I I n Presentanlainformación al usuario y/o permiten la adquisición de información del usuario hacia el sistema. <<Nombre dclOtqetoIrLcrfnz>> Objetos de Negocio Se encargan de la lógica (los algoritmos) de la aplicación, y delas reglas del negocio. 0 < < N o n h e delObjdodeNegoc~e> Objetos de Datos 1 CCNmnhre o del Objetode D a t o @ > Establecen la conexión con las fuentes de datos, así como la consulta y actualizaci6n de los datos. A ~~~~~~.~~ ........................................,.. ,<.,.,.....,~ ....................................... ~~~~~~~ Universidad Autónoma MetroDolitana IztaDalaDa Cuando un programa se constituye sólo con estos tres tipos de objetos se dice que se está utilizando un modelo de Tres Capas o de three tier. Estemodelo permite mejores niveles de mantenimiento, pues sólo será necesario cambiar la capa donde se solicitan las modificaciones de funcionalidad del programa. Este modelo puede expandirse en un modelo Multicapa o rnulfi tier, que incorpora más de tres niveles de comunicación. UML utiliza el modelo de tres capas, en la Figura 4.31 muestra en que sentido fluye la comunicación entre capas. Figura 4.31 Modelo de tres capas con notación de Objectory Todas las transacciones inician y terminan con la interacción entre un actor y un objeto las capas adyacentes, no puede haber interfaz. La comunicación es sólo entre comunicación de otro tipo, por lo tanto no hay comunicación entre la capa de interfaz y la capa de datos. El primer paso que debemos hacer en un ADO0 será explicitar con mayor claridad los puntos funcionales del sistema definidos en el Modelo de Requerimientos. Utilizaremos para ello los escenarios. Esta denominación vienedeanalizar la realidad como si de una película se tratase, viendo qué escenarios se producen. Normalmente derivarán de los puntos funcionales. Un escenario es una instancia o ejemplo del Caso, en el se establecen los valores específicos de cada paso del Caso y llas acciones que realiza el actor. Un escenario lo componen las siguientes partes: Descripción del Caso Descripción de los valores para cada paso del Caso. Para cada caso se seleccionan los escenarios mas probables y significativos: Escenario de operación más simple Escenario de operación correcta m i s representativa Escenario de operación incorrecta Escenario de operación con excepciones De nuestra aplicación de ejemplo, acerca del Caso de Manfenirnienfo de Horan'o podemos 1 escenario siguiente (Tabla 4.'1): lenera 3 ............................................................. .................... ?. ........*:.. ........... >.................................................. &Bj&l;p:c& ................................................ .:. ................ ..... ...:.:.:.: j:::::.:::..:.:............................ :.:.:. ~ ............... :...::.:...................... ............... . . . . . . . ....... : ................................................................ ...................................... ............... 1 2 3 8 9 10 :I Alumno da su número de matricula 3 sistema muestra los Cursos a los que ;e puede inscribir de acuerdo a su >arrera. ~ ~ ~ ~ 2ursos para la Carrera de Computación: Análisis y Diseño de Sistemas de Computación 3 Introducción al Diseño de Bases de Datos ZI Análisis de Algoritmos 3 Alumno selecciona el Curso al que se J Análisis y Diseño de Sistemas de Computación lesea inscribir. 3 u p o = C151 3 Alumno selecciona un Grupo :orrespondiente al Curso elegido. 3 Alumno verifica el Horario, el Profesor Horario Teoría : Lunes, Miércoles y el Salón del Grupo seleccionado. Viernes de 18:OO a 19:30. Practica : Jueves de 18:OO a 20:OO Profesor Luis F. Castro Careaga Salón B-310 La elección es OK =I Alumno le indica al sistema que no l a y problema en la elección del Grupo, Je tal manera que se desea inscribir al hso. 3 sistema registra el Alumno al Curso y Supóngase que el alumno se inscribió a actualiza el numero de Alumnos curso de ADSC, cuyo cupo era de 40 entonces su cupo será de 39. nscritos en el Grupo. Supongamos que registra sólo un curso Mientras el Alumno no exceda el ?úmero de Créditos permitido puede seguir registrando Cursos. El Alumno le indica al sistema que ha La inscripción es OK terminado de realizar su Inscritxión. El sistema muestra el horario y lo Se imprime el horario con los datos: Imprime. Clave de la UEA: 212355 Nombre de la UEA: Análisis y Diseño dc Sistemas de Computación Grupo: C151 Profesor: Luis F. Castro Careaga Horario: Teoría : Lunes, Miércoles y Viernes de 18:OO a 19:30. Practica : Jueves de 18:OO a 20:OO Salón: B-31O 3 Fin del Caso Tabla 4.1 Caso y un escenario asociados correspondientes a la inscripción de un Curso : Realizaciones de Casos Para cada escenario, es necesario identificar los objetos con los que interactuará el actor, los objetos que harán las operaciones relacionadas con el negocio y los objetos que obtendrán la información dela base de datos. Para proceder a la identificación de los distintos tipos de objetos nos apoyamos en los diagramas de interacción. Los diagramas de interacción descritlen cómo se realizan los Casos por medio de interacciones entre conjuntos de objetos. Existen dos tipos de diagramas de interacción: Diagramas de Colaboración 0 Diagramas de Secuencia El Modelo de Análisis Dinámico utiliza los Diagramas de Colaboración para obtener las clases dinámicas. La notación de éstos diagramas describe a las relaciones dinámicas entre los objetos mediante líneas rectas y los mensajes que se envían a través de las flechas. Los objetos se representan en forma de rectángulos en donde se indica a la clase que pertenecen. Un diagrama de colaboración muestra las interacciones de los objetos organizadas alrededor de los objetos y sus ligas de unos con otros. En la Figura 4.32 se puede observar un diagrama de colaboración para satisfacer el primer punto del escenario de ejemplo (Tabla 4.1). Ya que el usuario estará inscribiendo un curso abierto por la Universidad, la primera actividad que se tiene que realizar es identificar al alumno para obtener los cursos que puede inscribir de acuerdo a su historial académico. La nomenclatura que utilizamos para nombrar los diferentes tipos de objetos es la siguiente: Todos los objetos tienen nombres en singular iniciando con la letra "o" minúscula seguido de una letra mayúscula que indica el tipo (I interfaz, N negocio y D datos). Por último se tiene el nombre del objeto. 1: matricula + OK _.. , I clReqistroCursos , :Alumno ~ J; 2: validarMatricula( ) cNAlumno 1 4, 3: getExpediente( ) Figura 4.32 Diagrama de Colaboración para el escenario de ejemplo La primera acción se da cuando el objeto interfaz correspondiente a la pantalla de registro debe identificar al alumno. Como su función se limita a mostrar y recibir información, debe solicitarle esta información a un objeto de negocio que es especialista en servicios sobre los alumnos. Por lo tanto, le envía una solicitud all objeto de negocio oNAlumno, éste validará la matricula del alumno y para poder completar con su responsabilidad, debe consultar sus datos, por lo que le pedirá este servicio al objeto de datos oDAlumno a través del servicio getExpediente0. Este servicio devolveri la información correspondiente al alumno, la cuál es necesaria para obtener los cursos disponibles. Los diagramas de colaboración no describen una relación temporal, pero es conveniente numerar los mensajes para saber cuál rnensaje se generó primero. Para describir los diagramas de colaboración también podemos utilizar la notación de UML con extensión a Objectory. Veamos la Figura 4.33. 1: matricula :Alumno + OK 2: v31idarMatricula( ) olPantal1aReq:stro : clReqistroCursos 3: getExpediente( ) oNAlumno: CNAlumno oDAlumno: cDAlurnno Figura 4.33 Diagrama de Colaboración en notación Objectory Universidad Autónoma Metropolitana IztaDalaDa El diagrama completo para el escenaricl antes descrito se muestra a continuación (Figura 4.34) : - 8: Inscribir Curso 14: Cerrar( ) +OK __j 2: wlidarMatricula() 1 : matricula + OK 3: getExpediente() oNAturnno: cNAlurnno \9: : Alumno -. . I oDAlumno : 1 cDAlumno I j Inscribir(lnteger, Integer) 10: setlnscripcion(lnteger, Integer) 5 : getCursos() 13: Cerrar( ) oDCurso : cDCurso .._ 1L 6:getPlandeEstudio(1nteger) . clFinReaistroClJrso . ...~ - ~~~~ 7 : getkterias( oNPlandeEstudio : cNPlandeEstudio ) oDPlandeEstudio : cDPlandeEstudio Figura 4.34 Diagrama de colaboración para el escenario de registro a un curso. Una vezquese identifico al alumno, el objeto interfaz tiene que inicializar los controles visuales con la lista de cursos que puede inscribir, por lo que solicita este servicio a un objeto especializado en los cursos (oNChrso). Éste objeto consultara los cursos abiertos a través del objeto oDCurso, pero comoes necesario seguir el plan de estudios solicita también al objeto de negocio oNPlandeEstudio para traer las materias correspondientes a la carrera del alumno. Una vez que se tenga el expediente del alumno, su plan de estudio y los cursos abiertos es posible dar los cursos que puede inscribir, que a su vez serán entregados al objeto interfaz. Enesemomento la interfaz podrá mostrarlos en los controles visuales y es cuando el Actor podrá seleccionar el cursoa inscribirse. Cuando el Actor desee inscribir un Cursoel objeto oNCurso validara los datos y actualizara el cupo, para agregar el registro a la base de datos se solicita un servicio del objeto oDCurso. Identificación de Relaciones Dinámicas Las relaciones dinámicas proporcionan un camino para la comunicación entreobjetos. Para identificar las relaciones dinámicas se analizan los diagramas de interacción Si dos objetos deben "platicar" ahí debe existir un vinculodecomunicación entre ellos. En la Figura 4.35 se observa el envío de mensajes entre dos objetos y como se establece una relación dinámica entre ellos. 3: getExpediente() oNAlumno : cNAlumno oDAlumno : cDAlumno */' I Figura 4.35 Relacisón dinámica entre dos objetos Definición de Servicios Cuando un objeto le envía un mensaje a otro, se dice que está solicitando un servicio. Los servicios permiten a los objetos realizar acciones. Digamos que un servicio es el código del Método almacenado en un objeto. En principio, los servicios surgen de la necesidad de proveer funcionalidades a otros objetos; sin embargo, también será necesario definir servicios de uso interno para el propio objeto.Por tanto, podemos distinguir entre servicios de uso externo e interno. Los servicios han de funcionar igual en todos los objetos creados a partir de una definición de clase. Si esto no fuera así, quizá s'ería necesario crear una herencia para incorporar esta diferencia de comportamiento. Es importante identificar todos los objetos que va a necesitar este servicio y también los objetos que se necesitan desde este sE?rvicio.La Figura presenta la forma en que definen los métodos de las clases. 3: getExpediente() oNAlumno : cNAlumno I 1 oDAlumno : cDAlumno cDAlumno *getExpediente(fvlatricula : Integer) : tResultado Figura 4.37Definición de los métodos I ~ En este modelo se especifican las clases a partir de las cuales se crearán los objetos que darán servicio al sistema. Estos obj'etos tendrán un tiempo de vida limitado por la duración de la ejecución del programa. A diferencia del modelo de dominio del problema en donde se definen principalmente los objetos persistentes. Principalmente se definen los métodos de cada clase con toda la información necesaria para su adecuada implementación. En la Figura 4.38 se muestra el modelo de las clases dinámicas realizado a partir del diagrama de colaboración de la figura. Se observa que las clases sólo contienen métodos. Estas clases sirven para describir l a funcionalidad el escenario dado. Las líneas punteadas indican que objeto instanciará a cual, es decir, que objeto creara a otro. En nuestro ejemplo, un objeto de la clase cNAlumno será creado por un objeto clRegistroCursos. Y un objeto cDAlumno será creado por un objeto cNAlumno. I 1 " " " I i 1 %alidaMatricula(Matricula : Integer) : Boolean - ~" r1"" ~" ~ " " 1 9 cDAlumno '@getExpediente(Matricula: Integer) : tResultado Figura 4.38 Diagrama de Clases para el modelo dinámico del ejemplo Se puede seguir los siguientes consejos para crear un diagrama de clases dinámicas: 0 Las clases dinámicas se identifican examinando los objetos en los diagramas de secuencia y colaboración 0 El comportamiento de una clase se representa mediante sus operaciones 0 Las operaciones pueden identificarse al examinar los diagramas de interacción También enel diagrama de clases se puede especificar el estereotipo de lasclases. Cuando un método se ejecute no por una llamada normal, sino cuando sé de un evento, I como la pulsación de un botón o la seYecciónde una opción en un menú, el método se indicara con un estereotipo de evento. En la Figura 4.39 se muestra el modelo de clases dinámicas completo. <<lnterfaz>> clRegistroCursos <<Negocio>> cNAlumno " " - 4syalidaMatricula(Matricula : Integer) : Boolean " 1 <<Datos>> cDAlumno %etExpediente(Matricula : Integer) : tResultado I <<Negocio>> cNCurso I <<Datos>> cDCurso , , 7".~ " " L ~ *getListaCursos(Expediente :Alumno) I +Inscribir(CveCurso : Integer, Matricula 1 Integer) 1 <<Negocio>> cNPlandeEstudio I 1 - +getCursos() %etlnscripcion(CveCurso : Integer, Matricula : Integer) <<Datos>> *getPlandeEstudio(CveCarrera : Integer) :;tResultado <<lnterfaz>> Figura 4.39 Diagrama de clases dinámicas involucradas en el procedimiento del escenario de registro a cursos. El proceso de construcción se alimenta del modelo de análisis para generar un modelo que detalle los aspectos de implantación y de calidad. El modelo de Construcción además establece la estructura en que estarán distribuidos Para lograr su fin el Modelo esta constituido por tres modelos más elementales. 0 Modelo deDiseño 0 Modelo de Componentes 0 Modelo de Implantación El primero deja un modelo sensible a la implantación. Es segundo es el agrupamiento de los objetos comocomponentesde programación. El tercer modelo esen sí el código fuente de los programas. El modelo de diseño nos facilita entender la dinámica del sistema cuando está procesando un escenario, tomando encuenta aspectos de implantación. Es necesario evaluar ciertos criterios que aseguren la calidad de los productos obtenidos. La calidad se vera reflejada en los costos de mantenimiento y en la efectividad del sistema a las exigencias del usuario. 4.3.1 .A Diaarama de Secuencia Una de las herramientas principales del diseño es el diagrama de secuencia. Un diagrama de secuencia muestra las interacciorles de los objetos con base a una secuencia temporal. Estos diagramas se obtienen a partir de los escenarios analizados en el Análisis Dinámico y sirven para ver la ejecución temporal detallada de cada paso del escenario. Un diagrama de secuencia es una gráfica condos ejes. El eje vertical representa la dimensión del tiempo. El eje horizontal cuenta con los objetos participantes en el escenario, colocados enel orden qua se van utilizando en base a la capa a la que pertenecen, o sea, primero van los objetos de interfaz, en seguida los objetos de negocio y por último los objetos de datos. En lo!; extremos se colocan los actores participantes. La que simbolizanmensajes interacción entre los objetossedescribe a travésdeflechas entre los mismos. En la Figura 4.40 se muestra el diagrama de secuencia para satisfacer el primer punto del escenario de visto en el capitulo . i \ : Aumno 1 , 1: Matricula + OK I , I I 2:w~lidaMatricula(lnteger) 3: getExpediente(1nteger) I -i I " " 4 -0 I 5. ,- I I I I I i Figura 4.40 Diagrama de Secuencia para el escenario de ejemplo Se puede observar en la Figura 4.40 que los objetos que están activos se denotan con las barras verticales sobre las líneas de vida de cada objeto. Una vez que el actor da el número de su matricula y le indica al sistema que desea inscribir un curso, el objeto de interfaz se activa y solicita el servicio al objeto especializado en alumnos (oNAlumno). Éste objeto también se activa y para cumplir su tarea necesita consultar el expediente del alumno en la base de datos a través ,del objeto oDAlumno. En este momento los tres objetos están activos. Cuando el objeto dedatos devuelve el resultado de la consulta pasa a un estado inactivo. Le sigue el objeto de negocio una vez que éste a procesado la información y la entregado al objeto de interfaz. Por ultimo el objeto de interfaz muestra al usuario la información obtenida y se queda inactivo en espera de otra interacción con el actor. Notemos que cada mensaje está asociado a un método de la clase a la que pertenece el objeto y por Io regular también incluye los parámetros. A continuación en la Figura 4.41 se muestra el diagrama de secuencia completo para el escenario de ejemplo. II 1 I I I 12: Abrir() I I I I I li 15 Cerrar() I I I I I I I 1 I I I setl+cripcionflntegeq 11: Integer) I I I I I I I I I I I I I \ I I I I I I 1 I I I I I I U I I I I I I I I Figura 4.41 Diagrama de secuencia para el escenario de registro a un curso Los diagramas de secuencia y los cliagramasde colaboración pueden considerarse semánticamente idénticos, pero con notaciones distintas. 4.3.1 .B Criterios de Calidad para el Diseiio Para poder evaluar la calidad de un diseño es necesario definir los criterios sobre los que está basada. Cohesión en el D O 0 Las clases contenidas en una jerarquía de clases deben tener sólo un fin; si tienen más de uno, se han de dividir en clases más especializadas. I I I I I I I I I I I I I I Acoplamiento en el DO0 Se han de diseñar las clases del modo más independiente posible. Cualquier clase que necesite de otras para su correcto funcionamiento está sacrificando su portabilidad a otro entorno distinto al que se diseño originalmente. Reutilización del código Es el paradigma de la programación clrientada al objeto. Cualquier sistema orientado a objeto se basa en tres constantes fundamentales: O Productividad. Existe una gran cantidad de código que puede ser reutilizada dentro de un proyecto e incluso entre proyectos distintos. Una parte del esfuerzo de desarrollo se puede encaminar en este sentido, puesto que redundará en beneficios para el resto de proyectos y desarrolladores. O Calidad. Un aumento de productividad sin calidad no sería lógico. La PO0 permite establecer unas clases base bien probadas que impedirán que cualquier herencia funcione incorrectamente. Del mismo modo, clases base mal diseñadas harán que el resto de clases heredadas no funcionen como es debido. La ventaja es que sise solucionan los errores en las clases base también lo haremos en el resto de las clases heredadas. 0 Mantenimiento. Esel gran problema de cualquier aplicación. Incluso cuando éste prácticamente finalizada, surgirán especificaciones no detalladas inicialmente que harán necesario un replanteamiento de alguna parte de la aplicación. Suele ser normal que el diseño se haga antes que la programación, pero en PO0 se permite el rediseño tras la programación. Como indicación básica, se pueden seguir los siguientes consejos: Reutlización de clases existentes AI comienzo de un desarrollo no es probable que existan muchas clases definidas. Sin embargo, a medida que el proyecto crece, puede ser dificil encontrar la clase que se necesita y sea mas rentable crearla. Herencia Cuando no se encuentre la clase que se ajuste a las necesidades concretas del momento, será conveniente crear una nueva heredando de la clase que más se parezca a la necesitada. De esta forma reaprovecharemos todo el código de la clase padre y crearemos una especialización, Diseño especifico A general En programación estructurada la base de análisis se fundamenta sobre la filosofía topdown. Aquí es totalmente incorrecto utilizar esta filosofía. Se ha de diseñar la solución especifica al problema, y a posteriori, investigar a qué clase se puede generalizar. Minimizar definición de clase Una clase debe ser lo más pequeña posible. Siempre que exista una especialización, se ha de crear una herencia nueva para cubrirla. De este modo, las clases son más manejables y es más fácil recordar qué prestaciones tienen. Sin embargo, tal cantidad de clases puede resultar una complejidad innecesaria. La solución a este problema podría ser la agrupación de clases por temas. Un componente es una biblioteca que contendrá la definición de las clases dinámicas y puede ser reutilizada por otras aplicaciones. Las bibliotecas pueden estar constituidas por grupos de clases que realicen los mismos tipos de servicios. Ejemplo deestetipode bibliotecas puedeser, todas las clases de Negocio del modulo Inscripción. Otro tipo de agrupamiento declasespuedeser por Temas. Este enfoque permite ver distintos niveles de complejidad para un sistema o parte de él. De esta forma, se pueden manejar temas complejos conteniendo otrossubsistemas,de forma que tengamos una visión mas global del análisis.Ejemplodeestetipode bibliotecas puede ser, todas las clases que manejen la información referente a un Alumno, por lo tanto, esta biblioteca contendrá las clases de negocio, datos, interfaz y cualquier otra relacionada con el tema. La forma en que se integra la información de componentes esta dada por diagramas de componentes. Diagrama de Componentes Los diagramas de componentes ilustran la organización y dependencia entre componentes de software. Un componente puede ser: Un componente decócligofuente Un componente de tiempode ejecución o Un componente ejecutable En la Figura 4.42 se puede observar un diagrama de componentes para la aplicación de ejemplo. Los componentes están agrupados por tipo de servicio. .i :. .I ..........I I . i .I lnterfaz Inscripción.dll ~. ,""~~."~~""~- - -- --- 1 I I : . . . . . . . . . . . . . . . . . . . . . . . . . . . . ,~ ~ c: .....:. i ..... ...... 1 Negocio I ............ Inscripción.dll - ---- 1 I "." ......................................._. ,........ I .........Y ......................... 1: : : : : : : : :1 I Datos ' -:. 1 : """ ... i Insctipción.dll [ .. ..................................... Figura 4.42 Estructura de Componentes : Las líneas punteadas indican la dependencia que hay entre los componentes, como la que se da al instanciar los objetos de otro componente. Estructura de Paquetes Los componentes plantean servicios reutilizables principalmente y suelen ser librerías dinámicas o mejor conocidas como dl/. También puede plantearse su distribución en forma de paquetes que funcionará muy parecido al de componentes. Los paquetes se agrupan de forma similar al directorio de archivos enun sistema. La jerarquía de directorios permite una semejanza a la herencia, donde cada nivel representa por lo general, un agrupamiento más pequeño y más especifico de las clases. Para efectos de mantenimiento sólo se recurren a las clases de estos archivos. Cada uno de los conjuntos de clase IO!; agruparemos en paquetes, de hecho, esto es lo que va a ocurrir normalmente, que muchas clases van a estar interrelacionadas estableciéndose una jerarquía de clase. En la Figura 4.43 se muestra una estructura de paquetes similar a la antes vista, pero agrupados por temas. cursos Inscripción ~ " :... ~ " " " ~~ " . A " " . .. ~..- > .....__._--' .: ................. ................ " " " " " ................. l " " , .......... ................... ,. ..... . . . . . . . . . Alumno .................... . ._ í. ... ..... .:........ , Figura 4.43 Estructura de paquetes Cuando construimos un sistema que administra información, es necesario almacenar los datos en una base de datos. En la actualidad la mayor parte de los sistemas administradores de bases de datos se basan en el Modelo Relacional. AI contrario existen muy pocos administradores de bases de datos que se basen en el modelo OO. Por lo que es necesario establecer una conversión entre los dos modelos cuando la aplicación que se desarrolla sobre el modelo O 0 utilice una base de datos del modelo relacional. Modelo Entidad- Relación Modelar la información del mundo real a través de entidades y relaciones es descrito por Peter Chen. En este modelo la entidad es una persona, lugar, cosa, concepto o suceso, real o abstracto, de interés para la organización. Y relación es la asociación o correspondencia entre entidades. En el modelo O 0 una entidad es el objeto acerca del cual queremos guardar información y éste se relaciona con otros objetos. La forma en que se describen las entidades y sus relaciones con otras se muestra en la Figura 4.44. Este diagrama modela la relación alumno "cursa" carrera. El nombre de la entidad va dentro de un rectángulo y el nombre de sus propiedades van dentro óvalos cada una. El nombre y las propiedades de la entidad están ligadas. La relación se denota con una línea y con un rombo a la mitad de la línea. Alrededor del rombo se describe la cardinalidad entre las entidades. La n se utiliza para describir uno o varios. Figura 4.44 Diagrama Entidad - Relación El diagrama se leería de la siguiente forma; un alumno cursa una sola carrera y una carrera es cursada por uno o varios alumnos. Modelo relacional El modelo relacional de E. F. Codd describe a las entidades de información a través de relaciones en forma de tablas. Las tablas están compuestas por renglones y columnas; cada renglón es un objeto de información y cada columna es un atributo de los objetos de información contenidos en la tabla. Las operaciones básicas sobre las tablas consideran la consulta, agregar un,renglón a la tabla, modificar un renglón a la tabla y eliminar un renglón de la tabla. La Figura 4.45 presenta el modelo relacional para relación AlumnoCarrera. Alumno Carrera Figura 4.45 Tablas del Modelo Relaciona1 Análisis de Datos Este análisis viene del modelo relacional, en el se obtienen las diferentes entidades de datos que se convertirán en tablas. Las tablas resultantes de agrupar los distintos datos de nuestro ejemplo serían: Alumno Profesor Curso Carrera Inscripción Constatamos después de este análisis, y seguramente se habrá percatado el lector, que las clases pueden perfectamente ser las bases de datos y que las propiedades podrían se los campos. Por tanto, si hiciésemos el Análisis de Datos, este debería coincidir con el Análisis Orientado a Objetos, por lo que podemos sacar la conclusión de que ambos son similares. Sin embargo, hay una diferencia que no está reflejada en esta comparación: el A 0 0 debe pensarse también desde el punto de vista de la interfaz de usuario, a la que se hizo referencia en el Modelo de lnterfaz . Conversión de Clases y Objetos relacionados a Tablas Cada clase del modelo de dominio debe corresponder a una tabla y cada propiedad de la clase debe corresponder a un atributo o columna de la tabla. Cada propiedad o atributo debe tener asociado un tipo de datos simple que pueda implantar el manejador de base de datos relacional, tales como: números, cadenas, fechas, booleanos, imágenes y textos. De nuestra aplicación de ejemplo, la clase Alumno genera la tabla que se muestra en la Figura 4.46 @Nombre @Edad W I I I 1 Figura 4.46 Clase persistente convertida a relación Notamos que la conversión de formatoUML a notación relacional esmuysimple. Sin embargo, en la notación relacional se debe mantener la integridad de los datos y evitar su duplicidad. Por esta razón es necesario destacar los atributos que serán la llave relacional de la relación. En este caso la llave relacional esta formada por un solo atributo que es la Matricula, pues con su valor se puede identificar de manera única un renglón dentro de la tabla. La relación resultante es: Alumno(Matricula, Nombre, Edad) Una vez que se tienen los atributos es necesario aplicar los pasos de normalización a la relación resultante. El primer paso de normalización nos asegura que todos los atributos definidos los permite el manejador de bases de datos. Los siguientes pasos corresponden a eliminar dependencias indeseables entre las tablas, para evitar dobles capturas, dobles eliminaciones y dobles modificaciones. Cuando se tiene una relación sindependencias indeseables se dice que está en 3a forma normal, lo que genera un modelo confiable y de comportamiento deseable. Para una descripción detallada del modelo relacional y del proceso de normalización puedes ir a la literatura existente tal como [Date]. Estructura de Bases de Datos No me voy a extender innecesariamente en este punto, en principio el modelo de dominio nos debió haber generado la estructura de la base de datos. Si se hizo un buen modelo de objetos, el proceso de normalización sólo servirá para detallar más el modelo. El modelo de dominio que obtuvimos se muestra en la Figura 4.47 &,CwCoordinaci6n CwProfesor Q 1 o..1 ) 1:. ccurso I 4 QCreditos &Requisito l..' j I I 1..- clnscripcibn &~&WUEAQ +k+icula @ QCWGN~O @ %Trimestre Q Qcalificacion Figura 4.47 Modelo de dominio Las relaciones definibles entre las tablas de nuestro ejemplo serán: Alumno(Matricula, Nombre, Edad, CveCarrera) Carrera(Clave, Nombre, Creditos) Profesor(Clave, Nombre, Arealnvestigacion) UEA(Clave, Nombre, Creditos, Requisito) Coordinacion(Clave, Nombre, Division, CveProfesor) PlandeEstudios(CveCarrera,CveUEA, TipoUEA) Inscripcion(CveUEA, Matricula, CveGrupo, Trimestre, Calificacion) Curso(CveUEA, CveGrupo, Trimestre, CveProfesor, NoAlumnos, Salon, Horario) UEA-Coordinacion(CveUEA,CveCoordinacion) Veamos en detalle la relación Alumno - Carrera Si recordamos un alumno puede cursar una carrera y una carrera puede ser cursada por varios alumnos, en la Figura 4.48 se muestra esta situación. I ccarrera cAlurnno I %Matricula Q Qcvecarrera @ @Nombre @$redto is 1 @Edad Figura 4.48 Asociación binaria uno a muchos AI convertir de formato UML al modelo relaciona1 notamos que la tabla alumno se le añade el campo llave Clave de la tabla carrera para implantar la relación, como se puede ver en la Figura 4.49. Figura 4.49 Relación Alumno - Carrera La forma genérica abreviada de convertir una asociación uno a muchos es: A la relación correspondiente al extremo del muchos de la asociación, se le agregan los atributos llave de la relación correspondiente al exfremo del unode la asociación. Supongamos que se tienen almacenados los siguientes datos en las tablas: Alumno 30 40 1 ... I I ... I l ... ... :.............. pf&*#j Carrera .............. ............................ ........................ .............. ......... ................... ................... ............:.:..:.:.I......... .................. ................. Lic. Computación Lic. 40 Medicina ... ... I I 472 460 ... La información que se obtiene al consultar las tablas puede ser la siguiente: "La alumna con nombre Cony Ruiz cursa la carrera de Lic.Psicologia 'I. Implantación Física La implantación física de la relación Alumno - Carrera en un manejador de bases de datos como lo es lnterbase se muestra a continuación: CREATE TABLEAlumno ( Matricula Nombre Edad CveCarrera PRIMARYKEY FOREIGNKEY INTEGER NOT NULL, CHAR ( 60) NOT NULL, INTEGER NOT NULL, SMALLINT NOT NULL, (Matricula), (CveCarrera) REFERENCES Carrera(C1ave) ); CREATE TABLE Carrera ( Clave Nombre Creditos PRIMARYKEY 1; SMALLINT NOT NULL, CHAR (30) NOT NULL, INTEGER NOT NULL, (CveCarrera) AnAlisis de las Reglas de Negocio Es interesante en algunas aplicaciones técnicas documentar todos los algoritmos empleados por el usuario. Éstos son las reglas del negocio. Una delas particularidades del trabajo del analista es quedebedesaber "un poco de todo" y el usuario siempre supone que nosotros no solo sabemos ese poco, sino que estamos al corriente de en qué consiste su trabajo. Es aquí donde debemos recopilar todas las peculiaridades del modus operandi del usuario. ........... ....: :.:.@$;:;;;;;g ~~~~~. _._ ......,...,.,.........................,.,,:.x ................ ~ A Universidad Autónoma Metropolitana IztapalaDa , ,, ,, , En nuestra aplicación, por ejemplo, hablaremos de la asignación de horarios, del número de cursos que puede inscribir un alumno, la seriación de la materias, etc. En otros programas tal vez tengamos que trabajar con una forma diferente de inscripción o tengamos un sistema que siempre trabaje en dólares envez de pesos, o siempre en centímetros en lugar de pulgadas, por lo que deberemos tener unos algoritmos de conversión, que serán las reglas del negocio. Una idea interesante, si estas son muchas, es crear una tabla con dichas reglas y acudir a ellas cuando haga falta. Diseño de Aplicaciones El diseño de una aplicación es la implementación del análisis teniendo en cuenta el lenguaje con el que se va a programar. Veamos primero qué componentes va a tener cualquier aplicación sea cual sea su cometido: 1 . .. . ... ...... )~..,...,.,...,.',~., , ,..........., . .............. . ......_..___.._.. ......... /.._.., , ,, , ,, , ,, , ... , , ... .. , .. , . ., , . ... . . . . , . . , .. . .. ........... ..... . . ,. . . . .. . . . . . . . .. . . , . . . . .. . . . . .. . . . . . . . . . . . , .. ,. . , .. ... , ,. ... ,., ,.,.,,.,..,, .,, ., , , , , , ,., , . ,.,,,, ~~~ , Base de Datos Tablas Rutinas Formularios Menús Queries , Reportes Configuración Bibliotecas de Clases Podemos decir que éstos son prácticamente todos los componentes que podemos tener en una aplicación realizada con los lenguajes orientado a objeto de la actualidad, como Delphi, Power Builder, Java, Visual FoxPro, C++, Visual Basic, etc. Desarrollo de la estructura de una aplicación orientada a objeto Esencialmente es una forma de organizar los elementos de un programa pensando que éstos sean fácilmente repetibles. Dichos componentes de nuestras aplicaciones serán de tres tipos: 1. Comunes para muchas aplicaciones 2. Comunes para el tipo de programa 3. Específicos de la aplicación En este desglose se mezcla la información que podamos tener en módulos, clases, archivos de procedimientos, etc. La mayor parte de esta forma global de ver las aplicaciones es conocida por todos, sin embargo, en la P O 0 entra un concepto nuevo que noes otro que el diseño, punto fundamental y trascendente en el desarrollo de la aplicación que nos ocupe y en aplicaciones futuras. Desgranemos cuál será la influencia directa de la creación de las clases. Diseño de una estructura de clases Si seguimos el mismo principio de segmentación que acabamos de ver podemos dividir la estructura de clases en: 1. Genéricas 2. De dominio 3. Especificas Cuando nos planteamos a programar en Java o cualquier otro lenguaje orientado a objeto, debemos previamente hacer un estudio pormenorizado delas aplicaciones que hemos desarrollado por métodos tradicionales y, comodiceel lema de la POO, abstraer las características comunes. De esta abstracción comprobaremos que saldrán clases que nos valgan para todo tipo de programas, esto es, que no tendremos que retocar su código sea cual sea la indole de la aplicación. Éstas serán las clases genéricas. En nuestro ejemplo, una clase genérica podría ser la Conexión a Fuentes de Datos. Sea cual sea la finalidad de la aplicación que estemos desarrollando, tendremos este modulo. Por otra parte, habrá una seriede clases (decódigo) que nos servirá siempre que la aplicación sea de un tipo, por ejemplo, en nuestro caso, la clase Alumno podremos utilizarla en innumerables programas, pero para todos, sólo para aquellos usuarios que tengan de una institución educativa. Éstas serán las clases de dominio de aplicación. Por último, tendremos lasclasesqueseanválidas para la aplicación queestamos desarrollando. Por supuesto, serán objetos repetitivos dentro de la aplicación. Por ejemplo, en todas las pantallas aparecerá el logotipo de la Universidad en un vértice, esto convierte automáticamente a la pantalla en una clase. Resumen Podemos observar que mucho de lo visto en los párrafos anteriores lo hemos hecho alguna vez, o por lo menos ha sido intención nuestra hacerlo. Con la llegada de la POO, es inevitable e inexcusable que pasemos por esta fase tediosa para algunos (no pueden estar sin teclear más de dos horas seguidas). De ello dependerá en buena medida que la aplicación salga bien, pero no sólo ésta sino las venideras. Tampoco debemos llegar a la esquizofrenia en la búsqueda de clases, muchas de éstas irán surgiendo progresivamente, sin darnos cuenta. Tendremos que rediseñar una y mil veces algunas clases,estoes normal. Cuandose consiga la clase perfecta (noes imposible) será tan fácil como cogerla e insertarla en la aplicación que tengamos entre manos. La manera en que se plantean los principios para las formas de trabajo, la organización de actividades y el enfoque con que se llevara a cabo la construcción de un sistema se le denomina Arquitectura deDesarrollo. La arquitectura plantea Métodos que son la secuencia de pasos necesarios para desarrollar productos del sistema. Cada paso de un método es un Proceso del Desarrollo, en éI se van cubriendo las etapas de desarrollo. Existen varios enfoques para del desarrollo de sistemas, Desarrollo en Cascada, Desarrollo Iterativo, Desarrollo en Espiral, por mencionar sólo algunos. 5.1 Desarrollo de Prototipos Nosotros seguiremos el enfoque Iterativo, - el Desarrollo en Cascada tradicional presentó 'porqué debemos muchos problemasy riesgos para los equipos dedesarrollo, fropezarnos con un enfoque erróneo, cuando otros ya vieron las dificultades y nos advierten de las fallas? -. En cada iteración se obtiene un prototipo delsistema incorporando mayor funcionalidad que el anterior. Cada iteración constituye una pequeña cascada que ataca un problemamás reducido y controlable. Resultados de la iteración previa Descripción de Entrega Actualizar la asignación del riesgo Controlar bibliotecas Figura 5.1 El Ciclo de Vida Iterativo: Una Minicascada Esta forma de desarrollo disminuye el riesgoquese adquiere, yaque al final de cada prototipo, se evalúa si cumple con los requerimientos de los usuarios o bien es necesario adecuado. Cada adecuación será implementada hasta el siguiente prototipo y no en la kx ia Universidad Autónoma MetroDolitana IztaDalaDa versión en donde se origino. Esto establece que el sistema deseado será una versión final de una serie de versiones que se están creando. T Riesgo :onstruccibn Preliminary Iteration Architect. Architect. Devel. Iteration Iteration Iteration Tiempo - Devel. Devel. Iteration Iteration Transition Transition PostIteration Iteration deployment Figura 5.2 Perfil de Riesgo de un Desarrollo lterativo 5.2 Tres Características Importantes del Enfoque lterativo 0 0 0 Integración continua No se hace en un bloque cerca de la fecha de entrega Entregas frecuentes deejecutables Algunas internas, algunasde entrega a usuarios Ataque al riesgo por medio de un avance comprobable El avance esmedido en productos, no en documentación o en estimados de ingeniería 5.3 Beneficios Resultantes 0 0 0 Las entregas son una función que obliga al equipo de desarrollo a administrarse para cerrar a intervalos regulares No se puede tener el fenómeno de “90% realizado con 90% por realizar” Puede incorporar problemas/características/cambiosen las iteraciones futuras en lugar de alterar la producción del momento Se puede calendarizar mejor el trabajo de loselementosde apoyo a los proyectos (equipo de pruebas, documentadores, elaboradores de herramientas, administración de configuración, aseguramiento de calidad, etc.) 5.4 Actividades Detalladas del Ciclo lterativo O Planeacióndelaiteración Antes que la iteración inicie, deben establecerse los objetivos generales de la iteración en base a Resultados de la iteración previa (si existen) - Evaluación del riesgo a la fecha del proyecto Determinación del criterio de evaluación para esta iteración Preparar el plan detallado de la iteración para incluirlo enel desarrollo plan de Incluir los puntos de revisión intermedios para revisar el avance O 0 O 0 Incluir revisiones y corridas a mano IdentificacióndeRequerimientos Seleccionar o definir los Casos a construirse en la iteración Actualizar el modelo de objetos para que refleje las clases y asociaciones adicionales que se han identificado Desarrollar un plan de prueba para la iteración Análisis y Diseño Determinar las clases a ser desarrolladas o actualizadas en la iteración Actualizar el modelo de objetos para que refleje las clases y asociaciones adicionales que se han identificado Actualizar la arquitectura documentada si es necesario Comenzar el desarrollo de los procedimientos de prueba Construcción Generar código automAticamente a partir del modelo de diseño Generar manualmente el código para las operaciones Completar los procedimientos de prueba Conducir las pruebas unitarias y de integración Pruebas Integrar y probar el código desarrollado con el resto del sistema (las entregas previas) Registrar y revisar los resultados de las pruebas Evaluar los resultados de las pruebas con respecto a los criterios de evaluación Conducir una evaluación de la iteración Preparar la descripción de la entrega Sincronizar los modelos de código y de diseño Colocar los productos de la iteración en bibliotecas controladas - 0 Universidad Autónoma Metropolitana IztaDalapa 5.5 Seleccionando lteraciones O O ¿Cuántas iteraciones son necesarias? En proyectos que toman 18 meses o menos, es frecuente encontrar de 3 a 6 iteraciones ¿Todas las iteraciones en un proyecto son de la misma longitud? Por lo regular la longitud de la iteración puede variar por fase. Por ejemplo, las iteraciones de elaboración pueden ser mas cortas que las de construcción 5.6 No Existe una Soluci6n Mdgica O O Recuerde la principal razón para utilizar el ciclo de vida iterativo: No se tiene toda la información necesaria a la mano Las cosas cambiarán durante el periodo de desarrollo Debe esperarse que Algunos riesgos no sean eliminados como fué planeado - - Se descubrirán nuevos riesgos enel camino Algún retrabajo será necesario; algunas líneas de código desarrollado por una iteración anterior tendrán que tirarse Los requerimientos cambiarán en el camino :~ w ,~$ $ $. <p.p.:.:.:.:.:.:: ~ < ~s~. .:~.~~~~~~ +:.~.:.:$+>:.:.:.:.:.:. ....... ......... $ q?v#> ' .............................. Conelauge de Internet, la arquitectura cliente-servidor ha adquirido una mayor relevancia, ya que la misma es el principio básico de funcionamiento de la World Wide Web: un usuario que mediante un browser (cliente) solicita un servicio (páginas HTML, etc.) a un computador quehace las veces de servidor. En su concepción más tradicional, los servidores H77P se limitaban a enviar una página HTML cuando el usuario la requería directamente o clicaba sobre un enlace. La interactividad de este proceso era mínima, ya que el usuario podía pedir ficheros, pero no enviar sus datos personales de modo que fueran almacenados en el servidor u obtuviera una respuesta personalizada. Desde esa primera concepción del servidor H77P como mero servidor de ficheros HTML el concepto haido evolucionando en dos direcciones complementarias: 1.Añadir más inteligencia en el servidor, y 2.Añadir más inteligencia en el cliente. Las formas más extendidas de añadir inteligencia a los clientes (a las páginas HTML) han sido Javascript y las applets de Java. Javascript es un lenguaje relativamente sencillo, interpretado, cuyo código fuente se introduce en la página HTML por medio de los tags <SCRIPT> ... </SCRIPT>; su nombre deriva de una cierta similitud sintáctica con Java. Las applets de Java tienen mucha más capacidad de añadir inteligencia a las páginas HTML que se visualizan en el browser, ya que son verdaderas clases de Java (ficheros *.class) que se cargan y se ejecutan en el cliente. Sobre las posibilidades de las applets de Java puedes consultar el manual “Aprenda Java como si estuviera en Primero”. Pero tienen mucho más interés los caminos seguidos para añadir más inteligencia en el servidor H77P La primera y más empleada tecnología ha sido la de los programas CGI (Common Gateway Interface), unida a los formularios HTML. La alternativa que Java ofrece a los programas CGI son los servlets. En la figura 9.1 se muestra la arquitectura cliente-servidor seguidaactualmente. DBSP es una tecnología de SCRIPTING en el lado del servidor diseñada específicamente para acelerar el proceso de construcción desitios 828 (Business to Business), B2C (Business to Client) o cualquier sistema e-business o de información que involucre la explotación de datos a través del Internet o Intranet. L Como funciona DBSP ? DBSP es una extensión a la tecnología HTML existente. Ciertos delimitadores son insertados dentro del códigoHTML del documento. Posteriormente estos delimitadores serán substituidos dinámicamente por información almacenada en una o varias bases de a su destinatario, en forma deHTML datos y finalmente eldocumentoseráenviado estándar. Además, DBSP incorpora una serie de mecanismos que permiten solucionar problemas costosos en tiempo y recursos, como lo son la identificación y el control de los usuarios del sistema, los privilegios de acceso, la seguridad y la confiabilidad de la información. Todo esto permite acelerar los tiempos de respuesta en el desarrollo de aplicaciones y disminuir los costos de producción. Aún con todo lo complicado que una tecnología con estas características pudiese parecer, DBSP tiene una filosofía simplista.Esto facilita su aprendizaje y uso, permitiendo prácticamente desde el primer momento obtener los resultados deseados. i Que ventajas ofrece DBSP ? DBSP reducenotablemente los tiemposdedesarrollo. A través de un estudio postmortem a varios desarrollos deaplicacionesweb, se determinó que en todos los casos, las fases que más tiempo y recursos consumen son las de construcción, depuración y pruebas, y sobre todo en secciones que el usuario final no tiene presentes, como el acceso a datos, la seguridad, la concurrencia, estabilidad, etcétera. Con DBSP, ya no es necesario construir todas estas piezas y en consecuencia es posible abatir costos, mejorar los tiempos de respuesta o dedicar este tiempo a construir aplicaciones más robustas, con una mejor calidad y usabilidad. No es necesario modificar sus sistemas para trabajar con DBSP. Si usted ya cuenta con un sistema que utiliza una base de datos relacional, entonces se tiene la posibilidad de presentar esta información inmediatamente en Internet, sin necesidad de modificaciones adicionales. DBSPseadhiere a la basede datos e inmediatamente es posible explotar su información. DBSP incorpora diversos esquemas de seguridad. DBSP utiliza las características de seguridad que el sistema operativo y las bases de datos ofrecen. Adicionalmente, DBSP cuenta con algoritmos de cifrado robustos (1 28 bits), lo que le permitirá almacenar su información de manera segura y en consecuenciadisminuir los riesgos de que información sensiblecaiga en manosdepersonas indeseables o equivocadas. DBSP tiene un rendimiento superior a otras tecnologías. DBSP utiliza la tecnología ISAPI para Web. Esto le permiteaprovechar las ventajas que los múltiples hilos ofrecen y conseguir un rendimientosuperior al de otrasarquitecturascomo CGI o Java Servlets. Además, DBSP se comunica de manera nativa con los manejadores de bases de datos soportados, mantienendo vivas sus conexiones, mejorando así los tiempos de transferencia de información. 7.1.- ISAPl (Internet Server Application ProgramInterface) ISAPI es una alternativa a los ejecutables CGI, de mayor eficacia que éstos . Un servidor HTTP responde a una petición de ejecución de CGI desde un ‘browser‘ creando un nuevo proceso y pasando a continuación los datos recibidos desde el browser mediante variables de entorno y la stdin. Los resultados recogidos por la aplicación CGI estarán disponibles en la stdout del nuevo proceso. El servidor HTTP crea tantos procesos como peticiones de ejecución del CGI recibe, por lo que este sistema tiende a consumir mucho tiempo y a requerir grandes cantidades de memoria RAM, poniendo en peligro e rendimiento global del servidor HTTP. A diferencia de este sistema, las aplicaciones ISAPI son DLLs (Dynamic Link Libraries) que se cargan en el mismo espacio de direcciones que el propio servidor HTTP, lo cual supone que todos los recursos disponibles para éste lo están también para aquéllas. Hay por tanto una sobrecarga mínima asociada con la ejecución de estas aplicaciones, ya que cada petición de ejecución no requiere montar un nuevo proceso. La interacción entre el servidor y una determinada DLL de la aplicación ISAPI se realiza mediante un ‘extension control block’ (ECB), en lugar de hacerlo, como en el caso de CGI mediante variables de entorno y las stdin/stdout. Las DLLs de aplicaciones ISAPI deben estar construidas con capacidad multitarea (multithread) dado que podrán recibir múltiples peticiones de ejecución simultáneamente. EstructuralPartes de la norma Filters Functions Modules Structures Internet Service Manager - Program Structure - Internet Service Manager Application - Extension DLLs - Internet Service Manager API (ISMAPI) Interface Conexión con otras normas HTML HTTP CGI 7.2.- Como funciona DBSP t t En la figura anterior se muestra la estructura de la Arquitectura Cliente -Servidor enfocado a programación en Web. Como se dijo anteriormente el DBSP queda a lado del servidor, esto quiere decir que DBSP y el servidor de Bases de Datos, están en un mismo Servidor. El funcionamiento de la tecnología DBSP es muy simple: Dentro de una pagina HTML se colocan varios tipos de etiquetas. Estas son leídas en un momento dado por DBSP, de la pagina HTML, por ejemplo: cuando un usuario oprime un boton de Aceptar dentro de un formulario, se genera un evento en el cual, todo el codigo en la pagina WEB es leido. Posteriormente el DBSP interpreta las instrucciones que se le establecieron con estas etiquetas, dando lugar a una conexión a la Base de Datos, a través del BDE, el cual hace la petición directamente al manejador de bases de datos, para obtener información. Para que esto pueda realizarse es necesario a este nivel, contar con algo que nos comunique en un lenguaje, por así decirlo, de entorno Web. Para eso necesitamos un servidor Web o un Servidor de Información Web, el cual su función principal es despachar las paginas que en algún momento dado solicitemos. La arquitectura de DBSP hace que la escritura de aplicaciones que se ejecuten en el servidor sea relativamente sencilla y que sean aplicaciones muy robustas. La principal ventaja de utilizar DBSP es que se puede incrustar a través de etiquetas, la información que va a proporcionar entre peticiones el cliente. DBSP permite además la utilización de cookies y sesiones, de forma que se puede guardar información específica acerca de un usuario determinado, personalizando de esta forma la interacción cliente-servidor, y liberando de trabajo extra al servidor. Una clara aplicación es mantener la sesión con un cliente. EL funcionamiento que tiene el BDE (Borland Database Engine), es de encargarse de crear conexiones directas al manejador de Bases de Datos, no solo a una Base, si no a varias de ellas. DBSP, solicita al BDE información, y el BDE se encarga de hacer la conexión a la Base de Datos y traer la información solicitada. La característica multithread de DBSP hace que se adecuen perfectamente el tipo de tareas en donde existen muchas transacciones, esto se refiere a que muchos clientes acceden a la Base de Datos, para actualizarla al mismo tiempo o bien cuando muchos clientes consultan a las bases de datos, mientras otros la modifican. Esto va de la mano, cuando se usan servidores de base de datos, que incluyen soporte para múltiples conexiones simultaneas. Mas adelante vamos a desarrollar una aplicación para mostrar como funciona DBSP. Javascript es un nuevo lenguaje escrito. Los 'scripts' de Javascript pueden ser introducidos dentro de sus páginas de HTML. Con Javascript se puede dar respuesta a eventos iniciados por el usuario, eventostales como la entrada de una forma o algún enlace. Esto sucede sin ningún tipo de transmisión. De tal forma que cuando un usuario escribe algo en una forma, noes necesario que sea transmitido hacia el servidor, verificado y devuelto. Las entradas son verificadas por la aplicación cliente y pueden ser transmitidas después de esto. También se puede pensar de programa que se ejecuta en la versión cliente. Gracias a los programas (llamados guiones) escritos en este lenguaje y embebidos en las páginas HTML, se pueden conseguir interesantes efectos en las páginas web, comprobar la validez de la entrada de formularios, abrir y cerrar ventanas, cambiar dinámicamente el aspecto y los contenidos de una página, cálculos matemáticos sencillos y mucho más. ¿Qué es JavaScript? Netscape enun esfuerzo por extender la funcionalidadde su navegador (browser), desarrolló un lenguaje de programación que se puede colocar dentro de archivos HTML. Originalmente fue llamado Livescript, pero después fue renombrado a JavaScript con la idea de capitalizar la fama de Java, lenguaje desarrollado por Sun Microsystems. JavaScript, al igual que Java o VRML, es una de las múltiples maneras que han surgido para extender las capacidades del lenguaje HTML. AI ser la más sencilla,es por el momento la más extendida. Antes que nada conviene aclarar un par de cosas: 1. JavaScript no es un lenguaje de programación propiamente dicho. Es un lenguaje script u orientado a documento, como pueden ser los lenguajes de macros que tienen muchos procesadores de texto. Nunca podrás hacer un programa con JavaScript, tan sólo podrás mejorar tu página Web con algunas cosas sencillas (revisión de formularios, efectos en la barra de estado, etc...) y, ahora, no tan sencillas (animaciones usando HTML dinámico, por ejemplo). 2. JavaScript y Java son dos cosas distintas. Principalmente porque Java sí que es un lenguaje de programación completo. LoÚnico que comparten es la misma sintaxis. JavaScript fue diseñado para ser un lenguaje de elaboración descripts que pudieran incrustarse en archivos HTML. No es compilado, sino que, en vez de ello, es interpretado por el navegador. A diferencia de Java, que primero es convertido a código de byte fácil de interpretar, JavaScript es leído por el navegador como código fuente. Esto facilita el aprendizaje de JavaScript mediante ejemplos, debido a que se puede ver la manera en que otros usan JavaScript en sus páginas. 8.1 Características de JavaScript A continuación damos algunas características importantes de este lenguaje, que es necesario conocer antes de comenzar a utilizarlo: JavaScript es un lenguaje de guiones JavaScriptpuede realizar diversas tareas y funciones que le sean especificadas al introducir sucódigo fuente dentro de los documentos HTML. De esta forma, cuando el navegador de un usuario carga una página que contiene una serie de instrucciones como script, el browser se encargará de encontrar los mecanismos para "correr" el programa y ejecutar los procedimientos indicados en el guión. La mayor parte de estos miniprogramas nose compilan, sólo se interpretan línea por línea o instrucción, mientras que la aplicación siguesu ejecución normal. JavaScript es un lenguaje de guiones, y su sintaxis se parece mucho a la de C, C++, Pascal o Delphi. JavaScript esta basado en objetos Está orientado a objetos, conuna serie de limitaciones, cuyocometido principal es prevenir que se altere el sistema ficheros del cliente, por lo que no puede leer, escribir, crear, borrar o listar ficheros (excepto cookies). Carece además de primitivas de red, de manera que no puede establecer conexión directa con otras máquinas (excepto enviar correo). Cabe señalar que aun dada la característica del manejo de objetos, JavaScript no comienzadesde cero, pues existe ya una biblioteca de objetos(consus métodos respectivos) a partir de los cuales pueden ser creados muchos otros. JavaScript maneja eventos Esta característica nos indica que durante el tiempo que el usuario visualice la página con el script en cuestión, JavaScript podrá reaccionar ante cualquier evento (hacer click en un botón, arrastrar o apuntar conel mouse, carga ydescarga de páginas, envío deun formulario, etc.) que se le indique debido aque este lenguaje está capacitado para detectar un sin número de eventos y reaccionar de acuerdo a como el programador lo indique. JavaScript es independientede la plataforma Dado que JavaScript tiene su fundamento en Java y es interpretado por el navegador, cualquier "script" escrito en cualquier plataforma podrá ser ejecutado en otras. JavaScript solamentese ve limitado porla versión y el tipo de browser en el que se ejecute. JavaScript no es Java Muchaspersonasno entienden la diferencia entre Javay JavaScript y generalmente tienden a confundirlos pensando que se trata del mismo lenguaje. Java fue desarrollado porSunMicrosystems como un lenguaje orientado a objetos opuestoal lenguaje de bolsillo de JavaScript cuya estructura está basada en objetos. En Java se pueden crear m Universidad Autónoma MetroDolitana IztaDalaDa aplicaciones independientes para Web llamadas applets. Los applets son programas en binario independientes dela plataforma; así a semejanza de C se compilan en forma binaria. El applet se puede ejecutar en cualquier plataforma con la única restricción de que se tenga elsoftware para operarlo. Por su parte, JavaScript sólo permite manipular objetos conocidos por el navegador (presentes en su versión de HTML). fd#Vg$@rf@ ~...,.... .:.:.:.:.:.:.:.:.:.:.:.:< : : .,_,...,.,.,........... : : .:.....i....i:..,.....,.....,.., . : ~:.:.:.:.:.:.:.:.: : ~ . : :.:.:,:, i ::,:,:, ~ : i . i ....................... .......... ......,..,... ,.,....,.,.,.,..,..,.. ,,).(.................... i ............._.......l.... ~ 0 0 0 Se compila y como resultado el compilador genera un archivo binario que se da al cliente para su ejecución Un applet es referenciado desde un documento HTML, pero se transfiere al cliente como un archivo diferente Java requiere la declaración de variables la etiqueta para llamar a un applet es: <APPLET> las referencias a los objetos se verifican a tiempo de compilación 0 0 0 0 0 ~~~~ . ................................... sólo se requiere un archivo de texto que será interpretado por el browser la codificación de los scripts se coloca dentro del documento HTML JavaScript no requiere la declaración de variables a etiquetapara declarar un guión es: <SCRIPT> las referencias del objeto se verifican durante el tiempo de ejecución Diferencias entre Java y JavaScript Otro concepto más que añadir a los manidos P O 0 y POE (Programación orientada a eventos) es la Programación Orientada a Páginas WEB. Mucho se ha escrito respecto a la programación orientada a objeto, pero indudablemente tenemos que tener en cuenta queestamos hablando de un concepto quesurgió básicamente como solución para entornos de programación donde la interfaz de usuario era algo secundario. Sin embargo, elpaso del tiempo y la implantación cada día mas palpable del entorno Windows en el que, como su propio nombre indica, las ventanas toman extrema importancia, los programadores nos vemos condicionados totalmente y debemos hacer primar la interfaz sobre otros elementos de las aplicaciones. Tal vez esta forma de conceptuar undiseñode una aplicación con PO0 sea un tanto limitada en cuanto a que solo lo centramos en la parte visual, pero jacaso no estamos haciendo una aplicación en un entorno gráfico? Una aplicación hecha en entorno WEB exige el manejo de fluido e ilimitado de ventanas o páginas. Una Página WEB lo es todo, presenta la información y permite que el usuario pueda modificarla o crear otra nueva. Es el medio por el cual la información fluye del cliente al servidor y viceversa. Dicho esto, y viendo su importancia, podemos decir que la programación que hagamos debe también enfocarse hacia la Página WEB . Veamos, a continuación, por tanto, las cuestiones básicas que debemos saber sobre ella. 9.1 Modelo de objetos del documento Cuando funciona en un navegador, el lenguaje JavaScript dispone de una serie de objetos que se refieren a cosas como la ventana actual, el documento sobre el que trabajamos, o el navegador que estamos utilizando. La jerarquía de dichos objetos toma la siguiente forma (Figura 9.1): Figura 9.1 Jerarquía de objetos contenidos en una página WEB Universidad Autónoma Metropolitana lztapalapa Para los más iniciados en la programación orientada a objetos, conviene aclarar que en esta jerarquía, contra lo que pueda parecer, no existe herencia alguna. Los objetos se relacionan por composición, es decir, un objeto Window se compone (entre otras cosas) de un objeto Document, y éste a su vez se compone de diversos objetos Form, Image, etc.. El padre de esta jerarquía es el objeto Window, que representa una ventana de nuestro navegador. Dado que cada marco se considera una ventana distinta, cada uno de ellos dispone de su propio objeto Window. El objeto Document representa el documento HTML y cada uno de los objetos que lo componen se corresponden con diversas etiquetas HTML. 9.2 Eventos esenciales deuna PBgina WEB Como se ha comentado, los eventos son sucesos que ocurren siempre como respuesta a un mensaje del sistema o del usuario. Lo que significa que muchasvecesel sistema espera una respuesta por parte del usuario. Cuando ésta se produce, por ejemplo,al hacer click en un botón, se genera una llamada al evento que controla la pulsación del botón, Paso seguido es que el programador decida utilizar ese evento en provecho propio y añada código para adecuar ese evento a sus necesidades. Lista de eventos Un evento, comosumismonombre indica, es algo que ocurre. Para que una rutina nuestra se ejecute sólo cuando suceda algo extraño deberemos llamarla desde un controlador de eventos. Aquí tienes una pequeña guía de eventos definidos en JavaScript relacionados con una ventana del navegador. -.;.;.;.Ewj$&$j ...................... .............. ....... ;:.:/.:.:.:.. . . ............................................ OnLoad Ocurre cuando se abre la ventana. Terminar de cargarse una página, se carga la página o documento UnLoad Ocurrecuandosecierralaventana.Salir (descargarla), el usuario sale de la página OnMouseOver El ratón es colocado sobre una imagen, vínculo o ancla OnMouseOut El ratón salga del área que ocupa una imagen, vínculo o ancla OnSubmit El usuario envía un formulario OnClick El usuario hace click en un elemento o vínculo del documento OnBlur Un elemento del documento pierde el enfoque OnChange Cambia el texto, área de texto o el valor de un elemento seleccionado OnFocus Un elemento del formulario obtiene el enfoque OnSelect El usuario selecciona un campo de entrada de un elemento del formulario <FRAMESET...> de una página <BODY ...> <FRAMESET... > <A HREF..> <AREA ...> <A HREF..> <AREA... > <FORM ...> <INPUT TYPE="button, checkbox, link, radio"...> <INPUT TYPE="text"...> <TEXTAREA...> <INPUT TYPE="text"...> <TEXTAR EA.. .> <INPUT TYPE="text"...> <TEXTAREA...> <INPUT TYPE="text"...> <TEXTAREA...> Para más información acerca de los eventos y propiedades de los objetos puedes leer la guía de Netscape o consultar un manual de la referencia bibliográfica. Validar formularios Los formularios representan una forma rápida y eficaz de enviar información desde el ordenador del usuario hasta el servidor web. Generalmente, constan de varios campos de texto, botones de selección y listas desplegables, que el usuario rellena convenientemente y transmite al servidor pulsando finalmente en un botón de envío. A menudo, muchos de los campos que el usuario debe completar obedecen a un formato determinado, por Io que conviene queel usuario los rellene correctamente para evitar errores al procesar en el servidor los datos recibidos. JavaScript constituye una manera muy conveniente de trasladar esta labor de validación de la información al ordenador del cliente, descargando así al servidor de esta tarea. En JavaScript, los formularios son objetos form, que dependen a suvez del objeto document. En la Figura 9.2 se muestra la validación de un campo de texto que necesita ser llenado. Para mostrar como se modela una aplicación Web usando DBSP, se dará como ejemplo el desarrollo que se realizo para crear la parte de la aplicación de Registro de Acreditaciones, Revalidaciones y Equivalencias para el Alumno de Posgrado, para la Oficina de CBI. Utilizaremos, las mismas etapas de ADOO, para desarrollar esta aplicación, vistas en los capítulos anteriores y conforme se desarrolla la aplicación veremos que elementos del análisis cambian en la manera de interpretación e implementación usando DBSP.Daré por hecho el desarrollo del análisis y me enfocare a la descripción de implantación. Una delas cosas que hay que recalcar desde este momento, esquelas aplicaciones desarrolladas con DBSP, no se apegan en cuanto a forma con el ADOO, con relación al manejo de clases y objetos. En cuanto al fondo, es esencial tener un ADOO, básicamente para interpretar la estructura que va a tener nuestra aplicación. Otro punto a recalcar es que no se va a tener una capa de negocios como tal, finalmente como consecuencia de que DBSP es un scripting a nivel de HTML, mas sin embargo el ADOO a nivel de clases de negocios nos sirve para interpretar, el cómo podemos manejar estas a nivel de Scripting. Con lo anterior quiero decir que la semi capa de negocios la manejaremos tanto a nivel de interfaz con JavaScript, como a nivel de Datos con scripts de SQL usando las operaciones básicas que SQL maneja. Algo muy importante que hay que decir es que siempre vamos a pensar en un modelo de tres capas donde la capa de Negocios es la DLL. Todo esto lo podemos ver en la siguiente figura: ........,..., ..... ..:.....:...........,.............,..:.:.: ..,.,.,.,...... .:.:.:.:+:.:.:. .... P k I 2.'*."'" A,... .'; i ij i , 'L"" Objeto de HTML + JavaScript Negocio Comunicación dbsp.dll Objeto de Negocio b Figura 10.1 Modelo de Multicapa con notación de Objectory Empezemos a desarrollar la aplicación: > $ 1, c : '".",S' Objeto de Datos Modelo de Casos Tenemos el siguiente usecase Registro de Acreditaciones, Revalidaciones y Equivalencias por Alumno de Posgrado: UC Registro de Acreditaciones, Rewlidaciones y Equivalencias por Alumno de Posgrado u Registro de A R E Asistente de Posgrado porAlumno 1. Dar la matricula del alumno (usuario). 2 . Extraee de la base de datos la información del alumno (sistema). 3. Mostrar el expediente del alumno (sistema). 4. Seleccionar el tipo de tramite (Acreditación, Revalidación o Equiwlencia) (usuario). 5.Seleccionar el nombre de la escuela de procedencia (usuario). 6.Seleccionar el nombre de la licenciatura anterior (usuario). 7 . Obtener de la Base de Datos las materias que corresponden al tipo de tramite (tabla de materias equiwlentes al tipo de consulta) (sistema). 8 . Mostrar los datos del tramite y la tabla de equivalencias (sistema). 9 Seleccionar de la tabla de equivalencias las UEA's que se desean registrar (usuario). 10. Registrar la Información (sistema). 11. Generar el reporte (sistema). E 7 Acreditaciones Revalidaciones y Equivalencias El modelo de casos no se ve afectado porque las transacciones del sistema siguen siendo las mismas, así como los actores que interactúan con el sistema. Modelo de lnterfaz Teniendo en mente de que nuestra aplicación será enfocada a WEB, tendríamos que pensar en objetos de Interfaz, estableciendo las páginas HTML a las que el usuario tendrá acceso. Esto es que, un objeto de interfaz se encargara del contenido de la Página WEB. Este objeto enviara todo el código HTML a la maquina del cliente para que pueda visualizar la página. Si esta aplicación la llevaremos por ejemplo a Java (Servlets), el pensar en un objeto de lnterfaz seria muy útil. Por ejemplo, debido a que en las pantallas se tiene el mismo fondo, el mismo encabezado, el mismo logotipo, etc. se puede crear una clase de interfaz que contenga estas características. Esto nos evitara que cuando se queramos cambiar una característica de la página como el fondo, solamente lo haríamos en la clase padre y automáticamente todos sus descendientes heredaran esta particularidad, imaginemos si se tienen varias paginas seria muy laborioso andar cambiando cada página y se puede caer en errores. Aquí nos encontramos con un primer problema, una clase de Interfaz. Dado que la manera de implementar una aplicación para WEB usando DBSP, no maneja objetos y clases a este nivel, tenemos que pensar como interpretar esto. ~~~~~~~~ Universidad Autónoma Metropolitana lztapalapa Para nuestra aplicación, podríamos solucionar el problema de la siguiente forma: Pensemos que sí tenemos un objeto de interfaz, en el cual tendremos un encabezado con el logotipo de la UAM y un titulo cualquiera, así mismo tendremos un fondo Único para todas las paginas, así como también tipos de letra, las cuales tendrán varios tamaños y colores. Podemos pensar que también vamos a manejar tablas, tal vez ciertos campos de estas, irían de un color en particular como en el caso de títulos. También tendríamos botones para tener eventos entre formularios, los cuales no necesariamente tienen que ser como los que todos conocemos, podemos crearlos con imágenes, sombras y colores. Todo esto lo podemos manejar a nivel de lenguaje de HTML, con Frames, CSS (Hoja de Estilos), etc. Por ejemplo: el encabezado que propusimos anteriormente, quedaría en un Frame, esto para que a lo largo de la aplicación siempre lo tengamos en pantalla y a nivel de HTML solamente se interpretará una sola vez, cuando se llama a la página principal. En el caso de los botones, tiposde letra, etc.,que mencionamos anteriormente, los podemos tener en una hoja de estilos la cual vamos a tener a lo largo de la aplicación, únicamente incrustando dentro del código HTML de cada pagina la referencia a esta hoja, para generar los botones, fondos, etc. Lamentablemente cada pagina que necesitemos dentro de la aplicación, tendrá que ser un archivo independiente, esto es, si una página llamada “uno.html” llama a otra llamada “dos.html”, tendremos que codificar la primera y la segunda por separado y guardarlas en un solo directorio. La Figura 10.1 y la Figura 10.2, muestran las características comunes en las paginas y lo que puede cambiar en su contenido. Una página HTML puede mostrar la información que envía el servidor, así como contener una forma para enviar datos o links para solicitar servicios. ~~~,~~~ ,,, ?:! ............................ .........<.,.,... ....:.:.:.:. . ...... .,,,.,.,.,.,.,.. .................................... Figura 10.1 Características comunes en las paginas En el ovalo rojo, vemos el encabezado que tendremos a lo largo de toda la aplicación y además está dentro de un Frame. En el ovalo azul vemos que este título en especial no cambiara a lo largo del apartado “Registro de ARE por Alumno” de la aplicación de Gestión Escolar. Figura 10.2 Cambia el contenido de las páginas. :~.~,:~,:~,:~).:~*:~,: .................................. ,)$))$;A ~~~~~~~~~~~~ &!!J!!h Universidad Autónoma Metropolitana lztapalapa ~ ...,,....A. : . .,., A...A.>~ ....... Modelo de Dominiode Problema Tenemos el siguiente diagrama: I W v e U E A : Integer W o m b r e U E A : String @Creditos : Integer HorasTeoria : Double HorasPractica : Double I' I I cAlurnno I W a t r i c u l a : Integer @Nombre : String @Nombrecarrera : String W v e c a r r e r a : integer @Estado : Integer WveAreaConcentracion : Integer WreditosAcumuiados : Integer cCarrera . cPlandeEsludio -vecarrera : Integer UEA : cUEA @T¡POUEA : String @Trimestre : Integer " " 1 W v e c a r r e r a : Integer rL ARE = Acreditaciones, Revalidaciones y. Equivalencias . - J "-- Figura 10.3. Diagrama de Dominio. Relaciones entre clases Daré por hecho el análisisquecondujoal consultar el Capítulo 4 de este documento. WscuelaProcedencia : String &icenciaturahterior : String &veUEA : integer m a t e r i a :String I diagrama anterior, si se presentan dudas La definición de las clases estáticasno sufre cambios debido a que los objetos de información son los mismos y sus relaciones también son las mismas. Esta parte no cambia la manera en que se implantará la aplicación con DBSP. Porque si recordamos que a partir de este modelo se obtendrd la estructura de la base de datos, por lo tanto la implantación de la base dedatos tampoco sufrirá cambios. DBSP no tiene que ver directamente con la implantación de la Base de Datos, únicamente la utiliza para generar Query's a ella. Por lo tanto, esta parte del análisis queda totalmente transparente al implementar posteriormente la aplicación con DBSP. Modelo de Análisis Dinámico En este modelo se establecen las principales interacciones entre los objetos dinámicos, entonces veamos como se desarrolla el Modelo de Análisis dinámico. Escenarios 1. Se ingresa la matricula del Alumno“952 13148”. 2. Se selecciona el tipo de tramite “Acreditación”. 3. Se captura el nombre de la escuela “UNAM”. 4. Se captura el nombre del Posgrado o Doctorado anterior “Posgradoen Matemáticas” 5 . Se captura el Registro ARE : Mecánica y Fluidos - Física I Introducción a las Ciencias de la Computación - Informática I Cálculo Diferencial - Matemáticas I 6. Se registra la información “Aceptar”. El Análisis de escenarios se mantienen sin cambios porque se definen a partir de los uses cases y éstos no fueron modificados, por lo tanto se tendrán los mismos escenarios. Diagrama de Colaboración Tenemos el siguiente diagrama: 11 Capturar Historlco ARE +OK ”-3 2, ValMatncula(rnatrlcula) oNAlunno 1: OK A .I olHistoricoARE 1 1 3: getPlurnno(rnatricula) -. Y I owlurnno I 4- getPlandeEsbdb(C\eCarrera) ti I Aslstente de Posarado 5 getUE&CwUEA) j . Estujio I 6 getTipoTrarnlte() 7 Selecclonar Unlwmdad de Procedencla 9 Selecclonar Posgrado M e n o r 12 regTipoTrarnIte(rnatr,UniProc,PosPnt.HistLIRE) 8. getUnivF‘rocedencta(TipoTrarnite,CveCarrera) 10 getUnlvPnteria(TipoTrarnLe,CwCarrera,Escfrocedencia) 13. setTlpoTrarnIte(malr.UnIvProc,PosPnt,HlstPRE) olFinHistoricoARE oNMaterlaAR + Figura 10.4 Diagrama de Colaboración de una aplicación hecha para el WEB oDMateria ARE Podemos ver que en el diagrama anterior existen objetos que no habíamos planteado, estos son: olHistoricoARE, oNMateriaARE y oDMateriaARE. Estos objetos pertenecen a otro apartado de la aplicación, pero explicare un poco acerca de ellos. Dentro de la aplicación, existe un catalogo de materias por así decirlo, cuando un alumno se le va a aplicar algún tipo de tramite, ( Lo que estamos trabajando en este momento), debe de haber información acerca de las materias que son equivalentes para el tipo de Trámite, esto con un vínculo entre el Posgrado o Doctorado en el que esta inscrito actualmente el alumno en la UAM y la Universidad de Procedencia en la cual el alumno cursaba un posgrado o doctorado Por este motivo existe un catalogo, en donde se guarda la información necesaria para llevar a cabo un trámite en particular sobre el alumno. En el caso de que no exista información, el usuario tendrá que crear un catalogo con los datos requeridos. Como ya había mencionado al principio de este capítulo, no vamos a tener una capa de Negocios. En el diagrama anterior se ven claramente, cuales objetos son los de negocio, lo que querría decir que tendríamos que implementar algún tipode código, tanto para conectamos a las Bases de Datos, como para hacer los GETS y los SETS, entre muchas otras cosas más. Si utilizáramos Java (Servlets), tendríamos que crear clasesque nos permitieran hacer esto, así como también podríamos ver esta aplicación como una aplicación Multicapa, en donde los Servlets llaman a estas clases de Negocios para mandar y recibir información de la Base de Datos, así como también establecer las conexiones necesarias, y hacer algunas operaciones mas. Entendamos esto, porque creo que es importante, para entender como implementar esto mismo con DBSP. Los objetos de interfaz son páginas HTML que envían la información a un servlet; éste recibe la información y llama a los objetos de negocio para validar la información; a su vez los objetos de negocio llaman a los objetos de datos para solicitar datos y devolverlos al servlet. Finalmente el servlet envía una página HTML al usuario con la información correspondiente al servicio solicitado Con el siguiente Diagrama obtendremos la solución a este problema. Diagrama de Clases Dinámicas clRegistrarAlm noARE cNAlurnno 1 ____ . %pen() +envlarPaglna() *<<event>> capturarMatrlcula() *<<event>> selTlpoTrarnIte() *<<event>> reglstraro +close() *<<event>> flnlsh() j i 1 t cDAlurnno - " " / 1 " " " 2 " i cNPlandeEstudio \ " " \ cDUEA QtgetPlandeEstudio() \ \ , \ \ \ clFinRegistrarAlurnnoARE *Post() *enuarPagina() *<<event>> O K 0 *Destroy0 cNMateriaARE %alDatos() *RegistrarMaterlaARE() " I Figura 10.5 Diagrama de Clases Dinámicas de una aplicación hecha para el WEB Para empezar, como podemos observar a nivel de Interfaz, se trata únicamente de una pagina HTML, la cual tieneeventosyoperaciones de abrirycerrar. ¿Cómo podemos interpretar esto, sin pensar ahora en una Clase o Objeto?, Simplemente como una pagina otra, estoutilizando la capa HTML individual y conatributosúnicos,lacualllamaa los Servlets. Pero no hay capa de negocios, negocios de conexión, como en el caso de aquí es donde entra DBSP. Dpsp.dll, se encargaenprimer lugardehacer las conexiones necesarias tanto del usuario, como a la BasedeDatos,estodesdeque el usuariohace una petición.Así mismo se crea una Sesión de usuario, además esta sesión queda registrada a nivel del cliente (Maquina del Cliente) y no a nivel del servidor, cada vez queel usuario pide alguna pagina, dpsp.dll verifica si esta en sesión, si lo esta le da servicio, en caso contrario le dice que no le puede dar servicio hasta que entre en una nueva sesión. Por consiguiente, se le puede prestar el servicio a varios usuarios ala vez. Despuésque hacemos con lacapa de negocios?,ennuestrocasocon la clasede negocios Alumno, Plan de Estudios y MateriaARE. Si observamos cada clase tiene métodos como get, set, registrar, etc., estos métodos se transformaran directamente en lenguaje SQL en forma de Query’s, que quedaran dentro de la Base de Datos, con delimitadores especiales para que cuando se requiera DBSP, los busque, los ejecute y genere una respuesta. Básicamente lo que hace DBSP es leer lo que el usuario solicita, establecer la conexión con la Base de Datos, ejecutar una instrucción (Query) y regresar una respuesta. ¿Pero dónde quedan las validacionesylasoperacionesesenciales?,Estasquedana y para operacionesmáscomplejas,seutilizan nivel de HTML, usandoJavaScript, directamente sobre la Base de Datos, Scripts de SQL. Mas adelante, todo esto quedara aclarado, cuando implementemos esta parte de la aplicación. Primero acabemos de hacer el ADOO. Diagrama de Secuencia El diagrama de secuencia es equivalente con el diagrama de colaboración. En la siguiente Figura, se muestra la ejecuciónpasoapaso del escenario de RegistrodeAREpor alumno. P ] i . . . 1 1 OlFlnHistorlco oNMateriaA L Aslstente de I I 1 I I I I I I 5 i I I I rera) gyUEA(CveUEq) I I I I /I I I I I I Selecclonar Edcuela de Proceddncla ' getEscPrbcedencia(TipdTrarnite,CveC&rera) I -., I I I I I I I I I I I I -. EscProceden 9 ia) getPosAnprior(TipoTralite,CveCarrera I I I I + 9CaqturarHlstorlco ATE I I OK I I 1 I regTipoTrarn]te(rnatr,EscProc,~icAnt,H~stARE) 1 I I I setTipoT/arnlte(rnatr.EsjcProc.LicAnt.H+tE) I I I I Post(Ur0 I I I I I I I I I I I I I I I I I 1 I I I I I I I I I I I I I getTipoTrarnite0 d getPlandefstudlo(CveCa ii I I I I I I U P OK ' I - / Y I Figura 10.6 Diagrama de Secuencia de una aplicación hecha en el WEB Diagrama de Componentes Si establecemos la estructura de paquetes agrupados por temas, añadiremos un nuevo paquete que contiene DBSPque serán utilizados por el sistema, en la Figura 9.13 se muestra la estructura y sus dependencias. > LI U I I I I I I I I I I I I I I I I I I I I I I I DBSP.dl1 Alumno F I I J v Registro de AREi / Plan de Estudio .. \ UEA ->E MateriaARE \ \ \ \ Figura 10.7 Estructura de paquetes de una aplicación para elWEB 10.2 Ejemplo de Implementación usandoDBSP: El afán de esta parte de documento es presentar de una manera muy general como se implanta una aplicación con DBSP, no profundizaremos en como funciona DBSP a nivel de software y en donde se realizan los Query's para generar las consultas. Así como también no profundizaremos sobre código de HTML y JavaScript, si el lector le surgiese alguna duda, por favor utilice las referencias Bibliográficas, mencionadas al final del presente documento. Antes de empezar a implementaresta aplicación, hay que mencionar cómo DBSP se va a comunicar entre pagina y pagina, esto quiere decir que habrá alguna manera de comunicarse. Se tiene el siguiente URL: http:// hosffalias de la aplicación/dpsp.dll/page?doc= (parámetros) En donde Host = Dirección ip del Servidor. Alias = nombre de la aplicación usando el BDE, este último contendrá la dirección física de la Base de Datos. Dbsp.dll = Dynamic link language Page?doc = Parámetro quesirve para crear un vínculo entre paginas. Parámetros = Manejo tanto de html's como de carpetas en donde estarán los archivos. Ejemplo: http://l27.0.0.1/POSGRADO/dbsp.dll/pane?doc=comun\Principal.html Tenemos la siguiente página con la cual comenzaremos nuestro análisis: Código HTML dela Página anterior, únicamentese presentará aquel código que sirva para mostrar como funciona DBSP, para ver todo el código consulte la aplicación: <html> <head> HOJA DE ESTlLOS ... </head><body bgcolor="#FFFFFF" text="#000000" class="fondo"> <title>Untitled Document</title> ~#K~~~~K~:E~I;~NAME~~~~GRAM;~A~R~~ORIB '. ..~....~ ... .K . .....i. .-. ..~ ....C .. ..o ....a .. ...K .....I..E .., ..,. .~ ....~ ....M , . .... E....~ ..., .E ....S C , ., ..U , ....~ .....t..A .... .P R Q G E D E N C l ~ ~ ... ....... .......... .............. ... . ..... . ......................... ... ..... . . . . . . . ...... ........ . .. , ..... </body> </html> En el código anterior se pueden observar etiquetas llamadas KILLCOOKIE, la explicación de cómo funcionan estas se verá posteriormente ........ . ...... . ....................... .(~:,.,.,..’..,..’. .. .. . ... .. ......... . ...... .,.,. ::.,.::.:.:.:....:.:..:.:.:.:::.:.:.::.....\........ . :....:.:.:............/..:... ................. Este ultimo link, parece un poco raro (%a ~ d o ~ = d .r r s ~ ~ A ~ . .b .. ... ..~ . .. .. ~ ... . . ~.. : ..i.. ....p ........a .......~ .. . ~ ... . . .... ......... . . .. .. . .. .......... Esta es la manera en queDBSP se va a comunicar entre paginas. La página anteriormente mostrada, es un menú con varias opciones que tendrá nuestra aplicación, cada opción ejecuta un parte del total de la aplicación. Como ya habíamos mencionado,el usuario tendrá que crear una Sesión, utilizando un nombre de usuario y un password. Estandoen sesión el usuario podrá moverse alo largo y a lo ancho de la aplicación. AI oprimir el link de “REGISTRO DE ARE POR ALUMNO”, pasaremos a esta parte del sistema y el URL se vería de la Siguiente manera: ,, ,, , , ....,....I../..... , Donde aAREcapalmas.htm1 es la siguiente pagina. , En esta pagina ya entramos al Registro de Acreditaciones, Revalidaciones y Equivalencias por Alumno. Analicemos el Código de la Página: .. .. ... .. .. .............. ............. ......... ..?:...:.j::.:.$ ....... : : : ~ ~ J ~ ~ R i p ~ ~ : :.:.:.:: ............:..:................... <link rel="stylesheet"href="../styles/styles.css" type="text/css"> </head> Veamos el código del a siguiente pagina, no se mostrara la pagina como interfaz: htmb <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="texUhtml; charset=iso-8859-1"> clink rel="stylesheet"href="../../styles/styles.css" type="textfcss"> <table width="64%" border="O" height="36" class="fondoprin" align="center"> <tP <td> ediv align="center"> cp><span class="headtabletxt"> Acreditaciones, Revalidaciones </span><span class="headtabletxt"> y Equivalencias por Alumno<br> </span></p> </div> <Ad> </tP </table> <bP <table width="31%" border="O"> <tP <td><b>EXPEDIENTEDEL ALUMNO:</b></td> </tP </table> <hr> *,~~&~:wi&f@Ifjji, %:..:bfrr4iiw;:o:~ J;: ............. ..... *#DATASET A~€AS=P.OSORADOI.O~~ERY~D~:~:~~ ETIQUETA DATASET <tP <td class="tabledata2"width="l4%" height="29"> cdiv align="right">Nombre:</div> <td class="tabledata2" width="14%" height="28"> cdiv align="right">Matr&iacute;cula:</div> .... <i j ~ ~ ~ L~g~tta3w$$$$ ~ .......................... ~ ~ .......~ ::.:::.::: . . ..::.,,:~... ::.:::,:,:::.: ...~... ::. i.: ’: ...:....:.:i .......................................................................................................................... ............................... ~ También el elementoDATASET se encarga de traer los elementos de la consulta que le solicitamos, y ponerlos dentro del código HTML, en forma de etiquetas, las cuales son generalmente, los campos que le estarnos solicitando en la consulta. Para mayor información sobre estas etiquetas ver la ayuda de DBSP. APOSGRADO.APMATERN0, APOSGRADO.NOMBRE, APOSGRADO.MATRICULA, CARRERA.CVECARRERA, CARRERA.NOMBRECARRERA FROM APOSGRAD0,CARRERA WHERE APOSGRADO.MATRICULA=:MATRICULA AND APOSGRADO.CVECARRERA=CARRERA.CVECARRERA AND APOSGRADO.MATRICULA IN (SELECT MATRICULA FROM ALUMNOMATERIA-ARE) - Si el DATASET encuentra información sobre esta matrícula, regresa la información que se le solicito con la consulta, y genera un aviso al Usuario de que este alumno ya se le había hecho un trámite anteriormente - Si al alumno ya se le ha realizado un trámite previamente, se da la opción de . .. . . . . volver a generarotro trámite, borrando el anterior. ..................................................... ... *::::.:.:::::Si el DATASET, no encuentra información, redirección a otra pagina, para ................ <#REDIRECT DOC="docs\aAREcapalmasdat.html"> La pagina siguiente es: aAREcapalmasdat.htm1 que a continuación se muestra: pagina="page?doc=docs\\InGes.html"; document.location.replace(pagina); 1 </script> clink rel="stylesheet"href="../styIes/styles.css" type="text/css"> </head> <body bgcoloc-r"#FFFFFF"text="#000000" class="fondo"> <#SETCOOKIE NAME="MATRICULA" EXPRESSION="txtMATRICULA"> CbP ctable width="73%"border="O" height="36" class="fondoprin" align="center"> .... </table> <br> <table width="23%" border="O" class="tablefield"> CtP <td><b>Expediente del Alurnno:</b></td> </tP </table> ChP <table width="63%" border="O"> gmATA&T AttAS&pOSG.qADO:QuERYIw:$2> .............................................................................. . . ... . . .. . . ... . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . <tP <td class="tabledata2" width="14%" height="29"> cdiv align="right">Nombre:c/div> c/td> ................................................................................................................................................................ ....................................... ~ ~ ~ ~ ~ d s j ~ ................................................................................ ~ n f ~ ~ ~ ~ ~ ..................................................................................................................................................................................... :@N:~M~R~&&&~& .......................... ................................. .......... !:;+ifp ... ..... ............ ............ ~ ~ ~ ~ ' ' <td width="66%" height="45" class="tablefield"> <div alian="left"> ¿Qué hace esta pagina? : Primero se verifica que el alumno exista, cómo pero si ya lo verificamos?, No hemos verificado que el alumno exista en nuestra base de datos, únicamente verificamos que no existiera un Tramite hecho anteriormente sobre este Alumno. Por supuesto ahora vemos que el diagrama deClases expuesto anteriormente empieza a verse en la practica. Tenemos hasta este momento, una tabla dentro de la Base de Datos, que la vamos a utilizar para registrar todos los tramites que se realizan, pero también vamos a tener una tabla que guarda a todos los alumnos inscritos en la UAM a nivel de Posgrado y Doctorado. Así como también tendremos una tabla, la cual es un catalogo de Materias, creado con anterioridad para determinar que materias vamos a Revalidaro Equivaler, o Acreditar, para un Trámite en específico. Estas son las famosas Clases que obtuvimos alrealizar el ADOO, entre muchas otras más. Podríamos pensarque es ilógico pensar que si al alumnoya aparece con un Trámite no exista dentro de la tabla Alumnos. Entonces para que validar tantas veces lo mismo. No, no es validar tantas veces lo mismo. Estamos tratando de llevar a la práctica la famosa capa de Negocios (control). Notemos algo: En la página anterior, se verificó que no existiera un Trámite sobre este alumno. Como no existió algún trámite, no podemos asegurar en este momento que el alumno exista dentro de la Tabla Alumnos, lo que sí sabemos es que a este alumno no se le ha aplicado un Tramite, entonces el sistema nos manda a esta pagina, para verificar ahora sí, la existencia de este alumno. Si el alumno existe, proseguimos con la aplicación. En el caso de que en la página anterior, existiese un Trámite sobre este alumno, es lógico que el alumno existe en la Base de Datos. Entonces en este momento el sistema nos da la opción de volver a hacer el trámite o dejarlo como estaba. Pero no nos deja proseguir con la aplicación hasta que tomemos una decisión. Pasos que realiza la página: - Se realiza una consulta por medio del DATASET, utilizando el valor de la matrícula guardada en la COOKIE MATRICULA <#DATASET ALIAS=POSGRADO QUERYID=12> El código de la Consulta de SQL es el siguiente: SELECT APOSGRADO.APPATERN0, APOSGRADO.APMATERN0, APOSGRADO.NOMBRE, APOSGRADO.MATRlCULA, CARRERA.CVECARRERA, CARRERA.NOMBRECARRERA FROM APOSGRAD0,CARRERA WHERE APOSGRADO.MATRICULA=:MATRICULAAND APOSGRADO.CVECARRERA=CARRERA.CVECARRERA - Si existe este alumno, el DATASET, trae los datos que le solicitamos y los pone en la pagina.(Expediente del Alumno). I <td class="tabledata2" width="14%" heiaht="29"> 1 cdiv align="right">Nombre:</div> </td> .................. ctd class="tablefield" width="86%" height="29"~js~~PATERNa,~ .......................... ~ A P M A T E ~ ~ . .~. . . .~. . . ~ # N ~ M ~ ~ E ~ < ~ d > ... <div align="right">Matr&iacute;cula:</div> <td class=lltablefieldtlw ~ ~ ~ ~ ~ l </tP CtP l ~ ~ O / o .................................... ....................................... <td class="tabledata2" width="l4%" height="30"> <div align="right">Carrera:</div> ctd class="tablefield" width="86%" height="30"> zrWNOMBREGARRERA . ............................................. . . . . . . . . . ...........>c/td> </tP l l ~ e ~ g ~ ~ ~ l l <,,z'l l d ! ~ ~ ~ e ~ e r , , = a f j e nld!JZS> 6uel :............. ................. " : : : : : : : : : : : : .............. *t::::.:.:.:';:.:.:.:.: ............................... ~ ~ ~ ~ ~ ~ ~ r s ~ ~ ~ : ~ ~ , ~ ~ ~ ~ ~ ~ .....:.:.,.:..:.:.:::.: #-.:..:.:.:<.: ::.....:.:.:.;::*$ 3ed 3 - La siguiente pagina es: "aAREcapalmasdat1.html": El código HTML de la pagina: <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> clink rel="stylesheet" href="../../styles/styles.css" type="text/css"> <script language="JavaScriptl.2"src="../public/dbsp.js"></SCRIPT> <script language="JavaScriptl.2"> function Inicio0 { pagina="page?doc=docs\\lnGes.html"; document.location.replace(pagina); 1 </script> clink rel="stylesheet" href="../styles/styles. css"type="te:N </head> .... <td width="58%"><b>Datos del Alumno:</b></td> C,SS"> .................. <PI/> <A!p/>:aJqLuON~~,l~6U,,=U6!le A!P> <,,6Zll=146!a4 ,,%6,,=4lP!M ,,Z~WPalq~l,,=s~W PI> a > ~ . . . . . . .~ . ~ - ~ r ~ ~ ~ n # ~ ~ ~ ~ ~ .................................... <uOto=JaPJoq u%P6u=4lP!M al4el> ~~*:~38.~Ntsi:ss~~~d~ ...................................................................................................................................... VH33=r :''':3yuw 3,:xm13$& .................................................................................................................... ............................................................................................................ ................. .................................................... w.:..:,...::. ..::....::...e= .: .::..L..:.. j:.:.;: ......................... ..............8 <#KILLCOOKIE NAME="sindatos"> </form> </body> </html> ¿Qué hace esta página? : Primero se guardan en Cookies el Tipo de Tramite, Clave de la Carrera y la Fecha de Inicio del Trámite generados en la pagina anterior. <#SETCOOKIE NAME="TIPOTRAMITE" EXPRESSION="selTIPOTRAMITE"~ <#SETCOOKIE NAME="CVECARRERA" EXPRESSION="selCVECARRERA"> <#SETCOOKIE NAME="FECHA" EXPRESSION="txtFECHA"> Para evitar guardar todos los datos del Expediente del Alumno, se vuelve a generar la misma consulta por medio del DATASET sobre la matricula del Alumno guardada en la Cookie. <#DATASET ALIAS=POSGRADO QUERYID=12> 1 I El DATASET genera la consulta y pone en la pagina el expediente del Alumno El dato del Trámite también se pone en la pagina para referencia. El sistema solicita que se seleccione una Universidad de Procedencia, esto quiere decir que el Usuario debe escoger del Campo de Selección, la universidad de la que provenga el alumno. Aquí pasan dos cosas: - El sistema hace una consulta por medio de otro DATASET, para traer todas las Universidades guardadas en el Catalogo de Materias, que coincidan tanto con la Carrera inscrita del Alumno, como el Tipo de Tramite que se quiere realizar. <#DATASET ALIAS="POSGRADO" QUERYID=13> <select name="selESCUElAPROCEDENClA~~~ <#QRYLlST FIELDTEXT="ESCUELAPROCEDENCIA" VALUE="ESCUELAPROCEDENCIA"> El código en SQL es el siguiente: SELECT DISTINCT ESCUELAPROCEDENCIA FROM MATERIA-ARE WHERE TIPOTRAMITE= :selTIPOTRAMlTE AND CVECARRERA= :selCVECARRERA -Si el Usuario no encontró la Universidad que requiere, dentro de Campo de Selección. El usuario tendrá que salir de Registro deARE por Alumno y Generar una entrada en el Catalogo de materias, usando los mismos datos que están siendo utilizados en este momento con respecto al Tipo de Tramite y el de la Carrera inscrita del Alumno, asi como también de la Universidad de Procedencia y Posgrado o Doctorado Anterior. -Si el Sistema no encontró alguna Universidad que cumpla con las condiciones del - Tipo de Trámite y Carrera Inscrita. Desplegara el sistema un mensaje, el cual avisará al Usuario de que no existen Universidades bajo esas condiciones, entonces el Usuario tendrá que Generar un registro en el Catálogo, como anteriormente se mencionó. Si el usuario encontró en el campode Selección, la Universidad que estaba buscando, simplemente la selecciona y oprime el Botón ACEPTAR para proseguir con la aplicación. El evento que genera el Botón es llamar directamente a la pagina siguiente llevándose consigo el valor del campo de selección, que no es mas que el nombre de la Universidad de procedencia. ( "selESCUELAPROCEDENCIA") <form name="form" method="post" action="page?doc=docs\aAREcapalmasdat2.htmltt> La siguiente pagina es aAREcapalmasdat2.htmI Datos &A .a?mUn3,0: x)iitw fie8 Tr&n$Ss$a R . d k W ; ....................................................................................................................................................................................................................................................... El desarrollo de esta página es casi igual que la Anterior. Esta pagina lo que hace es mostrar los Posgrados o Doctorados que cumplen con las condiciones del tipo de tramite, y la Escuela de procedencia, utilizadas anteriormente. El comportamiento de esta página en cuanto a las Consultas y las condiciones de los DATASETS, son los mismos que los utilizados en la pagina anterior. En esta página, se guarda en una Cookie el valor obtenido de la pagina anterior con respecto a la Escuela de Procedencia y se actualiza esta pantalla con esta información, como lo podemos ver en la figura. Finalmente la siguiente pagina que produce esta pagina es: aAREcapalmasdat3.htmll que a continuación se muestra. Veamos su código en HTML: chtrnb <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="texVhtml; charset=iso-8859-1"> clink rel="stylesheet" href="../styles/styles.css" type="text/css"> cscript language="JavaScriptl.2" src="../public/dbsp.js">c/SCRlPT> <script language="JavaScriptl.2"> function Valida0 { var ID = RevisaSeleccion(document.Forma,"Debe seleccionar una materia!"); if (ID!=") { pagina="page?doc=docs\\aAREcapalmasdat4.html&CVEUEA="+lD; document.Forma.action=pagina document.Forma.submit0; 1 1 function ImprimirO{ pagina="page?doc=docs\\lmprimiraAREcapalmasdat.html"; document.Forma.action=pagina document.Forma.submit0; 1 function Inicio0{ pagina="page?doc=docs\\lnGes.html"; document.location.replace(pagina); 1 </script> .... cbody bgcolot="#FFFFFF"text="#000000" class="fondo"> ... CtP ctd width="48%"><b>Datosdel Alumno</b>cRd> ctd width="52%">cb> Datos del Tr&aacute;miteRealizaW/bWtd> a C/tP </table> chr> ........................ :. . .;.:.:.:.A:.:.:...,:.........:............:....?. .. ,.::...:..: ................. ~~~~~~K~:~~~~~ME=*P~~~RA~UAN~RI~~~~EXPR.ESS€ ctable width="lOO%"bordet="O"> ~ ~ ~ ~ ~ ~ ~ : r l : ~ ~ f ~ ~ = p ~ ~ ~ ~ ~ ~ ~ a t f ~ ~ r ................................................. CtP ctd class="tabledata2" width="9%" height="35"> cdiv align="right">Nombre:c/div> </td> ." <td class="tablefield"~ i d t h = " 3 6h~ ~ e "i g h t = l 1 3 5 ' ' = c ~ # A F F E R ~ ~ ~ ~ A ~ M ~ ~ E R ~ ~ *NQMBRE$.?&g$g ................................................................................................ ........................................ ..................................... ctd class="tabledata2" width="27%" height="35"> cdiv align="right">Tipode Tr&aacute;mite:c/div> ctd class="tablefield" C/tP ...................................................... hwidth="28%" e i g h t = "................................................. 35''=c~~POT~~]VES.~~d> CtP ctd class="tabledataZ" width="9%" height="28"> cdiv align="right">Matr&iacute;cula:c/div> c/td> <td class="tablefield"~ i d t h = " 3 6height="28l'S~~~~~RfC,WfA></td> ~~" ........................................ ctd class="tabledata2" width="27%" height="28"> cdiv align="right">Escuela de Procedencia:c/div> <Ad> height=ll28'l~~E~~C;UE~~~~E~EN~~A~</td> <td class=lltablefieldll width=l1280/oll 4tP .............. . . CtP ctd class="tabledata2" width="9%" height="35"> cdiv align="right">Carrera:c/div> ctd class="tabledata2" width="27%" height="35"> cdiv align="right">Posgradoo Doctorado Anterior:c/div> </td> ........................................................... ctd class="tablefield" width="28%"h e i g h t = " 3 5 ' ~ ~ P 9 s ~ : ~ ~ A ~ ~ ~ ~ l ~ ~ ~ ~ d </tP ............................................. ................................. .............. z#@/&TA5,FF"T, </table> <hr> <table width="99%" border="O"> <tP ctd width="34%" height="2">cfontcolot="#OOOOOO">Seleccionela UEA y registre </p> <#KILLCOOKIE NAME="sindatos"> </form> </body> ¿Qué hace esta pagina? : - - Hasta el momento tenemos 5 COOKIES guardadas en el sistema, las cuales son: Matricula, Tipo de Trámite, Universidad de Procedencia y Cve de la Carrera del alumno al cual se le esta aplicando el trámite. En esta pagina se guarda en una cookie el valor que nos pasa la página anterior, el cual es el Posgrado o Doctorado Anterior. Finalmente vamos a tener 5 Cookies activas. Como en las páginas anteriores, se hace una consulta por medio de un DATASET para generar el expediente del alumno y ponerlo en la página, utilizando únicamente la matrícula del alumno, que esta guardada en la Cookie matrícula. Ya con todos estos valores guardados, el sistema genera la consulta final, que se encarga de traer todas las materias ya pareadas del Catalogo de Materias (cMateriaARE), que cumplan con las condiciones guardadas. Esto es, se generará una consulta por medio del DATASET, con los siguientes valores: Cve de la Carrera: l=Posgrado en Física. Tipo de Trámite: Acreditación. Escuela de Procedencia: UAM Posgrado o Doctorado Anterior: Posgrado en Matemáticas <#DATASET ALIAS=POSGRADO QUERYlD=lI FULLSET> ;odigo del query en SQL: SELECT PLANDEESTUDIOS.CVECARRERA, PLANDEESTUDIOS.CVEUEA, PLANDEESTUDIOS.OBL-OPT, PLANDEESTUDIOS.TRIMESTRE, UEA.NOMBREUEA, UEA.NUMCREDITOS, MATERIA-ARE.MATERlA 'ROM PLANDEESTUDIOS, UEA,MATERIA-ARE UHERE PLANDEESTUDIOS.CVECARRERA= :CVECARRERA AND PLANDEESTUD1OS.CVEUEA= UEA.CVEUEA AND PLANDEESTUDI0S.CVEUEA =MATERIA-ARE.CVEUEA AND MATERIA-ARE.TIPOTRAMITE = :TIPOTRAMITEAND MATERIA-ARE.ESCUELAPROCEDENClA= :ESCUELAPROCEDENCIA AND MATERIA-ARE.POSGRADOANTERlOR = :POSGRADOANTERIOR AND PLANDEESTUDIOS.CVEUEA NOT IN (SELECT CVEUEA FROM ALUMNOMATERIA-ARE WHERE TIPOTRAMITE= :TIPOTRAMITE AND ESCUELAPROCEDENCIA= :ESCUELAPROCEDENCIAAND POSGRADOANTERIOR= :POSGRADOANTERIORAND MATRICULA= :MATRICULA) ORDER BY PlANDEESTUDIOS.OBL-OPT; I I El resultado de esta consulta es puesta en la página para mostrar toda esta información. <td class="tablefield" width="4%"> <input type="radio" name="rb" value="<#CVEUEA>"> </td> <td class="tablefield" width="12%" ><#CVEUEA></td> <td class="tablefield" width="l7%" ><#NOMBREUEA></td> <td class="tablefield" width="l9%" ><#NUMCREDITOS></td> <td class="tablefield" width="13%" ><#OBL OPT></td> <td class="tablefield" width="l5%" ><#TRIfiESTRE></td> <td class="tablefield" width="2O0/~"><#MATERIA></td> <td class="tablefield" width="20%" ><a href=Y#opcion">opcion</aWtd> <INPUT TYPE="HIDDEN" VALUE="<#MATERIA>" NAME="MATERIA"> </tr> - - Ya que tenemos toda la información necesaria en pantalla, el Usuario tendrá que seleccionar aquellas materias que necesite, lamentablemente no podrá seleccionarlas todas de un solo golpe. Únicamente podrá seleccionar y registrar una materia de vez en vez. Cuando el usuario seleccione una materia, el acto seguido será oprimir el Botón "REGISTRAR", el cual llamara a un JavaScript validando la selección. Este JavaScript, llevara la información de la materia seleccionada a otra pagina. Esta pagina tiene como única función registrar la materia seleccionada, junto con la matrícula del alumno y la fecha del Trámite en la tabla AlumnoMateriaARE (cAlumnoMateriaARE), la cual se encarga de guardar todos los registros de Trámites de ARE. <input type="button" name="Button" value="REGISTRAR" onClick="Valida()"> <script language="JavaScriptl.2"> function Valida() { var ID = RevisaSeleccion(document.Forma,"Debeseleccionar una materia!"); if (ID!=") { p a g ~ n a ~ . l .. . .l . ........ .:..... ... . ....,,........ document.Forma.action=pagina document.Forma.submit(); 1 . . .. p . ....... ...a ...... .....g .. .. . . .. .e . ... ..... ..~ ... .. .................... ... ... ... .. . ...................... .. ~ ... ... .. ............. o c ~ ~ o c El Query de SQL que se utiliza es el siguiente: INSERT INTO ALUMNOMATERIA-ARE VALUES(:MATRICULA, :CVECARRERA, :TIPOTRAMITE, :ESCUELAPROCEDENCIA, :POSGRADOANTERIOR, :MATERIA, :CVEUEA, :FECHA) - Si el usuario, ha acabado de seleccionar las materias que necesita para el trámite, a lo mejor querrá imprimirlas, entonces únicamente tendrá que oprimir el botón "IR A IMPRESIóN", el cual ejecutara otro JavaScript, que mandará llamar a otra pagina, la cual contendrá el Expediente del Alumno y todas las materias que se registraron. <input type="button" name="Submit3" vaIue="lR A IMPRESION" onClick="lmprimir()"> function Imprimir(){ . . .. . .. .. . .. ... .. ..... .. pagina="page?doc=docs~~l~~~;~~~RE~p~~~~~~a~,h~:l11 . . . ..... . ............... ............... .. . . . . . .. ... ............ ..... . . . . . . document.Forma.action=pagina document.Forma.submit(); 1 - Dentro de la página lmprimiraAHEcapalmasdat.html, habrá un botón "IMPRIMIR", el cual mandara llamar, al control de impresión del Sistema operativo para, seleccionar varios tipos de impresión. Ver la siguiente Figura: Como vimos a lo largo de todo este documento, el Análisis y Diseño Orientado a Objetos, esunametodología muy poderosa, la cual nos facilita la abstracciónde un problema dado, para llevarlo a una aplicación a nivel de software. Con el ADOO, prácticamentetenemos el 90% de la aplicación hecha, únicamentenos faltaría llevar este análisis a un código en cualquier lenguaje de programación para tener la aplicación que necesitamos. Ahora bien, como también analizamos, la Programación Orientada a Objetos nos proporciona, Reutilizar el código, Modificar, deuna solavez,varias partes de una aplicación dada, Ordenar y agrupar código según su finalidad, Analizar con mayor rigor nuestras aplicaciones,Adaptar nuestro códigoaotrasaplicacionesaunque no sean nuestras, encontrar errores más rápidamente, agregar nuevas capacidades y prestaciones, interactuar con el usuario y controlar mejor sus acciones, eliminar redundancias decódigo, documentar mas cómodamente las aplicaciones En relación, a la implantación deuna aplicacióncon la tecnología DBSP, podemos concluir que: - La implantación de una aplicación es muy rápida y eficiente. - En comparación con otras tecnologías, requiere de muy poco código, o casi nada de él. - Utilizando ADOO, y como DBSP no es un lenguaje en el cual podamos aplicar POO, tenemos que interpretar, muchas de las clases para llevarlas a nivel de HTML con JavaScript y SQL. - Es muy fácil de entender como funciona, y como se implanta. - Como en todo lenguaje de programación, DBSP maneja primitivas, las cuales llevan todo el control de la aplicación. Existen dos desventajas que tiene el implantar una aplicación con DBSP. La primera seria, que esta tecnología se casa con la Plataforma Windows(win32), Y la Segunda seria, que talvez, aplicaciones muy complejas, no se puedan llevar a este nivel, o en su defecto, se tendrían que utilizar otro tipo de artificios a nivel de software. Universidad Autónoma MetroDolitana IztaDalaDa Luis Fernando Castro Careaga Notas del Curso de Ingeniería se Software UAM 2000. Luis Fernando Castro Careaga, Análisis y Diseño Orientado a Objetos, Aplicadoa Sistemas de Información UAM 1999. Roger S. Pressman, Ingeniería del Software,un enfoque Práctico Mc GrawHiII , 1997. Cuarta Edición Jacobson, Ivar; Booch, Grady; Rumbaugh, James, The Unified Software Development Process Addison Wesley, 1999. Date, C.S. , Introducción a los Sistemas de Bases de Datos, Volumen1 Addison Wesley 5aEdición. Juan Carlos Orós, Diseno de páginas Web intercativas con JavaScript Alfaomega- ra-ma. 2000. 28 Edición Software utilizado para desarrollar la aplicación 0 0 0 0 0 0 0 Rational Rose 2000 Enterprise Edition Thorcom DBSP. BDE (Borland DataBase Engine), de Delphi 5 Macromedia Dreamweaver 4 Evrsoft 1st Page 2000, editor de HTML Internet Information Server 5.0 Windows 2000. Advanced Server. World Wide Web Tutoriales de HTML: 0 0 Guía para escribir documentos HTML http://sestud.uv.es/manual.esp/indice.htm Web Maestro. Crea tu página del web http://216.167.93.139/webmaestro/index.htrnl Tutoriales de JavaScript: 0 JavaScript 0 Curso de JavaScript 1.2 http://www.iec.csic.es/criptonomicon/iavascript/ http://html.programacion.net/is/index.php 0 Introducción a JavaScript http://www.publimas.com/tutoriales/iava/index.htm