Pergunta

Estou trabalhando no exemplo do estacionamento e fiz algumas suposições ao projetar.

Tenho algumas dúvidas sobre a atribuição de atributos a itens/objetos.

1) Se o parkingSpace não for atribuído por um sistema, ou seja, o usuário acabou de entrar no Lote, encontra um local apropriado (carro/bicicleta/caminhão/deficiente) e estaciona seu carro.

Acho que não preciso de um objeto ParkingSpace, mas, em vez disso, posso manter uma contagem de no_of_free_places para cada categoria_of_parking_space.

Como o espaço para estacionamento é grande, mantemos apenas três variáveis.

  • no_of_free_slots_Car
  • no_of_free_slots_Bike
  • no_free_slots_Truck
  • no_free_slots_Handicaped

quando um veículo entra, apenas diminuímos um dos valores acima (ou seja, dos X lugares disponíveis, o usuário escolhe um e estaciona lá), e quando o veículo sai, aumentamos o valor correspondente.(resumindo, o estacionamento não é atribuído por ninguém, o veículo apenas vai para um dos locais elegíveis e estaciona lá)

2) Supondo que tenhamos um único parquímetro global.
-> O start_time/end_time deve ser um atributo do Veículo?
Ou
-> veículo_id, start_time, end_time fazem parte do ParkingMeter.

3) Assumindo a necessidade do objeto parkingSpace, 4_wheeler, 2_wheeler, handicapped deve ser um tipo enum ou uma classe totalmente separada.
Se for enum, podemos usar findEmptySlot(parkingSpace_type);
Se eles são classes completamente separadas, e ParkingLot tem um método findEmptySlot();
Como podemos obter o Slot apropriado?

O ParkingMeter será responsável por definir os horários de início e término do veículo, certo?

Se tiver vários valores, 1h - 20$, 2h - 30$, 3h - 40$, 5h - 50$
é bom ter isso como parte da classe ParkingMeter ou incluí-los em uma classe separada "ParkingPrice"

Foi útil?

Solução

OK,

  1. Eu realmente não entendi a pergunta, mas de fato usaria um array ParkingSpace objetos para descrever os espaços do parque.
  2. Como o tempo é por veículo, o tempo deve ser definido no veículo.
  3. Eu usaria uma classe diferente para cada um, e cada um deveria estender a classe abstrata Vehicle.Permite flexibilidade com atributos comuns e únicos de cada tipo de veículo (número de série para todos os veículos, mas apenas veículos de quatro rodas têm portas, por exemplo).Quanto a como encontrar vagas de estacionamento vazias, cada ParkingSpace objeto teria um $takenBy propriedade, que conteria uma instância do objeto veículo que a ocupa.O padrão deve ser null, então, você simplesmente itera pela matriz de espaços em seu ParkingLot classe e encontre aquele com $space->takenBy == null.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top