1. Classes [2 punts]

1.1. Classe Taula

Es vol dissenyar una classe per representar una taula d’un restaurant en un determinat torn. Es demana que, al mòdul taules (fitxer taules.py) implementeu la classe Taula especificada tot seguit:

class taules.Taula(npersones, nprimers, nsegons, npostres)

Construeix una taula a la qual s’han assegut el nombre de persones indicat, que han demanat en total el nombre de primers plats, segons plats i postres indicats. No totes les persones demanen tres plats necessàriament.

Atribut

pax

Indica el nombre de persones que s’han assegut a la taula.

Operació

Operació

Resultat

tau[plat]

Retorna el nombre de plats del tipus plat que s’han demanat a la taula. El valor plat pot ser 'primer', 'segon' o 'postres'

Implementació

Es recomana afegir a la classe un atribut privat que sigui un diccionari amb 3 elements. Les claus d’aquests elements han de ser 'primer', 'segon' i 'postres' i els valors el nombre de plats de cada tipus que s’han demanat a la taula.

Exemples de funcionament de la classe:

>>> t1 = Taula(6, 5, 6, 2)
>>> t1.pax
6
>>> t1['primer']
5
>>> t1['segon']
6
>>> t1['postres']
2

Disposeu dels jocs de proves al fitxer test-taula.txt.

1.2. Funció serveis

Al mateix fitxer taules.py implementeu la funció serveis() que a partir d’una llista d’objectes de la classe Taula, que representa totes les taules d’un restaurant en un determinat torn, i d’un string que pot tenir el valor 'primer', 'segon' o 'postres', retorni el nombre total de plats d’aquest tipus que s’han demanat al restaurant en aquest torn.

Atenció: Es tracta d’una funció del mòdul, no d’un mètode de la classe i, per tant, no pot usar els atributs privats de la classe.

Exemples de funcionament de la funció:


>>> t1 = Taula(6, 5, 6, 2)
>>> t2 = Taula(10, 10, 10, 10)
>>> t3 = Taula(4, 3, 3, 1)
>>> t4 = Taula(2, 2, 1, 1)
>>> t5 = Taula(3, 3, 3, 1)
>>> t6 = Taula(2, 1, 2, 2)
>>> t7 = Taula(4, 4, 2, 3)
>>> t8 = Taula(5, 3, 5, 4)
>>> ltaules = [t1, t2, t3, t4, t5, t6, t7, t8]
>>> serveis(ltaules, 'primer')
31
>>> serveis(ltaules, 'segon')
32
>>> serveis(ltaules, 'postres')
24

Disposeu dels jocs de proves al fitxer test-serveis.txt.

1.3. Classe FacturaTaula

Al mòdul facturataules (fitxer facturataules.py) implementeu la classe FacturaTaula que es deriva de la classe Taula i hi afegeix informació sobre els diners facturats a la taula, tal com s’especifica tot seguit:

class facturataules.FacturaTaula(npersones, nprimers, nsegons, npostres, facturacio)

Construeix una taula (objecte del tipus FacturaTaula) a la qual s’han assegut el nombre de persones indicat, que han demanat en total el nombre de primers plats, segons plats i postres indicats i a la qual la factura de les consumicions ha estat facturacio (float).

Atribut

facturacio

Indica el total facturat a la taula

Mètode

despesa_mitjana_persona()

Retorna la despesa mitjana per persona de la taula.

Exemples de funcionament de la classe:


>>> t1 = FacturaTaula(6, 5, 6, 2, 123.65)
>>> t1.pax
6
>>> t1.facturacio
123.65
>>> t1['primer']
5
>>> t1['segon']
6
>>> t1['postres']
2
>>> round(t1.despesa_mitjana_persona(), 2)
20.61

Disposeu dels jocs de proves al fitxer test-despesamitjana.txt.