Les classe Avio i derivades¶
La classe Avio¶
La classe Avio, especificada a continuació, està
implementada al fitxer avio.py. Representa
avions amb un cert nombre de files i sis seients per fila (lletres 'A'
a 'F'). Cada seient està identificat pel seu número de fila (un enter
entre 0 i el nombre de files totals de l’avió -1) i una lletra entre
'A' i 'F'.
- class avio.Avio(identificador, nf)¶
Atributs
Aquesta classe suporta les operacions següents:
Operació
Resultat
a[ifil, icol]Retorna el nom de la persona que ocupa el seient de la fila ifil i columna icol de a, amb \(0 \leq ifil \lt len(a)\) i \('A' \leq icol \leq 'F'\). Retorna
'Lliure'si ningú ocupa el seienta[ifil, icol] = nomAssigna nom al seient de la fila ifil i columna icol de a, amb \(0 \leq ifil \lt len(a)\) i \('A'\leq icol \leq 'F'\)
Aquesta classe suporta la funció
len()que retorna el nombre de files de l’avió.Proveu d’utilitzar aquesta classe. Disposeu de doctests per a inspirar-vos a
tests-avio.txt. Mireu la implementació i observeu que la classe té un atribut privat per emmagatzemar els seients que és una llista de diccionaris. Vegeu com els mètodes__setitem__()i__getitem__()tenen un sol paràmetre per indicar la posició del seient, però aquest és una tupla formada per uninti unstr.
Classe AvioRes¶
En el fitxer aviores.py, implementeu una nova classe, anomenada AvioRes que hereta de la classe avio.Avio i li afegeix un nou mètode.
- class aviores.AvioRes(identificador, nfil)¶
Hereta de la classe
avio.Avioi té el mètode addicional següent:Mètodes
- seients_lliures()¶
Retorna el nombre de seients lliures de l’avió
Disposeu de tests a tests-aviores.txt.
Classe AvioCat¶
En el fitxer aviocat.py, implementeu la classe AvioCat que hereta de la classe aviores.AvioRes i que representa avions amb dues categories de seients: els de primera i els de segona. Els seients de primera sempre ocupen les primeres files de l’avió i els de segona, les files següents. La classe AvioCat ha de tenir un nou atribut
nfilprim que indica el nombre de files de primera categoria. Vegeu-ne l’especificació:
- class aviocat.AvioCat(identificador, nfil, nfilprimera)¶
Hereta de la classe
aviores.AvioResi té un atribut i un mètode addicional i una nova implementació del mètodeseients_lliures().Atributs
- nfilprim¶
Nombre de files reservades per a primera categoria (
int). S’inicialitza amb el valor del paràmetre nfilprimera.
Mètodes
- seients_categoria(cat)¶
Retorna el nombre de seients de la categoria cat (el valor de cat és 1 per primera i 2 per segona).
- seients_lliures()¶
Sobreescriu el mètode corresponent de la classe base per retornar una tupla formada pel nombre de seients lliures de primera i segona categoria.
Disposeu de tests a tests-aviocat.txt.
Classe AvioIter¶
En el fitxer avioiter.py, implementeu la classe AvioIter.
- class avioiter.AvioIter(identificador, nfil)¶
Hereta de la classe
avio.Avioi suporta la funcióiter()que permet iterar sobre els noms de les persones que ocupen el seus seients, en ordre fila i columna.
Disposeu de tests a tests-avioiter.txt.
Disposeu de solucions a aviores.py, aviocat.py i avioiter.py.