Учет времени при множественности классов

Учет времени при множественности классов
Учет времени при множественности классов

На следующем рисунке изображен магазин компакт-дисков, который сдает в аренду свои музыкальные диски.

Мой вопрос касается правильной кратности X. Я могу предложить несколько вариантов для X:

  1. X= 1...1, так как каждый экземпляр CD может быть арендован только одним участником в одно время. Предполагается, что все копии будут арендованы в какой-то момент времени.
  2. X= 0...1, так как каждый экземпляр CD может быть арендован только одним участником в одно время. Возможно, некоторые компакт-диски никогда не берутся напрокат.
  3. X= 0..N, так как каждый экземпляр CD может быть взят напрокат любым членом клуба в течение всего срока жизни CD в магазине (но это не должно быть одновременно).

Не могли бы вы прояснить для меня этот момент?

Множественности представляют количество возможных связей между экземплярами связанных классов, т. е. в любой заданный момент времени.

  1. 1..1 здесь крайне маловероятно, поскольку это означало бы, что каждый CD сдается в любой момент времени ровно одному Member. Для этого потребовалось бы, чтобы на каждый компакт-диск, возвращенный в магазин, сразу же находился еще один покупатель, готовый немедленно взять его напрокат.

  2. 0..1 — очень разумный подход, если ваш дизайн намерен показать текущую ситуацию с компакт-диском без истории: в любой момент времени компакт-диск либо арендован участником, либо нет, но тот же компакт-диск больше не будет привязан к участники, которые ранее арендовали его. Такой дизайн может иметь смысл во многих случаях. Но в арендном бизнесе это менее практично: иногда нужно найти клиента, который арендовал его, раньше курсера, который разговаривает по телефону, потому что понял, что куртка пуста.

  3. 0..* — тоже очень разумный подход, особенно если вы хотите отслеживать историю аренды. Однако в нем не говорится, что означают множественные члены. Таким образом, вы можете дополнить диаграмму ограничением, указывающим, что периоды аренды не могут перекрываться.


LetsCodeIt, 17 декабря 2022 г., 18:02

Похожие посты

Когда мне следует создавать базовый класс и подклассы, которые работают одинаково, а не один класс?Как определить, является ли дизайн диаграммы классов UML хорошим в JavaВзаимодействие объектов разных типов: полиморфизм и наследованиеИспользование синглтон класса Configuration в Python: противоречивость и альтернативные решенияМоделирование классов: ключевая роль наследования, контракты базового класса, десериализация POJO, инъекция зависимостейУлучшение удобства использования больших баз данных. Разделение на мелкие таблицы. Экспертные советыКак сохранить события в реляционной базе данных для запросов по времениИспользование csv-файла для обмена данных между системамиЗависимость кода от базы данных: изменения в коде или использование базы данных для хранения информации о цветеОтображение временных моделей на базу данных для системы бронирования фильмов с использованием Spring Framework и Spring Data JPA