Слишком много ассоциаций, агрегатов или композиций в диаграмме классов?
Нам поручено создать систему, которая будет ежедневно регистрировать вход и выход студентов на территорию учреждения через студенческий билет, чтобы обеспечить безопасность студентов, и инструктор также может использовать эту систему в качестве посещаемости студентов.
Можете ли вы помочь мне, проверив, правильно ли это или требуется какое-либо улучшение?
1 ответ
Суммируя
Есть некоторые синтаксические проблемы с ассоциациями на вашей диаграмме.
Более того, ассоциации соответствуют структурным отношениям. Не создавайте ассоциации просто потому, что один класс в какой-то момент использует другой: для простого использования
Подробнее
Синтаксически эта диаграмма кажется правильной, за исключением надписи на ассоциации:
- Поскольку он находится в середине строки, мы предполагаем, что это имя ассоциации. Но название ассоциации не видно.
- Поскольку есть
(частная) видимость, мы понимаем, что это может быть роль конца ассоциации. Но тогда он должен располагаться на конце, а не посередине.
Семантически с точки зрения UML существуют некоторые подозрительные отношения:
- Двойной состав, вероятно, неверен: состав указывает на исключительное право собственности. На вашей диаграмме указано, что событие принадлежит либо администратору, либо учителю, но если оно принадлежит одному, другое не может быть связано с ним.
- Более того, композиция предполагает отношения «частично-целое», и я не вижу логина, позволяющего «стать частью» учителя или администратора.
- Агрегация не очень хорошо определена в UML и поэтому не добавляет ценности. Некоторые считают, что это предполагает частичную связь с неисключительной собственностью: в этом случае это было бы неправильно. Лучше избавься от этого.
- Имя
ассоциация сбивает с толку, поскольку соответствует операция. Можно подумать, что линия соответствует динамическому вызову операции, тогда как на самом деле ассоциация является структурной.
Но сложно сказать больше в отсутствие каких-либо требований или контекста анализа. Основываясь на моих знаниях в предметной области:
- Связь 1 к 1 между и
должно быть неправильно, так как может зарегистрировать 0 пользователей (новый администратор) или много пользователей - Есть логин, который, вероятно, используется для отслеживания входов студентов, но, похоже, ничто не отслеживает выходы.
- У каждого ученика есть только один учитель?
- Мне не ясно, являются ли все эти ассоциации структурными отношениями. Например, мы можем понять, что в определенный момент времени в транзакции учитель подтверждает логин. Но следует ли сохранять след этой проверки (т.е. ожидаете ли вы, что позже сможете узнать все логины, которые проверил учитель? Или найти для данного логина, какой учитель подтвердил его?).