2014-09-25 1 views
1

Во время учебы на собеседования этот вопрос пришел мне на ум. Я планирую создать парковку, и я принимаю следующие вещи:Объектно-ориентированный дизайн автостоянки

  1. Он имеет несколько уровней. Каждый уровень имеет 2 строки.
  2. Тип транспортного средства может быть небольшим, компактным и большим.
  3. Каждая строка на определенном уровне имеет несколько парковочных мест.
  4. Каждое место для парковки имеет красный/зеленый индикатор света (красный - нет места, зеленый - свободное пространство)
  5. Также каждое место для парковки будет иметь размер небольшой, компактный и большой.

6 (опционально). Также хочу добавить ситуацию с людьми с ограниченными возможностями.

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

Я думал о проектировании системы таким образом, чтобы как только Транспортное средство вошло в паркинг.

Он должен дать информацию о том, где ближайшая вакантным место доступно (для ПРИМЕР- Level 3, строка 2, Пятно # 10)

Я хотел бы знать, как идти о разработке такой системы? Я видел много других конструкций, но никто не достигает этого, я думаю.

+0

Я не понимаю, почему это было бы невозможно. Это ваш вопрос? Независимо от того, можно ли вычислить что-то на основе хранимых данных? Что вы на самом деле спрашиваете? – David

+0

Я хотел бы знать, как мы будем разрабатывать такую ​​систему. – user3681350

+0

Это довольно широко для вопроса о переполнении стека.Если вы попытаетесь спроектировать это и столкнуться с конкретной проблемой, мы будем рады помочь с этим. Но «как это реализовать?» вопросы обычно слишком широки. – David

ответ

2

Не уверен, чего вы хотите достичь через пункт 6, но остальное довольно просто достичь с помощью OO-дизайна, используя обычные принципы абстракции, наследования и полиморфизма.

Вы можете иметь interface называется AvailabilityIndicator, который имеет булев метод isAvailable(), который представляет собой световой индикатор (лампочка покажет красный цвет, если isAvailable() является false, и зеленый, если true).

У вас может быть abstract class под названием ParkingSlot, в котором используется AvailabilityIndicator. Это может иметь номер уровня, строки и пятна.

У вас может быть 3 класса LargeParkingSlot, CompactParkingSlot и SmallParkingSlot которые распространяются ParkingSlot. (Не то, чтобы ваша функциональность действительно нуждалась в этом, если только разные места для парковки не имеют разных моделей поведения или данных, которые вы хотите смоделировать, но, поскольку вы упомянули, что хотите использовать метод OO, я упомянул об этом, в противном случае может возникнуть простой параметр в ParkingSlot.)

Тогда возникает вопрос о том, когда прибывает автомобиль, проверяя, какой тип слота ему нужен, и посмотрите, какие из них соответствуют. Возможно, вы захотите разместить их в структуре данных Map, которая отображает каждый тип слота в список доступных, так что когда он будет снят, он будет удален и помещен в отдельный список unavailable, для быстрого поиска слотов available, когда автомобиль прибывает ,

+0

Это в значительной степени отвечает на вопрос. Спасибо. В пункте 6 я имел в виду, что мы также можем предоставить отдельные варианты парковки для людей с ограниченными возможностями (как это сделано во многих странах). – user3681350

+2

Да, но это зависит от того, что особенного. Будет ли это еще один другой слот из большого/компактного/небольшого (т. Е. Снова расширить «ParkingSlot»? Будет ли это отдельный атрибут большого/компактного/малого (т. Е. Вы могли бы отключить большие, отключенные компактные, отключенные небольшие)? в этом случае вам может понадобиться отдельный флаг в классе «ParkingSlot» и сохранение доступных отключенных в отдельной «карте», когда приходит инвалид, если все остальные будут приняты. У вас есть особое поведение этого слота, в этом случае вам может понадобиться другой шаблон дизайна OO? – jbx

+0

В идеале, что бы я сделал, это назначить определенные места для парковки (ближе к лифту на каждом уровне) в качестве назначенных инвалидов для парковки и когда инвалид запустит ту же процедуру (просто имея флаг и отдельную карту для запрещенных мест для парковки). Для обычных людей я бы удостоверился, что на моей карте есть все остальные слоты, которые не входят в число назначенных инвалидов для парковки. Звучит это хорошо? Просто обсуждать с вами. – user3681350

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

  • Нет связанных вопросов^_^