картинаДиаграмма классовКогда дело доходит до выяснения отношений между классами и классами, это ключ. Отношение класса включает Обобщение, Реализация, Зависимость и Ассоциация. Ассоциация далее подразделяется на общую ассоциативную связь, агрегацию (Aggregation) и композицию (Composition). Ниже мы объединяем примеры, чтобы понять эти отношения.
Базовые концепты
Диаграмма классов: Диаграмма классов является наиболее часто используемой и важной диаграммой в моделировании объектно-ориентированных систем и является основой для определения других диаграмм. Диаграмма классов в основном используется для отображения статической модели классов, интерфейсов и статических структур и отношений между ними в системе.
Диаграмма классов состоит из трех основных компонентов: имя класса, свойство и метод.
Обобщение: представляет отношение «есть-а», то есть отношение с наибольшей степенью связи между объектами, и подкласс наследует все детали родительского класса. Используйте выражения наследования непосредственно в языке. На диаграмме классов используется сплошная линия с треугольной стрелкой, а стрелка указывает от подкласса к надклассу.
Реализация: на диаграмме классов это отношение между интерфейсом и реализацией. Об этом нечего говорить. Диаграмма классов представлена пунктирной линией с треугольной стрелкой от реализующего класса к интерфейсу.
Зависимость: самая слабая форма связи между объектами — временная ассоциация. Код обычно относится к отношениям вызова к другим объектам, установленным локальными переменными, параметрами функций и возвращаемыми значениями. Класс вызывает определенные методы в зависимом классе для выполнения некоторых обязанностей класса. Диаграмма классов представлена пунктирной линией со стрелкой, указывающей от потребляющего класса к зависимому классу.
Ассоциация: эталонная связь между объектами, например, связь между классом клиентов и классом заказа. Это отношение обычно выражается с использованием атрибутов класса. Ассоциации далее делятся на общие ассоциации, агрегированные ассоциации и комбинированные ассоциации. Последние два будут проанализированы позже. Диаграмма классов представлена сплошной линией со стрелкой, указывающей от использующего класса к связанному классу. Может быть однонаправленным и двунаправленным.
Агрегация: представляет отношение «есть-а», которое является нестабильным отношением включения. Сильнее общего соотношения существует связь между целым и частью, и без целого часть может существовать одна. Например, в отношениях между компанией и ее сотрудниками компания включает сотрудников, но если компания обанкротится, сотрудники все равно могут сменить компанию. Диаграмма классов представлена полым ромбом, который указывает от части к целому.
Композиция: Представляет отношение contains-a, которое является сильным отношением вмещения. Составляющий класс отвечает за жизненный цикл составных классов. является более сильной агрегационной связью. Часть не может существовать отдельно от целого. Такие как отношения между компанией и отделом, без компании отдел не может существовать; отношения между вопросами и вариантами в анкете; отношения между заказами и вариантами заказов. На диаграммах классов используются сплошные ромбы, а ромбы указывают от части к целому.
Множественность: обычно используется в ассоциации, агрегации, композиции. Он представляет, сколько существует связанных объектов. Используйте цифры.. звездочки (цифры). Как показано на рисунке ниже, уведомление о переключении может быть связано с от 0 до N заявок на устранение неполадок.
Разница между агрегацией и композицией
Эти два более трудны для понимания, поэтому давайте сосредоточимся на них. Разница между агрегацией и комбинацией заключается в том, что: отношение агрегации — это отношение «имеет», а отношение комбинирования — это отношение «содержит-а»; отношение агрегации указывает на то, что связь между целым и его частями относительно слаба. , в то время как комбинация относительно сильна, отношения агрегации представляют некоторые вещи.Объекты не имеют ничего общего со временем жизни объекта, представляющего агрегированную вещь, после удаления агрегированного объекта объект, представляющий часть вещи, не обязательно удаляется. Как только объект композиции удаляется из композиции, объект, представляющий часть вещи, также удаляется.
Анализ случая
Клиенты Unicom реагируют на OSS. Система имеет функциональные модули, такие как запись о неисправности, активация службы, проверка ресурсов, переключение, повторное обеспечение обслуживания и показатели качества сети. Теперь мы извлекаем некоторые требования в качестве примеров для объяснения.
Вы можете обратиться к диаграмме классов для лучшего понимания.
1. Уведомления делятся на общие уведомления, уведомления о переключении и уведомления о восстановлении. Это отношения наследования.
2. NoticeService и класс реализации NoticeServiceImpl являются отношением реализации.
3. NoticeServiceImpl ссылается на уведомление через параметры метода сохранения, который является зависимостью. При этом вызывается функция завершения BaseDao, которая также является зависимостью.
4. Уведомление о переключении и заявка на неисправность связаны через промежуточный класс (цепь уведомления), который является общей ассоциацией.
5. Между уведомлением о восстановлении и библиотекой планов существует агрегирующая связь. Поскольку библиотеку планов можно ввести заранее, она не имеет обязательной связи с уведомлением о перестраховании и может существовать независимо. В системе он выбирается вручную из списка. Удаление уведомления о перестраховании не влияет на план.
6. Между уведомлением о переключении и заказом на спрос существует отношение агрегации. Точно так же список требований может существовать независимо от уведомления о переключении. То есть удаление уведомления о переключении не влияет на список требований.
7. Уведомления и ответы представляют собой композиционные отношения. Потому что ответы не могут существовать независимо от уведомлений. То есть, если уведомление удаляется, ответы, соответствующие этому уведомлению, также удаляются каскадом.
После приведенного выше анализа я считаю, что все лучше понимают отношения между классами. Есть ли у вас какие-либо другие идеи или хорошие идеи, добро пожаловать в Paizhuan.
PS: Все то же предложение: вышеприведенная диаграмма классов нарисована с помощью Enterprise Architect 7.5 Я рекомендую здесь EA, это очень хорошо. Может заменить Visio и Rose. Visio недостаточно мощный, а Rose слишком тяжелый. Только ЕА больше подходит.