Logo Studenta

Práctica 13 V1

¡Estudia con miles de materiales!

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

Continuar navegando