12.07.2015 Views

VIII Jornadas de Enseñanza Universitaria de la Informática Cáceres ...

VIII Jornadas de Enseñanza Universitaria de la Informática Cáceres ...

VIII Jornadas de Enseñanza Universitaria de la Informática Cáceres ...

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

El alumno <strong>de</strong>be saber que <strong>la</strong> herramientaubicará <strong>la</strong>s c<strong>la</strong>ses seleccionadas en <strong>la</strong> capa <strong>de</strong>Dominio <strong>de</strong> <strong>la</strong> aplicación generada, por lo que noes conveniente seleccionar c<strong>la</strong>ses que representenventanas, etc. Para cada una <strong>de</strong> <strong>la</strong>s tres capas para<strong>la</strong>s que se va a generar código pue<strong>de</strong>n elegirsediversas opciones (situadas en <strong>la</strong> parte inferior <strong>de</strong><strong>la</strong> ventana):1. Para <strong>la</strong> capa <strong>de</strong> Presentación pue<strong>de</strong> elegirse elentorno <strong>de</strong> <strong>de</strong>sarrollo para el que se generarácódigo.1.1 Aunque se observan varios entornos <strong>de</strong>lenguaje Java, ocurre que los Framesconstruidos con, por ejemplo, Visual Caféno son editables con Forte o JBuil<strong>de</strong>r, razónpor <strong>la</strong> que los posibles entornos se colocancomo opciones excluyentes.1.2 Se genera una pantal<strong>la</strong> “tipo ficha” porcada c<strong>la</strong>se seleccionada. A<strong>de</strong>más, se haceque cada c<strong>la</strong>se <strong>de</strong> <strong>la</strong> capa <strong>de</strong> Presentaciónconozca a su instancia correspondiente <strong>de</strong><strong>la</strong> capa <strong>de</strong> Dominio (por ejemplo: unapantal<strong>la</strong> que muestra los datos <strong>de</strong> un empleadoconoce a su objeto Empleado correspondiente).1.3 Se generan un conjunto <strong>de</strong> ventanas adicionalesy “constantes”, cuya implementaciónno <strong>de</strong>pen<strong>de</strong> o <strong>de</strong>pen<strong>de</strong> muy poco <strong>de</strong><strong>la</strong> aplicación que se está generando.Ejemplos <strong>de</strong> estas ventanas son un diálogopara mostrar mensajes <strong>de</strong> error, una ventanaque muestra listas <strong>de</strong> registros, unaventana que pi<strong>de</strong> confirmación antes <strong>de</strong>borrar o modificar, etc.1.4 Todas <strong>la</strong>s pantal<strong>la</strong>s generadas poseen unconjunto <strong>de</strong> operaciones que permiten invocaroperaciones <strong>de</strong> persistencia sobrelos objetos <strong>de</strong> <strong>la</strong> capa <strong>de</strong> Dominio (<strong>la</strong>spantal<strong>la</strong>s “tipo ficha”, por ejemplo, tienenun botón “Guardar”, que guarda el objetoactualmente mostrado en <strong>la</strong> base <strong>de</strong> datos,mediante una l<strong>la</strong>mada al método insert oupdate –<strong>de</strong>pen<strong>de</strong> <strong>de</strong>l caso- <strong>de</strong>l correspondienteobjeto <strong>de</strong> <strong>la</strong> capa <strong>de</strong> Dominio).2. La capa <strong>de</strong> Dominio se genera mediante una“traducción directa” <strong>de</strong> <strong>la</strong>s c<strong>la</strong>ses seleccionadasal lenguaje <strong>de</strong> programación consi<strong>de</strong>rado. A<strong>de</strong>más,para cada una <strong>de</strong> estas c<strong>la</strong>ses se genera elsiguiente conjunto <strong>de</strong> métodos:2.1 Un constructor sin parámetros, que da alos campos <strong>de</strong> <strong>la</strong> c<strong>la</strong>se valores por <strong>de</strong>fecto(por ejemplo, el valor cero a los long).2.2 Un constructor con parámetros que permitematerializar objetos (esto es, construirinstancias <strong>de</strong> c<strong>la</strong>ses a partir <strong>de</strong> los registrosalmacenados en <strong>la</strong> base <strong>de</strong> datos).Los valores <strong>de</strong> los parámetros pasados aeste constructor se correspon<strong>de</strong>n con losvalores <strong>de</strong> <strong>la</strong>s columnas que forman <strong>la</strong>c<strong>la</strong>ve principal <strong>de</strong>l registro que queremosmaterializar.2.3 Métodos insert, <strong>de</strong>lete, update y <strong>de</strong>lete,que permitirán actualizar el objeto en <strong>la</strong>base <strong>de</strong> datos. Esto constituye una implementación<strong>de</strong>l patrón CRUD (operacionespara hacer Create, Read, Update y Delete),expuesto por Yo<strong>de</strong>r [4].3. Para <strong>la</strong> capa <strong>de</strong> Persistencia se genera siempreun Agente [1] cuya implementación es siempreconstante, y que ejecuta instrucciones SQL sobre<strong>la</strong> base <strong>de</strong> datos. Existen cuatro formas <strong>de</strong> asignary generar <strong>la</strong>s responsabilida<strong>de</strong>s <strong>de</strong> persistencia:3.1 Mediante el patrón Experto, cada c<strong>la</strong>sepersistente <strong>de</strong>fine e implementa sus operaciones<strong>de</strong> persistencia. Es <strong>de</strong>cir, en el<strong>la</strong>sresi<strong>de</strong> completamente el código <strong>de</strong> <strong>la</strong>soperaciones insert, <strong>de</strong>lete, etc. Esta alternativatiene <strong>la</strong> <strong>de</strong>sventaja <strong>de</strong> que hace a <strong>la</strong>sc<strong>la</strong>ses <strong>de</strong> <strong>la</strong> capa <strong>de</strong> Dominio completamente<strong>de</strong>pendientes <strong>de</strong>l gestor <strong>de</strong> base <strong>de</strong>datos utilizado.3.2 Para <strong>de</strong>sacop<strong>la</strong>r a <strong>la</strong>s c<strong>la</strong>ses <strong>de</strong> <strong>la</strong> capa <strong>de</strong>Dominio <strong>de</strong>l sistema gestor <strong>de</strong> base <strong>de</strong> datos,<strong>la</strong>s operaciones <strong>de</strong> persistencia pue<strong>de</strong>n<strong>de</strong>legarse a “fabricaciones puras” [2]. Deeste modo, si se cambia <strong>de</strong> gestor <strong>de</strong> base<strong>de</strong> datos, sólo se necesitará modificar <strong>la</strong>sc<strong>la</strong>ses asociadas (<strong>la</strong>s fabricaciones puras,que resi<strong>de</strong>n en <strong>la</strong> capa <strong>de</strong> Almacenamiento),y no <strong>la</strong>s <strong>de</strong> Dominio, que son muchomás complejas puesto que son <strong>la</strong>s queverda<strong>de</strong>ramente implementan <strong>la</strong> solución<strong>de</strong>l problema propuesto (que habitualmenteserá mucho más que gestionar persistencia).El sencillo ejemplo con que ilustramosen c<strong>la</strong>se esta <strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong>l gestor<strong>de</strong> base <strong>de</strong> datos es que, si se usa Access,<strong>de</strong>ben usarse <strong>la</strong>s pa<strong>la</strong>bras true o falsepara guardar valores en columnas boolea-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!