Domanda

Sto lavorando sull'esempio del parcheggio e ho fatto alcune ipotesi mentre progettavo.

Ho un paio di domande nell'assegnazione degli attributi agli oggetti/oggetti.

1) Se parkingSpace non è assegnato da un sistema, vale a dire, l'utente solo nel lotto, trova un posto appropriato (auto/bici/camion/portatori di handicap) e parcheggia la sua auto.

Penso di non aver bisogno di un oggetto ParkingSpace, ma invece, posso mantenere un conteggio di no_of_free_places per ciascuno dei category_of_parking_space.

Poiché lo spazio di parcheggio è grande, manteniamo solo tre variabili.

  • no_of_free_slots_Car
  • no_of_free_slots_Bike
  • no_free_slots_Truck
  • no_free_slots_Handicapped

quando un veicolo entra, diminuiamo solo uno dei valori di cui sopra (il che significa che degli X posti disponibili, l'utente ne sceglie uno e parcheggia lì), e quando i veicoli escono, aumentiamo il valore corrispondente.(in breve, il parcheggio non è assegnato da nessuno, il veicolo va solo in uno dei luoghi e parchi idonei lì)

2) Supponendo che abbiamo un unico misuratore di parcheggio globale.
-- >start_time / end_time dovrebbe essere un attributo del Veicolo?
O
-- >vehicle_id, start_time, end_time essere parte di ParkingMeter.

3) Supponendo la necessità di oggetto parkingSpace, dovrebbe 4_wheeler, 2_wheeler, handicapped essere un tipo enum o una classe separata del tutto.
Se il suo enum, possiamo usare findEmptySlot (parkingSpace_type);
Se sono una classe separata del tutto, e ParkingLot ha un metodo findEmptySlot();
Come possiamo ottenere lo slot appropriato?

ParkingMeter sarà responsabile di impostare l'inizio del veicolo, i tempi di fine giusto?

Se il ha più importi, 1hr-20$, 2hr-30,, 3hr-40,, 5hr-50$
è buono avere questi parte della classe ParkingMeter o, includerli in una classe separata "ParkingPrice"

È stato utile?

Soluzione

Okay,

  1. Non ho davvero capito la domanda, ma in effetti userei un array ParkingSpace oggetti per descrivere gli spazi del parco.
  2. Poiché l'ora è per veicolo, l'ora dovrebbe essere impostata sul veicolo.
  3. Userei una classe diversa per ciascuno, e ognuno dovrebbe estendere la classe astratta Vehicle.Consente flessibilità con attributi comuni e unici di ogni tipo di veicolo (numero di serie per tutti i veicoli, ma solo 4_wheelers hanno porte per esempio).Per quanto riguarda come trovare posti auto vuoti, ciascuno ParkingSpace l'oggetto avrebbe un $takenBy proprietà, che conterrebbe un'istanza dell'oggetto veicolo lo occupa.Dovrebbe default a null, quindi, semplicemente scorrere l'array di spazi nel tuo ParkingLot classe, e trovare quello con $space->takenBy == null.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top