3. Classe RoboPark (3 punts)

Amb l’arribada de les noves tecnologies, els propietaris de l’empresa han apostat pels pàrquings intel·ligents, en els quals els clients deixen el cotxe a l’entrada del pàrquing, el sistema robotitzat l’aparca automàticament i els dona un tiquet. A l’hora de recollir el cotxe, els clients només han d’entregar el tiquet, pagar i esperar que el cotxe aparegui novament a la porta. El pàrquing també disposa d’un servei web on els clients poden consultar l’adreça del pàrquing, des de quina hora hi és aparcat, el preu de l’aparcament, etc.

Es demana que implementeu la classe RoboPark, la qual es deriva per herència de Parking tal com s’especifica a continuació. Deseu-la al mòdul roboparks (fitxer roboparks.py).

class roboparks.RoboPark(adr, n)

Crea un pàrquing amb l’adreça adr i amb n places, inicialment totes lliures.

Nou atribut:

adr

Adreça del pàrquing (str)

Mètodes:

aparca(m, t)

Enregistra que el cotxe amb matrícula m ha entrat al pàrquing a l’instant t. En cridar aquest mètode, se suposa que el pàrquing disposa d’alguna plaça lliure. El cotxe queda aparcat a la primera plaça disponible (la d’índex més baix).

desaparca(m)

Enregistra que el cotxe de matrícula m ha abandonat el pàrquing. Si la matrícula donada no és al parquing, no fa res.

Exemples d’ús:


>>> from roboparks import RoboPark
>>> from datetime import datetime
>>> p = RoboPark('Diagonal 547', 6)
>>> p.adr
'Diagonal 547'
>>> p.matricules
['', '', '', '', '', '']
>>> p.arribades
[None, None, None, None, None, None]
>>> len(p)
6
>>> p.aparca('9876-MKF', datetime(2025, 5, 11, hour=10, minute=0))
>>> p.aparca('1234-ABC', datetime(2025, 5, 11, hour=10, minute=20))
>>> p.matricules
['9876-MKF', '1234-ABC', '', '', '', '']
>>> list(map(str, p.arribades))
['2025-05-11 10:00:00', '2025-05-11 10:20:00', 'None', 'None', 'None', 'None']
>>> p.ocupacio()
(2, 4)
>>> p.desaparca('1234-ABC')
>>> p.ocupacio()
(1, 5)
>>> p.matricules
['9876-MKF', '', '', '', '', '']
>>> list(map(str, p.arribades))
['2025-05-11 10:00:00', 'None', 'None', 'None', 'None', 'None']
>>> p.aparca('2126-RRR', datetime(2025, 5, 12, hour=12, minute=12))
>>> p.aparca('B-1578-TL', datetime(2025, 5, 16, hour= 7, minute=34))
>>> p.desaparca('2126-RRR')
>>> p.desaparca('1312-ETS')
>>> p.matricules
['9876-MKF', '', 'B-1578-TL', '', '', '']
>>> list(map(str, p.arribades))
['2025-05-11 10:00:00', 'None', '2025-05-16 07:34:00', 'None', 'None', 'None']

Disposeu de jocs de prova al fitxer tests-robopark.txt