PATRONS DE PROGRAMACIÓ
“Has pensat mai com es generen les fases del joc Candy Crush,
com es programen els diferents caramels nous?
La resposta són els patrons de programació,
l’arquitectura dels codis”
Durant aquest tema aprenem els principals conceptes de la Programació Orientada a Objectes.
- CLASSES I OBJECTES:
- Una classe és la definició de característiques i mètodes (coses que pot fer) d’un objecte.


- HERÈNCIA:
- Especialització d’una classe. Per exemple un animal pot ser un mamifer, desprès un mart. Copia les característiques i mètodes de la seva mare i les podrà modificar i afegir.


- POLIMORFISME
Tractar a tots els objectes hereus com el mateix objecte.

- PATRONS DE PROGRAMACIÓ



PATRÓ MODEL VISTES CONTROL
Existeixen patrons de programació que permeten estructurar en conceptes diferents dins d’un mateix programa. Així, per exemple, el model view controler ens separa en tres parts que col·laboren entre elles. Així un programador podrà manipular cada una de les parts de manera independent.
1. Model – Aquest nivell es considera el nivell més baix en comparació amb la vista i el controlador. Representa principalment les dades per a l’usuari i defineix l’emmagatzematge de tots els objectes de dades de l’aplicació. També conté la lògica de l’aplicació.
2. Vistes – Aquest nivell està associat principalment a la interfície d’usuari (UI) i s’utilitza per proporcionar la representació visual del model MVC. En termes més senzills, aquest nivell tracta de mostrar la sortida real a l’usuari. També gestiona la comunicació entre l’usuari (entrades, peticions, etc.) i el controlador.
3. Controlador – Aquest nivell té cura del gestor de sol·licituds. El controlador completa el cicle de prendre la sortida de l’usuari, convertint-la en missatges desitjats.
https://www.geeksforgeeks.org/benefit-of-using-mvc/
ENTREGA ESTUDI “CARRERA D’ANIMALS”
Per fer l’estudi del tema crea un document nou dins la teva carpeta de digitalització. Posa l’enllaç en el següent formulari i fes els exercicis del tema.
Formulari d’entrega -> aquí
Mira la teoria, llegeix el codi i fes pasa a pas les preguntes.
Recorda que els problemes s’han de representar damunt un esbós físic.

CODI “CARRERA D’ANIMALS”
El següent codi implementa un joc de carreres semblant a un “joc de la oca” on s’esbleixen les regles on cada participant té un color, es juga per torns i hi ha tirada de daus per saber el moviment. Observa el codi i respon les preguntes al teu document d’estudi.

EXERCICIS D’OBSERVACIÓ DEL CODI “MODEL VISTA CONTROL”
- Al programa “CARRERA ANIMALS” canvia tots els animals i colors, comprova que mostri el nom del guanyador a la finalització. En quina funció del programa s’han fet els canvis?
- En quina funció del codi mostra el nom del guanyador?
- Quina instrucció fa caminar cada animal?, quines funcions crida el programa per fer moure cada participant?
- En quina llista estan els animals, quines funcions l’empren.
- Com funciona el model MVC.
DISSENY DE ANIMALS. microArquitectura
Dissenyam quatre animals, recorda que ho has de fer seguint les passes de:
- esbós
- codificació: codi que dibuixa un personatge. Mira el següent codi per conèixer les formes.
- disseny amb programa inkscape, gimp, altres, …
PROGRAMA DE PERSONATGE
ALTRES TIPUS D’ANIMALS
Usant la propietat d’HERÈNCIA poden crear diferents tipus d’animals sense duplicar codi.
class Mamifer(Animal):
def __init__(self, color, y_position, name, speed):
super().__init__(color, y_position, name)
self.speed = speed
def move(self):
self.x += random.randint(1, self.speed)
class Rapinaire(Animal):
def __init__(self, color, y_position, name, glide_factor):
super().__init__(color, y_position, name)
self.glide_factor = glide_factor
def move(self):
self.x += random.randint(3, 7) + self.glide_factor # Els rapinyaires es desplacen amb fluïdesa
class Peix(Animal):
def __init__(self, color, y_position, name, water_type):
super().__init__(color, y_position, name)
self.water_type = water_type
def move(self):
self.x += random.randint(2, 6) # Peixos poden ser més ràpids en l'aigua