2016-03-30 9 views
1

Я смущен о мощности/множественности при проектировании диаграмм классов. Мое основное недоумение - когда представлять 1 --- * отношения. Например, в случае классов пассажиров и мест пассажир будет отведен на одно место, где, поскольку сиденье может быть отведено одному пассажиру в течение часа, но в течение срока его существования он может быть выделен для многих пассажиров.Уточнение OOAD по множественности или мощности

Так должно ли место ---> пассажира быть 1-1 или 1- *?

ответ

1

Давайте подведем итог:

  • В один определенный момент времени:
    • каждый Passenger будет выделено ровно один Seat (1). Открытый вопрос: существует ли Passenger до распределения (то есть 1 или 0..1)?
    • каждый Seat может иметь один выделяется Passenger но он может оставаться пустым (так 0..1)
  • За их жизни:
    • каждый Passenger может быть выделено много мест (по одному на каждый рейс)
    • каждый Seat мог иметь много Passenger выделено.

Выводы: отношение между Seat и Passenger является *-* (многие ко многим)

+0

Спасибо, Честер. Когда мы должны учитывать это в течение определенного периода времени или одновременно? Это вопрос к клиенту, как будто я должен спросить их, что вы ищете в течение определенного периода времени или в определенный момент времени? или это всегда должно быть для каждого дизайна u учесть в течение определенного периода времени? – avatar

+0

Это зависит от потребностей вашего клиента. Поэтому вы должны задать ему/ее вопросы, которые помогут вам прояснить ситуацию. Не пытайтесь задавать вопросы под разными углами. Например: хочет ли он найти историю распределения мест? он/она ожидает, что места могут быть выделены заранее (пассажир может затем зарезервировать места для нескольких поездок)? существуют ли юридические требования (найти места в случае расследования правоохранительных органов)? и так далее ... Реальная жизнь полна многих-многих отношений – Christophe

+0

Спасибо Кристофер – avatar

-1

Все зависит от того, что вы модель.

  • Если мы моделируя номер за одну поездку будет место 1 --- 0..1
    Passenger.
  • Если мы моделируем бронирование за поездку и имеем только количество мест на каждый класс (но определенное место не назначено), он может быть SeatClass 1 --- 0..SeatClass.availableSeats Passenger.
  • Если мы моделируем систему для анализа поведения пассажиров (например, , чтобы предложить лучшее место для конкретного пассажира), это будет Пассажир 1 <> --- * Место.
  • Если мы моделируем систему для анализа использования сиденья, она может быть местом 1 <> --- * Пассажир.

т.д.

Я могу представить себе много других возможностей.

Идея заключается в том, что вы моделируете определенную систему, и вам нужно представлять конкретные потребности бизнеса. От этого зависит многократность. Как правило, вас интересует ситуация в определенный момент времени (обратите внимание, что в моих двух последних примерах вы обрабатываете историю назначений мест в определенный момент времени).

Итак, мой вывод: простого ответа нет.