Автостоянка, дизайн ООП - Индивидуальный дизайн [закрыто]

StackOverflow https://stackoverflow.com/questions/9454102

  •  13-11-2019
  •  | 
  •  

Вопрос

Я работаю над примером парковки и сделал несколько предположений при проектировании.

У меня есть пара вопросов по присвоению атрибутов элементам/объектам.

1) Если парковочное место не назначено системой, т.е. пользователь просто заходит на стоянку, находит подходящее место (автомобиль/велосипед/ грузовик/для инвалидов) и паркует свой автомобиль.

Я думаю, что мне не нужен объект ParkingSpace, но вместо этого я могу вести подсчет no_of_free_places для каждого из category_of_parking_space.

Поскольку парковочное место большое, мы просто учитываем три переменные.

  • no_of_free_slots_Car нет_фри_слотов_кара
  • no_of_free_slots_Bike без_слотов
  • no_free_slots_Truck без свободных мест
  • no_free_slots_Handicapped нет_ свободных слотов_handicapped

когда въезжает транспортное средство, мы просто уменьшаем одно из приведенных выше значений (что означает, что из доступных X мест пользователь выбирает одно и паркуется там), а когда транспортное средство выезжает, мы увеличиваем соответствующее значение.(короче говоря, место для парковки никем не назначается, транспортное средство просто направляется в одно из подходящих мест и паркуется там)

2) Предположим, что у нас есть единый глобальный парковочный счетчик.
--> Должно ли start_time/end_time быть атрибутом транспортного средства?
Или
--> vehicle_id, start_time, end_time должны быть частью ParkingMeter.

3) Предполагая необходимость в объекте ParkingSpace, должны ли 4_wheeler, 2_wheeler, handicapped быть типом перечисления или вообще отдельным классом.
Если это перечисление, мы можем использовать findEmptySlot(parkingSpace_type);
Если они вообще являются отдельным классом, а ParkingLot имеет метод findEmptySlot();
Как мы можем получить соответствующий слот?

ParkingMeter будет отвечать за установку времени начала и окончания движения автомобиля, верно?

Если у вас несколько сумм, 1 час - 20$, 2 часа - 30$, 3 часа - 40$, 5 часов - 50$
хорошо ли иметь их частью класса ParkingMeter или включить их в отдельный класс "ParkingPrice"

Это было полезно?

Решение

Окей,

  1. Я действительно не понял вопроса, но я бы действительно использовал массив ParkingSpace объекты для описания пространств в парке.
  2. Поскольку время указано для каждого транспортного средства, оно должно быть установлено на транспортном средстве.
  3. Я бы использовал другой класс для каждого, и каждый должен расширять абстрактный класс Vehicle.Это обеспечивает гибкость при использовании общих и уникальных атрибутов каждого типа транспортного средства (серийный номер для всех транспортных средств, но, например, только у 4_wheelers есть двери).Что касается того, как найти свободные парковочные места, то каждый ParkingSpace объект имел бы $takenBy свойство, которое содержало бы экземпляр объекта vehicle, занимает его.По умолчанию должно быть установлено значение null, затем вы просто перебираете массив пробелов в вашем ParkingLot класс, и найдите тот, у которого $space->takenBy == null.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top