Activitats

Descomposició d'un partit de futbol

L’objectiu d’aquesta activitat és entendre com funciona la descomposició de problemes seguint l’orientació a objectes.

Relacioneu les preguntes següents, relatives al procés de descomposició en objectes d’un partit de futbol de primera divisió, amb les respostes correctes.

  • Quants objectes jugador hi ha?
  • Pot variar el nombre d’objectes jugador?
  • Té sentit que hi hagi objectes arbitre:?
  • Té sentit que hi hagi les classes Defensa o Porter?
  • Té sentit que el número de la samarreta sigui un atribut de jugador?
  • I si dos jugadors es poden canviar la samarreta entre ells?
  • Té sentit que un objecte arbitre tingui una operació rebreTargeta?

  • Sempre hi haurà 22 més els suplents.
  • Normalment no, excepte casos especials com lesionats que abandonen el camp.
  • No hi ha motiu perquè no, ja que són elements clarament importants i identificables, i no es poden considerar jugadors. Com hi ha més d’un àrbitre, poden haver-hi diversos.
  • No seria una bona elecció, ja que donat un jugador, aquest pot jugar en qualsevol ubicació (algú que normalment juga de defensa pot acabar jugant de porter). Si aquestes classes existeixen, mai es pot donar aquest cas, ja que els objectes no poden canviar de classe (un objecte de la classe Defensa no pot convertir-se en un de la classe Porter). És millor si la posició és un atribut d’una classe Jugador.
  • Absolutament, ja que especifica una propietat del jugador en el joc.
  • També, simplement canvien el valors dels respectius atributs, però els jugadors segueixen tenint un número de samarreta.
  • No, els arbitres no poden rebre targetes, només els jugadors.

El joc del Pacman

L’objectiu d’aquesta activitat és practicar la descomposició de problemes seguint l’orientació a objectes.

Descomposar en objectes una pantalla del joc del Pacman. Usar noms descriptius pels objectes.

  • pacman:
  • blinky:, inky:, pinky:, clyde: (els fantasmes)
  • laberint:
  • passadís1:…passadísN:
  • casaFantasmes:
  • punt1:…puntN:
  • puntEspecial1:…puntEspecial4:
  • fruita:

El joc dels vaixells

L’objectiu d’aquesta activitat és aprendre a descompondre en objectes un problema; en aquest cas, el joc dels vaixells.

En el joc dels vaixells poden participar-hi dos jugadors. Cada un té dos taulers, que només ell pot veure (el contrincant, no), i cada taulell és una quadrícula de dues dimensions. Les files s’identifiquen amb un nombre i les columnes amb una lletra, de manera que, en total, a cada tauler hi ha un nombre de caselles igual a files*columnes i cada casella es pot identificar clarament amb una coordenada (per exemple, A-3, F-4…). Les dimensions dels taulers de tots dos jugadors han de ser idèntiques.

Abans de començar la partida, cada jugador ubica dins un dels seus taulers:

  • Un portaavions, que ocupa 4 caselles.
  • Dos destructors, que ocupen 3 caselles.
  • Tres fragates, que ocupen 2 caselles.
  • Quatre submarins, que ocupen 1 casella.

L’única restricció és que no es poden ubicar vaixells en diagonal (només horitzontalment i verticalment).

Per torns, cada jugador diu la coordenada associada a una casella. El contrincant mira el seu tauler i respon “aigua” si en aquesta casella no hi ha cap vaixell, “tocat” si n’hi ha una part, o “tocat i enfonsat” si aquesta casella és l’última que falta perquè un vaixell estigui tocat en totes les caselles. El jugador que ha dit la coordenada pot enregistrar tota aquesta informació al seu segon tauler, on no ha situat els vaixells.

Guanya qui enfonsa primer tots els vaixells del contrincant.

Enumereu tots els objectes que componen una partida en curs, suposant que els diferents jugadors ja han ubicat els vaixells en els taulers respectius, d’acord amb la metodologia d’orientació a objectes. Indiqueu algun atribut dels objectes identificats.

En una descomposició en objectes d’un problema, cada element individual que es considera important correspon a un objecte. En aquest cas, com que és un joc de taula, es pot veure que cada element físic en una partida al món real es traduiria a un objecte dins un programa. No cal oblidar que cada jugador controla dos taulers; en un ubica els seus vaixells i en l’altre va marcant les jugades que ha fet al seu contrincant (“aigua” i “tocat”).

