2012-02-26 7 views
1

Я работаю на примере автостоянок и делал несколько предположений, когда я проектирую.Парковка, дизайн ООП - Пользовательский дизайн

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

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

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

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

  • no_of_free_slots_Car
  • no_of_free_slots_Bike
  • no_free_slots_Truck
  • no_free_slots_Handicapped

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

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

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

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

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

ответ

2

Хорошо,

  1. Я не очень понял вопрос, но я бы действительно использовать массив ParkingSpace объекты для описания пространства в парке.
  2. Поскольку время на транспортное средство, время должно быть установлено на транспортном средстве.
  3. Я бы использовал для каждого отдельный класс, и каждый должен расширять абстрактный класс Vehicle. Он обеспечивает гибкость с общими и уникальными атрибутами каждого типа транспортного средства (серийный номер для всех автомобилей, но только 4_wheelers имеют двери, например).Что касается того, как найти пустые парковочные места, каждый объект ParkingSpace будет иметь свойство $takenBy, в котором будет храниться экземпляр объекта транспортного средства. Он должен по умолчанию null, тогда вы просто перебираете массив пробелов в своем классе ParkingLot и находите тот, у которого есть $space->takenBy == null.
+0

Я отредактировал вопрос, добавив дополнительную информацию для первой части. 2-я и 3-я все в порядке. Пожалуйста, ознакомьтесь с 1-й частью. – sravanreddy001

+1

Итак, вы спрашиваете, нужно ли вам делать класс Space или просто уменьшать переменные. Я говорю, держите массив пробелов (или массив для каждого типа пространства). Это позволяет легко обнаруживать, в каком автомобиле находится автомобиль, и даже ссылка на фактический автомобиль, удерживающий пространство (согласно моему 3-му ответу). –

+0

Спасибо. Я добавил дополнительную запись в конец оригинального сообщения, можно ли посмотреть на это? – sravanreddy001

Смежные вопросы