Diferència entre revisions de la pàgina «POO Exercicis»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «== Base de dades d'espectacles == Tenim una companyia de representació que vol fer una web mostrant els espectacles que porten. Necessitem crear els següents objectes a…».)
 
Línia 1: Línia 1:
 +
== Lliga de futbol 2.0 ==
 +
Ampliarem l'exercici de l'aplicació de la lliga de futbol realitzat en l'apartat de llistes i diccionaris. En aquest cas els partits els encapsularem en un objecte "Partit" que tindrà per interfície uns mètodes particulars. La manera d'implementar internament la puntuació i l'autor de gol es recomana fer-la amb una llista on s'apunta el nom del jugador, però és optatiu triar algun altre sistema sempre i quan es respecti la interfície proposada.
 +
 +
[[Imatge: model_lliga_futbol.png]]
 +
 +
Requisits:
 +
* L'aplicació ha de permetre portar la puntuació d'una lliga de futbol.
 +
* Els equips s'han d'indicar en l'arxiu de configuració "equips.cfg".
 +
 +
Estructura de dades:
 +
* Les dades les emmagatzemarem en una matriu feta amb diccionaris, és a dir, un diccionari de diccionaris.
 +
* Cada partit s'emmagatzemarà en objectes Partit com el del model proposat. Cal respectar la interfície.
 +
* Cadascun dels equips tindrà un diccionari on emmagatzemarà el resultat dels partits (objecte Partit) que ha jugat a casa seva. Així ens adreçarem al resultat d'un partit amb, per exemple: <pre>gols_visit = resultats["local"]["visitant"].num_gols_visit()</pre>
 +
* Es recomana inicialitzar la matriu a l'inici de l'aplicació:
 +
** Carregar l'arxiu "equips.cfg" en una llista
 +
** fer un bucle per crear el diccionari de diccionaris i inicilitzar cada element Partit:<pre>resultats["local"]["visitant"] = Partit()</pre>
 +
 +
El menú ha de permetre:
 +
* Crear nova lliga: carregar un arxiu de configuració ("equips.cfg") amb el nom dels equips.
 +
* Entrar les dades d'un partit: t'ha de demanar triar equip local / visitant d'una llista i després entrar el número de gols de cada equip i qui els ha marcat. De fet, no cal indicar el nº de gols, sinó que vagis entrant el nom dels jugadors que marquen. Quan entris una cadena buida (enter directament) es considerarà acabada l'entrada de dades d'aquell equip.
 +
* Esborrar les dades d'un partit (per si hem comès un error a l'entrar-ho).
 +
** Ho farem esborrant l'objecte Partit (amb un "del"), i tornant a crear l'objecte.
 +
* Enregistrar les dades d'una lliga en un arxiu de text.
 +
* Carregar les dades d'una lliga des d'un arxiu de text.
 +
* Calcular i mostrar la classificació.
 +
 +
<br>
 +
 
== Base de dades d'espectacles ==
 
== Base de dades d'espectacles ==
 
Tenim una companyia de representació que vol fer una web mostrant els espectacles que porten. Necessitem crear els següents objectes amb la jerarquia pertinent i els seus atributs entre parèntesi:
 
Tenim una companyia de representació que vol fer una web mostrant els espectacles que porten. Necessitem crear els següents objectes amb la jerarquia pertinent i els seus atributs entre parèntesi:

Revisió del 18:26, 3 nov 2012

Lliga de futbol 2.0

Ampliarem l'exercici de l'aplicació de la lliga de futbol realitzat en l'apartat de llistes i diccionaris. En aquest cas els partits els encapsularem en un objecte "Partit" que tindrà per interfície uns mètodes particulars. La manera d'implementar internament la puntuació i l'autor de gol es recomana fer-la amb una llista on s'apunta el nom del jugador, però és optatiu triar algun altre sistema sempre i quan es respecti la interfície proposada.

Fitxer:Model lliga futbol.png

Requisits:

  • L'aplicació ha de permetre portar la puntuació d'una lliga de futbol.
  • Els equips s'han d'indicar en l'arxiu de configuració "equips.cfg".

Estructura de dades:

  • Les dades les emmagatzemarem en una matriu feta amb diccionaris, és a dir, un diccionari de diccionaris.
  • Cada partit s'emmagatzemarà en objectes Partit com el del model proposat. Cal respectar la interfície.
  • Cadascun dels equips tindrà un diccionari on emmagatzemarà el resultat dels partits (objecte Partit) que ha jugat a casa seva. Així ens adreçarem al resultat d'un partit amb, per exemple:
    gols_visit = resultats["local"]["visitant"].num_gols_visit()
  • Es recomana inicialitzar la matriu a l'inici de l'aplicació:
    • Carregar l'arxiu "equips.cfg" en una llista
    • fer un bucle per crear el diccionari de diccionaris i inicilitzar cada element Partit:
      resultats["local"]["visitant"] = Partit()

El menú ha de permetre:

  • Crear nova lliga: carregar un arxiu de configuració ("equips.cfg") amb el nom dels equips.
  • Entrar les dades d'un partit: t'ha de demanar triar equip local / visitant d'una llista i després entrar el número de gols de cada equip i qui els ha marcat. De fet, no cal indicar el nº de gols, sinó que vagis entrant el nom dels jugadors que marquen. Quan entris una cadena buida (enter directament) es considerarà acabada l'entrada de dades d'aquell equip.
  • Esborrar les dades d'un partit (per si hem comès un error a l'entrar-ho).
    • Ho farem esborrant l'objecte Partit (amb un "del"), i tornant a crear l'objecte.
  • Enregistrar les dades d'una lliga en un arxiu de text.
  • Carregar les dades d'una lliga des d'un arxiu de text.
  • Calcular i mostrar la classificació.


Base de dades d'espectacles

Tenim una companyia de representació que vol fer una web mostrant els espectacles que porten. Necessitem crear els següents objectes amb la jerarquia pertinent i els seus atributs entre parèntesi:

  • Espectacle (id, durada, preu)
    • Escenic (escenari_minim)
      • Teatre (protagonista, actors[], extres[])
      • Clown (principal, secundaris[])
      • Monoleg (monologuista)
    • Animacio
      • Infantil
      • Adults
    • Musical
      • TeatreMusical
      • Rock
      • Ball
    • Dansa
      • Ballet
      • HipHop

Dissenya unes classes amb aquesta jerarquia. La classe Espectacle ha d'implementar els següents mètodes que després cal reescriure en les classes derivades:

  • demana_dades(): demanarà les dades per la consola i les emmagatzemarà en l'objecte.
  • mostra_dades(): formata i mostra les dades pertinents a la classe.

En les classes heredades procura no demanar ni mostrar les dades pertanyents a les superclasses, sinó que només es demanen i mostren les de la pròpia classe. Per poder mostrar/demanar totes les dades utilitza el mètode sobrecarregat de les superclasses.

Finalment realitza un programa que gestioni una llista d'Espectacles per línia de comanda. El programa ha de permetre a l'usuari afegir, llistar i esborrar elements "fulla" (que no tenen fills, això vol dir que no poden ser ni Espectacle, ni Escenic, ni Animacio, ni Musical ni Dansa) en la llista.