Les classes Sala i Teatre¶
La classe Seient¶
La classe Seient representa el seient d’una sala
- class seient.Seient(lliure=True, tipus='PALADRETA')¶
Atributs:
- lliure¶
Booleà que indica l’estat del seient: lliure (
True) o no (False).
- tipus¶
String que indica el tipus de seient. Pot ser:
'PALADRETA','PALAESQUERRA'o'SENSEPALA', en funció de si té pala i a quin costat la té.
Mètodes:
- tePala()¶
Retorna un booleà indicant si el seient té pala (
True) o no (False).
- tePalaDreta()¶
Retorna un booleà indicant si el seient té pala dreta (
True) o no (False).
- estaLliure()¶
Retorna un booleà indicant si el seient està lliure (
True) o no (False).
- ocupa()¶
Canvia l’estat del seient a ocupat.
- allibera()¶
Canvia l’estat del seient a lliure.
- treuPala()¶
Canvia l’atribut tipus a
'SENSEPALA'
- posaPala(pala)¶
Canvia l’atribut tipus a pala, que pot ser
'PALADRETA'o'PALAESQUERRA'
La classe Seient també suporta la
funció str que retorna un string que representa un seient
que pot ser dels 6 tipus següents: 'PD-L', 'PE-L', 'SP-L',
'PD-O', 'PE-O', 'SP-O', on 'PD', 'PE' i 'PD'
signifiquen pala dreta, esquerra i sense pala respectivament i 'L'
significa seient lliure i 'O' ocupat.
Dissenyeu aquesta classe i guardeu-la al fitxer seient.py
Disposeu de jocs de proves al fitxer test-seients.txt.
La funció tipologia_seients¶
Al mateix fitxer seient.py, dissenyeu la funció
tipologia_seients() que, donada una llista de seients,
retorna tres enters indicant, respectivament, el nombre de seients amb
pala dreta, amb pala esquerra i sense pala de la llista.
Disposeu de tests al fitxer test-tipus.txt
La classe Sala¶
Dissenyeu la classe Sala que representa una sala amb un
nombre de files i un nombre de seients a cada fila (instàncies de la
classe Seient), que serà sempre el mateix. Tant la
numeració de les files com de les columnes comença per 1. La primera
fila és la més propera a l’escenari i el seient de més a l’esquerra és
el primer seient de cada fila. Deseu aquesta classe al fitxer
sala.py. L’especificació d’aquesta classe és la següent:
- class sala.Sala(nfiles=10, nseients=10)¶
Atributs públics:
- nfiles¶
Nombre de files
- nseients¶
Nombre de seients per cada fila (el mateix per totes)
Aquesta classe ha de suportar les operacions següents:
Operació
Resultat
s[pos]Retorna la instància de la classe
Seientque ocup la posició pos de la sala ss[pos] = cPosa una instància de la classe
Seient, c, a la posició pos de la sala s
La posició pos ha de ser una tupla (fila, seient) indicant el número de la fila i del seient dins la fila.
La classe Sala també suporta la funció str que
retorna un string que representa la sala amb el format següent: cada
seient es representa pel seu string corresponent i, a més, cada seient
està separat del seient contigu per un espai en blanc (” “) i entre
cada parell de files consecutives hi ha un salt de línia (”\n”).
Cal guardar la classe Sala en el fitxer sala.py.
Per dissenyar la classe Sala cal tenir
en compte el següent:
A part dels atributs públics, en cal un de privat, per guardar la informació de tots els seients de la sala. Aquest atribut pot ser una llista imbricada on cada subllista representa una fila.
Inicialment, a la sala totes les cadires estaran lliures i seran amb la pala a la dreta
Tingueu en compte que la posició de la fila i seient comença per 1 i en canvi la indexació en les llistes comença per 0.
Per a què la funció
strproporcioni la funcionalitat desitjada, haureu de dissenyar el mètode __str__. Observeu que aquest mètode ha estat implementat també en la classeSeienti que, per tant, podeu utilitzar la funcióstrper representar un seient.
Disposeu de jocs de proves al fitxer test-sala.txt.
Les funcions ocupa_seients i esquerrans¶
Al mòdul
sala.py, dissenyeu la funcióocupa_seients()que, donada una sala i una llista de posicions, modifica la sala de forma que aquestes posicions estiguin ocupades. Les posicions venen donades com tuples de la forma (fila, seient).Disposeu de tests al fitxer
test-ocupa.txtAl mòdul
sala.py, dissenyeu la funcióesquerrans()que, donats dos enters, nf i nc, retorna una sala amb nf files i nc seients a cada fila i on les cadires de més a l’esquerra de cada fila tinguin pala esquerra i la resta tinguin pala dreta. Les cadires han d’estar totes lliures.Disposeu de tests al fitxer
test-esquerrans.txt
Avís
Aneu amb compte al desar aquestes dues funcions al fitxer
sala.py, perquè són funcions del mòdul
sala, però no mètodes de la classe
Sala. Cal definir-les a nivell del mòdul i
no dins del bloc de la classe.
Avís
Heu d’implementar aquestes funcions usant exclusivament les
operacions de consulta (p[g]) i l’assignació (p[g] =
c). No heu d’usar atributs privats. També cal usar els mètodes de la classe
Seient.
La classe Teatre¶
Dissenyeu la classe Teatre que deriva de la classe
Sala i que com a particularitat té tots els seients sense
pala. Deseu aquesta classe en el fitxer teatre.py.
- class teatre.Teatre(nfiles=10, nseients=10)¶
Atributs públics i mètodes: els mateixos que la classe base
Per dissenyar aquesta classe només cal dissenyar el seu mètode __init__.
Disposeu de tests al fitxer test-teatre.txt.
Solucions
Disposeu de solucions als fitxers
seient.py,
sala.py i
teatre.py.