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
platque s’han demanat a la taula. El valorplatpot 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 estatfacturacio(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.