Вопрос о диаграммах классов UML библиотеки - PullRequest
1 голос
/ 05 марта 2020

Вот простой вопрос о домашней работе моего урока UML, и я не уверен в том, что я сделал. Не могли бы вы помочь мне исправить это, я буду очень благодарен за ваши советы:

Упражнение заключается в разработке структуры классов для библиотечной системы. Он должен соответствовать этим требованиям:

  1. Существует два типа пользователей - несовершеннолетние и взрослые.
  2. Несовершеннолетние пользователи идентифицируются по использованию их полного имени и студенческого билета.
  3. Взрослые пользователи идентифицируются по их полному имени и идентификационной карточке.
  4. Библиотека содержит книги.
  5. Для каждой книги имеется базовая c информация (название, автор и т. д. c).
  6. Пользователь может брать не более 4 книг одновременно.
  7. Для каждого пользователя существует история ранее заимствованных книг (вместе со всеми датами )

Вот диаграмма UML, которую я сделал:

enter image description here

1 Ответ

0 голосов
/ 05 марта 2020

На первый взгляд, схема соответствует описательной части с некоторыми комментариями:

  • Класс Borrow можно назвать Borrowed или History; наличие двух borrow на одной диаграмме для разных целей является источником путаницы
  • Для этого класса потребуются все даты: начало заимствования и возврат в случае заимствования.
  • Ассоциация borrow показывает, что в данный момент заимствовано не более 4 книг. Но минимум должен быть 0 (ни один пользователь библиотеки не обязан всегда иметь книгу). Взаимно не все книги заимствованы в определенный момент времени, поэтому это будет 0..1

Теперь на диаграмме возникает вопрос:

  • делает книгу, которая В настоящее время заимствованные уже появляются в истории с пустой датой возврата?
  • Если нет, как мы отслеживаем дату начала заимствования.

Я не пошел на ваш курс, поэтому не знаю, чего ожидает учитель. Но вот как я смоделировал это:

  • Я использовал много-много borrow ассоциаций с классом ассоциации
  • историческая информация была бы в классе ассоциации
  • ограничение максимум четырех заимствованных книг будет выражено с ограничением.

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

По этой причине я бы предложил использовать композиция вместо наследования : сделать user полным классом, составить с Identification и сделать два конкретных класса adultIdentification, underageIdentificztion. Поэтому, когда несовершеннолетний пользователь становится взрослым, вы сохраняете историю пользователя и меняете только средства идентификации: -)

...