Ho un World
class World:
def __init__(self):
self.size = 10
self.n_busStops = 10
self.busStopMatrix = SpatialGraph(self.size, self.n_busStops, 1.0)
self.buses = [Bus([0,1,2,3,4,5,6,7,8,9])]
Ora ciascuno degli autobus si muoverà in tutto il mondo, lasciandosi cadere e raccogliendo passeggeri.
Il bus contiene informazioni sul suo percorso. Quando arriva alla sua prossima fermata, ha bisogno di interrogare il busStopMatrix
per scoprire quanti passeggeri ci sono, e quanto è lontana la prossima fermata sul suo percorso.
È una buona idea che un oggetto interroghi il genitore in questo modo? In tal caso, come si chiama questo modello di progettazione?
Qualcosa come:
class World:
def __init__(self):
self.size = 10
self.n_busStops = 10
self.busStopMatrix = SpatialGraph(self.size, self.n_busStops, 1.0)
self.buses = [Bus([0,1,2,3,4,5,6,7,8,9], owner =self)]
class Bus:
def __init__(self, route, parent):
self.route = route
self.currentStop = route[0]
self.parent = parent
def move(self):
ifAtDestination():
pickUpPassengers(self.parent.getPassengersAtStop(currentStop))
Altrimenti non riesco a pensare a come Bus
possa ottenere informazioni sul mondo in cui si trova. L'alternativa che posso pensare è che il percorso è costituito da riferimenti direttamente alle BusStops, quindi può interrogarli direttamente .
ad es.
class World:
def __init__(self):
self.size = 10
self.n_busStops = 10
self.busStopMatrix = SpatialGraph(self.size, self.n_busStops, 1.0)
self.buses = [Bus([busStopmatrix.getAllStops()])]
class Bus:
def __init__(self, route):
self.route = route
self.currentStop = route[0]
def move(self):
ifAtDestination():
pickUpPassengers(currentBusStop)