Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Carátula para entrega de prácticas Facultad de Ingeniería Laboratorio de docencia Laboratorios de computación salas A y B Profesor: Saavedra Hernández Honorato Ing. Asignatura: Programación Orientada a Objetos Grupo: 1 No de Práctica(s): 13 Integrante(s): Ayala Trejo Albanya Yendalli Téllez González Jorge Luis Méndez Costales Luis Enrique Villamar Cortes Juan Antonio Santana Sánchez María Yvette Zecua Salinas Juan Carlos Téllez González Jorge Luis Villamar Cortes Juan Antonio Zecua Salinas Juan Carlos No. de Equipo de cómputo empleado: --- No. de Lista o Brigada: --- Semestre: 2020-2 Fecha de entrega: 13/05/2020 Observaciones: CALIFICACIÓN: __________ Facultad de Ingenierı́a Programación Orientada a Objetos Índice 1. Objetivo 2 2. Introducción 2 3. Patrones de Software 2 3.1. Consideraciones y puntos de vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.2. Patrón MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2.1. Tipos de roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2.2. Elementos esenciales de MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4. Conclusiones 8 1 Facultad de Ingenierı́a Programación Orientada a Objetos 1. Objetivo Implementar una aplicación en un lenguaje orientado a objetos utilizando algún patrón de diseño. 2. Introducción Un patrón de diseño se define como una solución repetible y general, es decir, una descripción o modelo de cómo abordar la resolución de un problema en diferentes situaciones o entornos. Un diseño de software adecuado debe de anticiparse a cualquier problema que pueda presentarse en su implementación sin perder el enfoque en las especificaciones solicitadas. El uso de templates de diseño permite evitar cualquier eventualidad que pueda surgir en el desarrollo de una aplicación derivada de un diseño deficiente y poco definido; como pudiese ocurrir con el denominado código spaghetti. Figura 1: Los patrones de diseño agilizan el desarrollo de una solución al proveer un paradigma eficaz y probado. Cabe señalar que estos patrones no representan un diseño de software terminado, y en cambio, representan un molde sobre el cuál se puede desarrollar una determinada aplicación. Es decir, ofrece una estrategia definida para estructurar internamiento el código interno favoreciendo su legibilidad y su posterior análisis. 3. Patrones de Software El concepto de los patrones de diseño surge a mediados de los años 90 en el libro Design Patterns: Elements of Reusable Object Oriented Software por parte de Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides; también conocidos por el sobrenombre de Gang of Four. Su idea principal parte de lo siguiente: Si la forma de solucionar un determinado problema se puede extraer, explicar y reutilizar en múltiples ámbitos, entonces tal solución representa un patrón de diseño de software. 2 Facultad de Ingenierı́a Programación Orientada a Objetos Un patrón de diseño se compone de 4 elementos principales: 1. Nombre del patrón: Describe el diseño del problema, su solución y sus consecuencias de forma breve. 2. El problema: Ejemplifica las situaciones de aplicación del patrón, el problema abordado y su con- texto. Puede incluir determinadas condiciones que deben de cumplirse para aplicar el patrón correc- tamente y que su implementación se viable y no carezca de sentido. 3. La solución: Muestra los elementos que forman parte del diseño o patrón, sus comunicaciones in- ternas ası́ como sus colaboraciones y tareas. De forma similar a un clase abstracta o una interfaz, la solución provee una abstracción del diseño de un problema y el arreglo necesario de elementos (como clases y objetos) para que el problema pueda ser resuelto exitosamente: no especifica ningún procedimiento en especı́fico. 4. Consecuencias: Representan el resultado obtenido y las ganancias obtenidas tras haber aplicado el patrón. A pesar de ser un aspecto poco considerado, resulta ser de gran relevancia ya que pone en evidencia las ventajas del uso de un determinado patrón frente a una solución sin una estructura clara o previamente definida. En general, las mayores ganancias de la aplicación de un patrón de diseño se encuentran en el ahorro de timpo de desarrollo además de una mayor flexibilidad ante cualquier situación y una mayor portabilidad a otras plataformas. 3.1. Consideraciones y puntos de vista Un patrón de diseño es una abstracción de una solución en un nivel alto. Los patrones solucionan problemas que existen en muchos niveles de abstracción. Hay patrones que abarcan las distintas etapas del desarrollo; desde el análisis hasta el diseño y desde la arquitectura hasta la implementación. Muchos diseñadores y arquitectos de software han definido el término de patrón de diseño de varias formas que corresponden al ámbito a la cual se aplican los patrones. Sin embargo, los puntos de vista sobre cada patrón pueden afectar a su definición; pues la lı́nea entre lo que es un patrón o es un mero bloque primitivo de construcción puede resultar difusa. Figura 2: Cada patrón de diseño puede estar sujeto a diversos puntos de vista respecto a su condición. 3 Facultad de Ingenierı́a Programación Orientada a Objetos Como fue mencionado previamente, estas templates no establecen diseños implementados y codificados que sean utilizables. A su vez, tampoco resultan tan especı́ficos o complejos como para ser aplicados a una sección especı́fica de un sistema. En cambio, su objetivo consiste en una descripción de las comunicaciones necesarias entre objetos y clases personalizables para resolver un determinado problema de diseño general aplicado a un contexto particular. Los patrones de diseño de software se suelen dividir en tres grandes categorı́as: Patrones arquitectónicos: Describen soluciones de alto nivel en software y hardware. Patrones de diseño: Se refieren a las soluciones a nivel medio en las estructuras del software. Patrones de programación: COnsideran soluciones a nivel bajo de software (clases y métodos). Suelen ser especı́ficos de un determinado lenguaje. Ası́ mismo, dentro de los patrones de diseño se encuentran tres grupos principales: Patrones creacionales: Son los que facilitan la tarea de creación de nuevos objetos, de tal forma que el proceso de creación pueda ser desacoplado de la implementación del resto del sistema. Se basan en encapsular el conocimiento acerca de los tipos concretos que nuestro sistema utiliza y ocultar cómo estas implementaciones concretas necesitan ser creadas y cómo se combinan entre sı́. Patrones estructurales: Los patrones estructurales de Clases usan la herencia para proporcionar interfaces más útiles combinando la funcionalidad de múltiples Clases. os patrones estructurales de objetos crean objetos complejos agregando objetos individuales para construir grandes estructuras. Patrones de comportamiento: Se refiere a la forma en que las clases u objetos interaccionan y distribuyen funcionalidades. Se usan para gestionar algoritmos, relaciones y responsabilidades entre objetos. Figura 3: Diferentes tipos de patrones de acuerdo a su categorı́a. 4 Facultad de Ingenierı́a Programación Orientada a Objetos 3.2. Patrón MVC El modelo Vista-Controlador asigna roles a los objetos de acuerdo a su utilidad, y definirá la forma en que estos se comunican entre sı́. Dentro de esta implementación, a la colección de todos los objetos del mismo tipo o rol se les conoce como una capa. Esta implementación permite el amplio reciclaje de objetos, posibilita la implementación de inter- faces mejor definidas y, además, las aplicaciones que aplican este patrón suelen ser más fáciles de extender. Figura 4: Diferentes tipos de patrones de acuerdo a su categorı́a. 3.2.1. Tipos de rolesLos objetos que forman parte de la capa Modelo son los encargados de encapsular la información de una aplicación y son quienes definen la lógica interna de la manipulación de datos. Un objeto de esta capa puede tener realaciones 1 : 1 o 1 : 2,3, ...,n con otros objetos del Modelo. Los objetos con este rol representan la experiencia y el conocimiento asociado a la solución de una parte especı́fica de un determinado problema a resolver dentro de la aplicación. Se espera que los objetos de esta capa no tengan una comunicación explı́cita con los objetos de la Vista, pues las acciones de los usuarios en tal capa deben ser comunicados al Modelo por medio de la capa Controlador. De esta forma, cuando un objeto perteneciente al Modelo cambie, se envı́a una notificación al Controlador para que los objetos de la Vista actualicen su estado. Figura 5: Los objetos del modelo definen el funcionamiento interno de la aplicación. 5 Facultad de Ingenierı́a Programación Orientada a Objetos Un objeto de la capa Vista representa todo aquellos que el usuario puede ver y todo con lo que puede interactuar en una aplicación. Estos objetos están adaptados para proporcionar una presentación adecuada de la información perteneciente a los objetos del Modelo y habilitar su modificación. Al igual que el caso anterior descrito, cualquier entrada de información recibida es notificada al Modelo por medio de la capa Controlador, y la necesidad de cambiar la presentación de los objetos de la Vista es notificada por medio del Controlador. Figura 6: Los objetos de la vista son la presentación de la aplicación al usuario. La capa Controlador representa al intermediario entre las comunicaciones de los objetos de las capas Modelo y Vista. A su vez, los objetos de esta capa pueden establecer y coordinar diferentes tareas de la aplicación y administrar el uso de los objetos y su vida útil dentro de la ejecución del programa. Esta capa también puede observarse como un intérprete de las acciones del usuario en los objetos de la Vista y los cambios en la capa del Modelo; comunicando los cambios a la capa respectiva. Figura 7: El controlador coordina las comunicaciones y las operaciones internas de la aplicación. 3.2.2. Elementos esenciales de MVC El problema planteado por MVC consiste en representan gráficamente (Vista) información almace- nada en un repositorio de datos (Modelo), haciendo uso de un coordinador (Controlador) entre las pantallas y el repositorio de tal forma que la comunicación entre estos sea sencilla y se facilite el flujo de información entre ambos. 6 Facultad de Ingenierı́a Programación Orientada a Objetos La solución consiste en desacoplar la información proveniente del repositorio del código correspon- diente a la interfaz gráfica, de tal forma que sea posible contruir diversas vistas en la aplicación. Cuando la aplicación se ejecute, cada vista se puede registrar por medio del controlador de paso de información implementado de manera que los objetos internos que manipulan la información del repositorio se encuentren en sinergia con aquellos pertenecientes a la interfaz gráfica. Las consecuencias o ganancias de la aplicación de este modelo consisten en las siguientes: 1. Desacoplamiento entre los objetos de la vista y el modelo, de tal forma que la vista refleje los cambios del modelo, y a su vez, cualquier modificación introducida por medio de la vista sea debidamente notificada a los objetos del Modelo. 2. Se pueden generar diversas vistas para diferentes partes del modelo con el fin de presentar información diversa, sin necesidad de reescribir el modelo en el proceso. 3. Posibilita manejar las entradas de información sin necesidad de reescribir los objetos de la Vista, ya que el controlador es el que se encarga de interpretar la información recibida y responder ante los estı́mulos externos recibidos por medio del encapsulamiento. De esta forma, se pueden implementar diversas respuestas dependiendo de la acción recibida por la vista, sin alterarla en el proceso. Figura 8: Flujo de comunicaciones de MVC. 7 Facultad de Ingenierı́a Programación Orientada a Objetos 4. Conclusiones A raiz del contenido teórico estudiado en la práctica y los hipotéticos ejemplos que fueron estudiados durante la última clase, fue posible para nosotros comprender de mejor forma la utilidad y los escenarios de aplicación de los patrones de diseño en la creación de aplicaciones en el paradigma orientado a objetos. Su uso tiene como objetivo principal obtener diversas ganancias y ventajas con respecto a una implementación sin un patrón definido. La brigada considera que las principales utilidades que estos patrones pueden tener son las siguientes: Permiten ahorrar una enorme cantidad de tiempo en el desarrollo de una solución de un determinado problema, minimizando su costo de desarrollo total. Implementan una lógica de diseño válida y probada por diversos desarrolladores, sin el temor de estar escribiendo un programa con soluciones defectuosas o carentes de validez. El uso de un patrón común permite explicar a otras personas el funcionamiento de una aplicación de forma eficaz y sencilla. Del mismo modo, permite a otros desarrolladores analizar con rapidez la implementación realizada en un programa sin detenerse en otros detalles que requieran mayor clarificación y acelera el proceso colaborativa de una aplicación al estar basado el diseño en un modelo en común. Finalmente, consideramos que esta primera aproximación a los patrones de diseño resulta intere- sante y aporta una nueva forma de ver el proceso de desarrollo de programas; especialmente aquellos que son realizados de forma colaborativa con otras personas involucradas. Referencias [1] Patrones de diseño. Recuperado de: http://lcp02.fi-b.unam.mx/static/docs/PRACTICAS_POO/ poo_p13.pdf. Fecha de consulta: 06/05/2020. [2] Patrones de diseño de software. Recuperado de: https://devexperto.com/ patrones-de-diseno-software/. Fecha de consulta: 06/05/2020. [3] Patrones de Diseño en aplicaciones Web con Java J2EE. Recuperado de: https://www.ciberaula. com/articulo/diseno_patrones_j2ee. Fecha de consulta: 06/05/2020. Los créditos de las fotografı́as pertenecen a sus respectivos autores. c© LATEX 8 http://lcp02.fi-b.unam.mx/static/docs/PRACTICAS_POO/poo_p13.pdf http://lcp02.fi-b.unam.mx/static/docs/PRACTICAS_POO/poo_p13.pdf https://devexperto.com/patrones-de-diseno-software/ https://devexperto.com/patrones-de-diseno-software/ https://www.ciberaula.com/articulo/diseno_patrones_j2ee https://www.ciberaula.com/articulo/diseno_patrones_j2ee
Compartir