Skip to content

SelfishCoconut/Software-Design-Patterns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laberinto25: diseño UML e implementación en Python

Proyecto de la asignatura Diseño de Software del curso 24-25 El proyecto consiste en diseñar e implementar la lógica de un juego basado en un laberinto La idea del proyecto está tomada de los ejemplos que aparecen en el libro "Design Patterns: Elements of Reusable Object-Oriented Programming", utilizados para ilustrar los patrones de creación.

Este curso 24-25 utilizaremos los asistentes de AI disponibles. Cada alumno podrá usar el que desee. En este proyecto se utiliza Cline en VSCode con Geimini

Factory Method

El primer patrón implementado es el Factory Method. A continuación, se muestra el diagrama de clases.

laberinto-fm

Decorator

Con este patrón podemos agregar responsabilidades nuevas (Bomba) a otros objetos (Pared, Puerta...). decorator

Strategy

El Strategy encapsula familias de algoritmos como objetos. En nuestra solución lo aplicamos para encapsular el modo (Agresivo, Perezoso) de los bichos. strategy

Composite

Este patrón se utiliza para representar estructuras recursivas todo-parte. Simplifica a los clientes porque pueden tratar de manera uniforme a compuestos y hojas. En el caso del proyecto del juego del laberinto, el Composite lo forman ElementoMapa (Component), Contenedor (Composite) y Hoja (Leaf).

composite

Iterator, Singleton y Template Method

Iterator

Utilizamos un iterador interno que es adecuado para estructuras tipo Composite. El iterador interno se implementa con la operación recorrer(unBloque). El parámetro unBloque es una función anónima.

Singleton

En esta solución, aplicamos el Singleton a las orientaciones

Template Method

El método actua de Modo es un Template Method. Las operaciones primitivas son: dormir, caminar y atacar.

singleton

Builder

Aplicamos el patrón Builder para crear laberintos a partir de un archivo JSON. El participante Director lee el archivo e interpreta el archivo JSON para ir creando cada una de las partes del juego. builder

State

El patrón State permite alterar su comportamiento cuando cambia de estado. Encapsula los estados de un objeto como objetos. Aplicamos el patrón State a los estados de Puerta (abierta o cerrada) y también a los estados de Ente (Vivo o Muerto). state

Command

El patrón Command encapsula una petición como un objeto. Aplicamos el patrón Command a las peticiones abrir, entrar y cerrar de Puerta y activar de Bomba. command

Visitor

visitor

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages