Так как вы написали
может иметь только одну [опечатку, исправленную мной] TeacherRoom .
вам нужно добавить кратность 1
справа от ассоциации (и, как прокомментировано и ответили, удалить алмаз). Кроме того, вместо атрибута в School
следует использовать имя роли teacherRoom
в ассоциации и сделать его принадлежащим свойством, добавив точку.
![enter image description here](https://i.stack.imgur.com/YNc8l.png)
Некоторые дополнительные замечания к композиции: Композиция - это (мое личное впечатление) нечто, что вызывает больше путаницы, чем на самом деле помогает строить модели (просто ищите вопросы, задавая вопросы о ее семантике и / или обращайте внимание на ее неправильное использование). Еще хуже совместная агрегация, которая вызывала (и вызывает) еще большую путаницу. Теперь, после многих выпусков, UML 2.5 определяет эту пустую вещь как нечто: ничего. Просто прочитайте коробку на стр. 110. Итак, вернемся к заполненной совокупной совокупности. В основном речь идет о времени жизни объектов, так что есть ли владелец объекта, который отвечает за его время жизни. Когда вы делаете автомобиль, состоящий из его колес, это, очевидно, неправильно, поскольку колесо будет жить, не будучи прикрепленным к автомобилю. Только машина больше не машина. Но это будет выражаться путем присоединения кратности 4 к колесу. Любая машина с не совсем четырьмя колесами больше не является машиной. Нет композиции вообще.
Так где же тогда использовать составную агрегацию? Я имею в виду только 2 приложения. Один для хранения менеджера. Что-то, что было важно в первые дни вычислений, когда такие динозавры, как я, боролись вместе с жесткими дисками размером с буфет, которые имели 20 мегабайт! Только несколько пограничных случаев все еще нуждаются в указании для управления памятью. Вторым случаем будет безопасность. Указание, что что-то должно быть удалено вместе с его родителем. И это все еще в силе. Но тогда это единственное реальное приложение для составной агрегации.