Per simplificar la llista, s’enumera el cas d’un jugador. Al joc hi haurà un objecte de cada un dels enumerats, per a cada jugador. Per exemple, a nivell de portaavioons, en realitat n’hi ha dos (portaavionsJugador1: i portaavionsJugador2:). I així per a cada objecte enumerat:

  • taulerVaixells:
  • casellaVaixells1:…casellaVaixellsN:
  • portaavions:
  • destructor1:, destructor2:
  • fragata1:, fragata2:, fragata3:
  • submarí1:, submarí2:, submarí3:, submarí4:
  • taulerMarques:
  • casellaMarques1:…casellaMarquesN:
  • IndicadorAigua1…IndicadorAiguaN:
  • IndicadorTocat1…IndicadorTocatN:

Servei de transports

L’objectiu d’aquesta activitat és practicar la descomposició en objectes d’un problema, concretament, un servei de transports (un servei de metro metropolità o uns ferrocarrils de rodalies).

En aquest cas, es tracta d’un enunciat obert, no hi ha una descripció prèvia específica, i l’estudiant pot triar el grau de complexitat a partir del nivell de detall que vulgui assolir.

Enumereu tots els objectes que componen el problema i, per a cada un, enumereu alguns atributs que es considerin importants, si n’hi ha.

Per fer l’exercici, les indicacions següents poden ser útils com a orientació:

  • Alguns aspectes que es poden tenir en compte per establir els elements que componen l’escenari són la maquinària, les infraestructures i el personal.
  • Una justificació per a aquesta tasca pot ser crear l’aplicació que s’executa en la central de control del sistema o un videojoc, com els d’estratègia de tipus Tycoon.

Donat que es tracta d’un enunciat obert, per proposar una solució concreta es partirà d’un sistema de metro. El grau de detall s’establirà en funció del que hagi de controlar exactament el programa que es vol fer. A la solució s’intenta ser bastant detallat:

  • línia1:…líniaN: (atributs: nom, color)
  • estació1:…estacióN: (atributs: nom)
  • viaConnexióEstacions1:…viaConnexióEstacionsN: (atributs: llargària, velocitat recomanada)
  • convoi1:…convoiN: (atributs: identificador, model, velocitat actual)
  • vagó1:…vagóN: (atributs: identificador, model, capacitat màxima, nombre passatgers actual)
  • conductor1:…conductorN: (atributs: nom, temps treballat)
  • revisor1:…revisorN: (atributs: nom, temps treballat)
  • màquinaDispensadora1:…màquinaDispensadoraN: (atributs: identificador, càrrega de paper, càrrega de tinta, estat de funcionament)
  • tiquet1:…tiquetN: (atributs: tipus, preu)
  • multaExpedida1:…multaExpedidaN: (atributs: nom infractor, preu a pagar)

El blackjack

L’objectiu d’aquesta activitat és aprendre a descompondre en classes un problema. En aquest cas, el joc del blackjack tal com es descriu a continuació.

El blackjack és un joc de cartes típic de casinos. Un crupier gestiona una taula de joc, on diversos jugadors competeixen en paral·lel contra el crupier, però no entre ells. Es pot considerar que en una partida de blackjack s’estan fent N partides en paral·lel jugador contra crupier, si bé el crupier usa les mateixes cartes contra tots els jugadors. L’objectiu és apropar-se, el màxim possible, al valor 21 amb la suma dels valors de les cartes, però sense passar-se, amb la particularitat que totes les figures valen 10 i l’as es pot comptar com a 1 o 11, a elecció de qui l’ha rebut.

Primer de tot, cada jugador de la taula aposta un cert nombre de fitxes.

A continuació, el crupier reparteix dues cartes a cada jugador i a ell mateix. Les cartes del jugador són visibles, però el crupier només en mostra una.

A partir d’aquest moment, cada jugador pot demanar noves cartes, fins que consideri que en té suficients o es passi. En aquest darrer cas, el jugador perd la partida automàticament.

Quan tots els jugadors que encara no han passat en tenen prou, tots ells i el crupier mostren les cartes. Els jugadors que s’han apropat a 21 més que el crupier guanyen l’aposta, i la resta la perden.

Enumereu totes les classes que componen el joc, de manera que, a partir d’aquesta tasca, més endavant sigui possible crear una aplicació de casino en línia.

Finalment, enumereu les classes de l’exercici que es podrien usar si volem fer qualsevol joc de cartes tipus casino (pòquer, bacarà…).

Ara es tracta de descompondre en classes, no objectes. Per tant, per a cada tipus d’element que participa en el joc (ja n’hi hagi un o N), només hi haurà una classe:

  • Crupier.
  • Jugador.
  • Taula de Joc.
  • Baralla.
  • Carta.
  • Fitxa.

Totes aquestes classes, de fet, es podrien aprofitar per crear qualsevol altre joc de cartes (o si més no, una immensa majoria), on un crupier arbitri el joc i les apostes es basin només en fitxes del casino.

Gestió de la docència

