Classe Tren¶
Implementació de la classe Tren¶
La classe Tren, especificada a continuació, permet de representar un tren format per vagons que són instàncies de la classe vagons.Vago.
- class trens.Tren(nom)¶
Crea un tren amb el nom donat i sense cap vagó.
Atributs:
Mètodes
- afegir_vago(vago)¶
Afegeix un vagó al final del tren.
- capacitat()¶
Retorna la capacitat total del tren, comptant persones assegudes i dretes.
Aquesta classe ha de suportar les operacions següents:
Operació
Resultat
t[i]Retorna el i-èssim vagó del tren t. Es compleix que \(0 \leq i<len(p)\)
len(t)
Retorna el nombre de vogons del tren t.
Aquesta classe ha de suportar la funció
strque retorna l’expressió “Tren nom de n vagons”` on nom és el nom del tren i n el seu nombre de vagons.
Els vagons estan indexats de tal manera que el primer vagó té l’índex 0, el segon l’índex 1 i així successivament. Quan s’afegeix un vagó al tren, l’índex del vagó afegit serà el nombre de vagons -1, és a dir, anirà al final del tren.
Implementeu la classe
Treni deseu-la al fitxertrens.py. Per a fer-ho, tingueu en compte que serà necessari un atribut privat per a emmagatzemar els vagons.Es recomana que sigui una llista de vagons.
Per provar i passar els doctests, deseu el fitxer que conté la implementació de la classe Vago en el directori de treball. Disposeu d’un fitxer amb un joc de proves al fitxer tests-tren.txt.
Ús de la classe Tren¶
La classe
Trenés una classse contenidora de vagons. Doncs, seria desitjable poder iterar sobre els vagons d’un tren, és a dir, que la classe fos iterable. En una shell de Python, proveu d’executar el següent codi:>>> from trens import Tren >>> from vagons import Vago >>> t = Tren('Intercity 2000') >>> t.afegir_vago(Vago('V1', 30, 70)) >>> t.afegir_vago(Vago('V2', 40, 50)) >>> t.afegir_vago(Vago('V3', 35, 60)) >>> for v in t: ... print(v)
Funciona correctament? Per què?
En el fitxer
usa_tren.py, implementeu les funcions següents:- usa_tren.mes_capacitat(tren1, tren2)¶
- Paràmetres:
tren1 – una instància de la classe
Trentren2 – una instància de la classe
Tren
- Retorna:
el tren de més capacitat dels dos donats (
Tren).
Disposeu d’un joc de prova al fitxer tests-usa.txt.
Nota
Disposeu de solucions als fitxers trens.py. i usa_tren.py.