На первый взгляд, схема соответствует описательной части с некоторыми комментариями:
- Класс
Borrow
можно назвать Borrowed
или History
; наличие двух borrow
на одной диаграмме для разных целей является источником путаницы - Для этого класса потребуются все даты: начало заимствования и возврат в случае заимствования.
- Ассоциация
borrow
показывает, что в данный момент заимствовано не более 4 книг. Но минимум должен быть 0 (ни один пользователь библиотеки не обязан всегда иметь книгу). Взаимно не все книги заимствованы в определенный момент времени, поэтому это будет 0..1
Теперь на диаграмме возникает вопрос:
- делает книгу, которая В настоящее время заимствованные уже появляются в истории с пустой датой возврата?
- Если нет, как мы отслеживаем дату начала заимствования.
Я не пошел на ваш курс, поэтому не знаю, чего ожидает учитель. Но вот как я смоделировал это:
- Я использовал много-много
borrow
ассоциаций с классом ассоциации - историческая информация была бы в классе ассоциации
- ограничение максимум четырех заимствованных книг будет выражено с ограничением.
Еще одна проблема включена в повествование: что происходит, когда несовершеннолетний пользователь становится взрослым? Ваше отношение к реализации подразумевает, что два разных пользователя будут существовать для одного и того же человека (новый взрослый потеряет историю).
По этой причине я бы предложил использовать композиция вместо наследования : сделать user
полным классом, составить с Identification
и сделать два конкретных класса adultIdentification
, underageIdentificztion
. Поэтому, когда несовершеннолетний пользователь становится взрослым, вы сохраняете историю пользователя и меняете только средства идентификации: -)