REPUBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN UNIVERSITARIA U.P.T. DE LOS ALTOS MIRANDINOS “CECILIO ACOSTA” P.N.F. EN INFORMÁTICA INTRODUCCIÓN A LOS PATRONES Docente: Richard Blanco. Integrante(s): Miguel Angel Reyes Tovar V- 20.746.494 Sección III – Trayecto III Los Teques, 25 de febrero de 2025 1 Índice Introducción .................................................................................................................................. 3 Patrones de programación. .................................................................................. 4 Importancia de los patrones de programación ................................................... 4 Ventajas de los patrones de programación ........................................................ 5 Desventajas de los patrones de programación .................................................. 6 Patrón MVC ............................................................................................................ 6 1. Modelo (datos) ............................................................................................ 7 2. Vista (IU) ...................................................................................................... 8 3. Controlador (Cerebro) ................................................................................ 9 Clasificación de los patrones de diseño según su propósito ......................... 10 1. Patrones de Creación:.............................................................................. 10 2. Patrones Estructurales: ........................................................................... 11 3. Patrones de Comportamiento: ................................................................ 11 Clasificación de los patrones de diseño según su ámbito .............................. 12 1. De clase: .................................................................................................... 12 2. De objeto: .................................................................................................. 12 Bibliografía........................................................................................................... 13 2 Introducción Los patrones de programación son una herramienta fundamental para los desarrolladores de software, ya que ofrecen soluciones probadas y efectivas a problemas comunes que se presentan durante el proceso de desarrollo de software. Estos patrones son como recetas que los programadores pueden seguir para resolver problemas específicos de diseño de software. Al utilizar patrones de programación, los desarrolladores pueden escribir código más limpio, mantenible y reutilizable, lo que a su vez conduce a un desarrollo más eficiente y de mayor calidad. En este trabajo, exploraremos en profundidad la importancia de los patrones de programación, ventajas, desventajas, el patrón MVC, clasificación de los patrones de diseño según su propósito, así como su clasificación de los patrones de diseño según su ámbito. Cada tipo de patrón juega un papel crucial en la creación de software robusto y escalable. 3 Patrones de programación. Los patrones de programación son soluciones generales a problemas comunes que se presentan en el diseño de software. Estos patrones representan las mejores prácticas adoptadas por la comunidad de desarrollo de software para abordar problemas específicos de diseño. Al utilizar patrones, los desarrolladores pueden evitar reescribir código y en su lugar, implementar soluciones probadas y eficaces. Los patrones se basan en el principio de la reutilización de código y la modularidad. Al aplicar patrones, los desarrolladores pueden separar las responsabilidades en diferentes partes de un sistema, lo que facilita la comprensión, la modificación y la escalabilidad del software. Los patrones ayudan a los desarrolladores a escribir código más limpio, más estructurado y más fácil de mantener. Importancia de los patrones de programación La utilización de patrones demuestra el avance de un programador de software, ya que utiliza soluciones probadas para problemas concretos que ya han sido probados en el pasado. Los patrones evitan que se tenga que crear código existente, ya que son escenarios identificados y su solución está documentada y probada por lo que no es necesario comprobar su efectividad. Además de esto, los patrones se basan en las mejores prácticas de programación. Los patrones pretenden: • Proporcionar un catálogo de soluciones probadas de diseño para problemas comunes conocidos. • Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente. • Crear un lenguaje estándar entre los desarrolladores. • Facilitar el aprendizaje a nuevas generaciones de programadores. 4 Asimismo, no pretenden: • Imponer ciertas alternativas de diseño frente a otras. • Imponer la solución definitiva a un problema de diseño. • Eliminar la creatividad inherente al proceso de diseño. Tomando en cuenta las ventajas que ofrecen los patrones, es importante recordar que no siempre son aplicables, por lo que forzar un patrón para resolver un problema incorrecto puede ser un gran error. Sin embargo, también existen los casos en los que se puede realizar pequeñas variantes de los patrones para solucionar de una mejor manera ciertos escenarios. Ventajas de los patrones de programación 1. Reutilización de soluciones: Los patrones de programación proporcionan soluciones estructuradas y estandarizadas para problemas comunes. Al aplicar estos patrones, los desarrolladores pueden reutilizar soluciones exitosas en diferentes proyectos, lo que ahorra tiempo y esfuerzo. Esto lleva a un aumento en la eficiencia y productividad del equipo de desarrollo. 2. Mejora de la calidad del software: Los patrones de programación promueven buenas prácticas de diseño y arquitectura de software. Al utilizar estos patrones, se fomenta la modularidad, la escalabilidad y la flexibilidad, lo que resulta en un código más limpio y fácil de entender. Esto reduce la probabilidad de errores y facilita el mantenimiento del software a largo plazo. 3. Comunicación efectiva: Los patrones de programación proporcionan un lenguaje común y una base de conocimientos compartida entre los desarrolladores. Esto facilita la comunicación y colaboración dentro del equipo de desarrollo, ya que todos tienen una comprensión común de los problemas y soluciones utilizados en el diseño del software. 4. Incremento de la escalabilidad: Los patrones de programación permiten que el software sea más escalable, es decir, capaz de manejar un mayor volumen de datos o usuarios sin degradar su rendimiento. Estos patrones 5 proporcionan estructuras flexibles que se adaptan a diferentes demandas y permiten la incorporación de nuevas funcionalidades sin afectar negativamente la arquitectura existente. Desventajas de los patrones de programación 1. Complejidad adicional: Al aplicar patrones de programación, el código puede volverse más complejo debido a la necesidad de seguir ciertas convenciones y estructuras. Esto puede dificultar la comprensión y mantenimiento del software, especialmente para desarrolladores menos experimentados. Es importante equilibrar la necesidad de utilizar patrones con la simplicidad y legibilidad del código. 2. Sobrediseñó: Existe el riesgo de caer en el sobrediseño al utilizar patrones de diseño. Al intentar aplicar patrones en cada parte del software, incluso cuando no son necesarios, se puede incurrir en una complejidad innecesaria y un aumento en el tiempo de desarrollo. Es importante evaluar cuidadosamente si un patrón es adecuado para el problema específico que se está abordando. 3. Curva de aprendizaje: Al ser soluciones más estructuradas y estandarizadas, los patrones de programación requieren un tiempo de aprendizaje para comprender su aplicación correcta. Los desarrolladores deben familiarizarse con los diferentes patrones y saber cuándo y cómo aplicarlos de manera efectiva. Esto implica una inversión inicial en capacitación y puede ser un desafío para equipos sin experiencia previa en el uso de patrones de programación. Patrón MVC MVC significa modelo (model), vista (view), controlador (controller). Esto es lo que significan cada uno de esos componentes. • Modelo: El backend que contiene toda la lógica de datos • Vista: El frontend o interfaz gráfica de usuario (GUI) 6 • Controlador: El cerebro de la aplicación que controla como se muestran los datos. Ejemplo una app donde haya que hacer clic y muestre el auto seleccionado: 1. Modelo (datos) El trabajo del modelo es simplemente administrar los datos. Ya sea que los datos provengan de una base de datos, una API o un objeto JSON, el modelo es responsable de administrarlos. 7 En la aplicación, el objeto modelo contiene un arreglo de objetos car con toda la información (datos) necesaria para la aplicación. También gestiona el carro actual que se muestra con una variable que se establece inicialmente en null. 2. Vista (IU) El trabajo de la vista es decidir qué verá el usuario en su pantalla y cómo. La aplicación tiene dos vistas: carListView y CarView. Ambas vistas tienen dos funciones críticas que definen lo que cada vista quiere inicializar y renderizar. 8 Estas funciones son donde la aplicación decide lo que el usuario verá y cómo. 3. Controlador (Cerebro) La responsabilidad del controlador es extraer, modificar y proporcionar datos al usuario. A través de las funciones getter y setter, el controlador extrae datos del modelo e inicializa las vistas. Si hay alguna actualización desde las vistas, modifica los datos con una función setter. 9 Clasificación de los patrones de diseño según su propósito Los patrones de diseño se clasifican según su propósito en: 1. Patrones de Creación: abstraen la forma en que se crean los objetos, de forma que permite tratar las clases a crear, de forma genérica apartando la decisión de qué clases crear o como crearlas. Según a donde quede desplazada dicha decisión se habla de Patrones de Clase (utiliza la herencia para determinar la creación de las instancias, es decir en los constructores de las clases) o Patrones de Objeto (es en métodos de los objetos creados donde se modifica la clase). Los patrones de Creación proveen diferentes maneras para remover las referencias explicitas a clases concretas del código donde deben ser utilizadas. • • Patrones de Creación de Clase: ▪ Factoría Abstracta. ▪ Constructor. Patrones de Creación de Objeto: ▪ Método Factoría. ▪ Prototipo. ▪ Singleton. 10 ▪ Conjunto de Objetos. 2. Patrones Estructurales: tienen que ver con la forma en que las clases y los objetos son agrupados para formar grandes estructuras. Los patrones estructurales de clase usan la herencia para formar interfaces o implementaciones. Los patrones estructurales de objeto describen formas de agrupar objetos para dar o crear nuevas funcionalidades. • Patrones Estructurales de Clase: o Herencia Múltiple. o Adaptador de Clases. • Patrones Estructurales de Objeto: o Adaptador de Clase. o Puente. o Compuesto. o Decorador. o Fachada. o Flyweigth. o Proxy. 3. Patrones de Comportamiento: están relacionados con los algoritmos y con la asignación de responsabilidades entre los objetos. Los patrones de comportamiento no describen sólo patrones de clases y de objetos, sino que describen los patrones de cómo éstos se comunican. Éstos patrones caracterizan complicados flujos de control que son difíciles de seguir o imaginar en tiempo de ejecución. • Los principales patrones de comportamiento son: ▪ Experto. ▪ Comando. ▪ Interprete. ▪ Iterador. ▪ Mediador. ▪ Memento. 11 ▪ Observador. ▪ Estado. ▪ Estrategia. ▪ Plantilla. ▪ Visitante. ▪ Vista / Controlador. Clasificación de los patrones de diseño según su ámbito 1. De clase: Basados en la herencia de clases. 2. De objeto: Basados en la utilización dinámica de objetos. 12 Bibliografía • Tecnoloworld (05-09-2024). https://tecnoloworld.net/programacion/patronesde-diseno-en-programacion-importancia-y-aplicaciones/ • Oscar Javier Blancarte Iturralde (2016). Introducción a los patrones de diseño un enfoque practico. • German Gutiérrez (10-05-2024). https://www.linkedin.com/pulse/beneficiosy-desventajas-de-los-patrones-dise%C3%B1o-german-gutierrez-jgrjc/ • Rafael D Hernández (28-07-2021). https://www.freecodecamp.org/espanol/news/el-modelo-de-arquitecturaview-controller-pattern/ • Diego A. Asenjo G. http://artemisa.unicauca.edu.co/~alerios/publicaciones/patrones.pdf • https://refactoring.guru/es/design-patterns/csharp 13