L’objectiu d’aquesta activitat és practicar la generació de mapes d’objectes per entendre els enllaços entre objectes.

Es parteix d’una aplicació de gestió de la docència d’una institució educativa on s’han identificat les classes: Estudiant, Assignatura, Professor i Curs.

Genereu un mapa d’objectes de certa complexitat que mostri un possible escenari dels objectes dins el programa.

Atès que fer un mapa realista (amb molts estudiants i professors) seria inintel·ligible, la possible solució que es presenta té un nombre limitat d’objectes.

Figura

Hi ha alguns aspectes que val la pena comentar per entendre’l millor:

  • Com es pot veure, hi ha diferents objectes cursX:, que volen significar que cada assignatura s’ha dut a terme en diferents cursos. Ara bé, que cada objecte sigui un element diferent no vol dir que cadascun es refereixi a un curs diferent. El que dicta a quin curs es refereix cada objecte seran els seus atributs (per exemple: anyCurs). Per tant, res no impedeix que curs1: i curs4: corresponguin tots dos al curs 2011-12. En aquest sentit, un curs correspon a una edició d’una assignatura concreta.
  • Del mapa d’objectes es pot deduir que en aquest centre l’estudiant1: ha repetit tres cops l’assignatura.
  • També es pot veure que hi ha assignatures que es fan de tant en tant (assignatura1:) i d’altres que es fan més sovint (assignatura4:)

Un MUD

L’objectiu d’aquesta activitat és aprendre a fer el procés complet de disseny d’una aplicació mitjançant l’orientació a objectes.

Els MUD (Multi User Dungeon, masmorra multijugador) són jocs en línia, tradicionalment amb una interfície d’usuari en text. El jugador porta un personatge que es mou per diferents localitzacions, on ha de superar certes dificultats i lluitar contra monstres. Tant el personatge del jugador com els enemics tenen un conjunt de propietats (força, destresa, saviesa, professió, nivell de lluita…) que estableix la seva capacitat per tenir èxit quan emprenen qualsevol acció.

Aquests jocs estan inspirats en les aventures conversacionals antigues i es poden considerar clarament els precursors dels MMORPG (Massively Multiplayer Online Role-playing Game, joc de rol en línia massiu multijugador).

Apliqueu les fases de disseny per crear un MUD. Si és necessari, per fer aquesta tasca cerqueu informació sobre què és un MUD, i així podreu entendre quin és el problema concret a resoldre.

Per a cada classe, definiu tots els atributs necessaris i algunes de les operacions que es considerin adients, i ubiqueu-les correctament d’acord amb el principi de cohesió. Finalment, genereu un mapa d’objectes d’una certa envergadura en què es visualitzi un moment concret del joc.

Una possible descomposició en classes seria la que es mostra tot seguit. Jugador indica els personatges que estan jugant en aquell moment, que es van movent per un laberint de sales, lluitant contra enemics. Monstre, els enemics que hi ha pel joc. Sala representa cadascuna de les ubicacions del joc i SortidaSala, quines sortides hi ha disponibles donada una sala. Els Ítems són elements que es poden agafar per ajudar els jugadors.

Figura

Un possible mapa d’objectes que representa un estat concret d’una partida és el que hi ha a continuació. És una partida amb un laberint petit, de cinc sales, on estan jugant dos jugadors alhora.

Figura

Algunes indicacions que es poden deduir d’aquest mapa, per facilitar-ne la comprensió, són:

  • Hi ha dos monstres movent-se pel laberint.
  • El jugador 2 té un ítem, que li farà falta per vèncer el monstre que hi ha a la mateixa sala…
  • Un cop algú es mou de la sala 4 a la 5, ja no pot recular (per exemple, potser la sortida és un forat per on et llances).
  • Sembla ser que el monstre 2 està vigilant l’ítem 2, a la sala 5.

Implicacions de les decisions de disseny

L’objectiu d’aquesta activitat és raonar sobre les implicacions que suposa optar per diferents solucions possibles donat un mateix problema.

Expliqueu quines implicacions té, donat un joc del Monopoly, el fet que els diners que té un jugador es representin mitjançant objectes, les instàncies de la classe Bitllet, o mitjançant un atribut diners: enter en la classe Jugador.

Primer de tot, cal dir que totes dues possibilitats es poden considerar correctes. Ara bé, els objectes que s’identifiquen en un escenari indiquen els elements que col·laboren per resoldre’l. Si els bitllets s’identifiquen com a objectes, és possible tenir un control de quins bitllets (quants i de quin valor individual) té exactament cada jugador. Si s’escull l’opció de definir un atribut, llavors es pot saber en tot moment de quants diners disposa cada jugador, però es fa impossible saber exactament en forma de quins bitllets individuals.

Anar a la pàgina següent:
Exercicis