Диаграмма классов

редактировать
Иерархия диаграмм UML 2.5, показанная как диаграмма классов. Отдельные классы представлены только одним отсеком, но они часто содержат до трех отсеков.

В программной инженерии, диаграмма классов в унифицированном языке моделирования (UML) - это тип статической структурной диаграммы, которая описывает структуру системы, показывая системные классы, их атрибуты, операции (или методы) и отношения между объектами.

Диаграмма классов является основным строительным блоком объектно-ориентированного моделирования. Он используется для общего концептуального моделирования структуры приложения и для детального моделирования, транслирующего модели в программный код. Диаграммы классов также можно использовать для моделирования данных. Классы на диаграмме классов представляют как основные элементы, взаимодействия в приложении, так и классы, которые нужно запрограммировать.

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

  • Верхний отсек содержит имя класса. Он напечатан полужирным шрифтом и расположен по центру, а первая буква сделана с заглавной буквы.
  • Среднее отделение содержит атрибуты класса. Они выровнены по левому краю, а первая буква - в нижнем регистре.
  • Нижний отсек содержит операции, которые может выполнять класс. Они также выровнены по левому краю, а первая буква - в нижнем регистре.
Класс с тремя отделениями.

При разработке системы несколько классов идентифицируются и группируются вместе на диаграмме классов, которая помогает определить статические отношения между ними. При детальном моделировании классы концептуального проекта часто разделяются на несколько подклассов.

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

Содержание

  • 1 Члены
    • 1.1 Видимость
    • 1.2 Область действия
  • 2 Отношения
    • 2.1 Отношения на уровне экземпляра
      • 2.1.1 Зависимость
      • 2.1.2 Связь
      • 2.1.3 Агрегация
      • 2.1.4 Состав
      • 2.1.5 Различия между составом и агрегированием
    • 2.2 Отношения на уровне класса
      • 2.2.1 Обобщение / наследование
      • 2.2.2 Реализация / реализация
    • 2.3 Общие отношения
      • 2.3.1 Зависимость
    • 2.4 Множественность
  • 3 Стереотипы анализа
    • 3.1 Сущности
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки

Члены

UML предоставляет механизмы для представления членов класса, такие как атрибуты и методы, а также дополнительную информацию о них, например о конструкторах.

Видимость

Чтобы указать видимость члена класса (т. Е. Любого атрибута или метода), эти обозначения должны быть помещены перед именем члена:

+Public
-Private
#Защищенное
~Пакет

A производное свойство - это свойство, значение (или значения) которого создается или вычисляется из другой информации, например, с использованием значений других свойств.

Производное свойство отображается с именем, которому предшествует косая черта '/'.

Область действия

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

  • Элементы классификатора обычно распознаются как «статические» во многих языках программирования. Область видимости - это сам класс.
    • Значения атрибутов одинаковы для всех экземпляров
    • Вызов метода не влияет на состояние классификатора
  • Члены экземпляра ограничены определенным экземпляром.
    • Значения атрибутов могут различаться в зависимости от экземпляра
    • Вызов метода может повлиять на состояние экземпляра (т.е. изменить атрибуты экземпляра)

Чтобы указать область действия классификатора для члена, его имя должно быть подчеркнуто. В противном случае по умолчанию предполагается область экземпляра.

Отношения

Обозначение отношений UML

Отношения - это общий термин, охватывающий определенные типы логических связей, обнаруженных на диаграммах классов и объектов. UML определяет следующие отношения:

Отношения на уровне экземпляра

Зависимость

A зависимость - это семантическая связь между зависимыми и независимыми элементами модели. Он существует между двумя элементами, если изменения в определении одного элемента (сервера или цели) могут вызвать изменения в другом (клиент или источник). Эта ассоциация однонаправленная. Зависимость отображается в виде пунктирной линии с открытой стрелкой, указывающей от клиента к поставщику.

Ассоциация

Пример диаграммы классов ассоциации между двумя классами

ассоциация представляет семейство ссылок. Бинарная ассоциация (с двумя концами) обычно представлена ​​линией. Ассоциация может связывать любое количество классов. Ассоциация с тремя ссылками называется тройной ассоциацией. Ассоциации можно присвоить имя, а на ее концах можно указать имена ролей, индикаторы владения, множественность, видимость и другие свойства.. Существует четыре различных типа ассоциации: двунаправленная, однонаправленная, агрегация (включает агрегацию композиции) и рефлексивный. Двунаправленные и однонаправленные ассоциации являются наиболее распространенными.. Например, класс полета связан с классом самолета двунаправленно. Ассоциация представляет собой статическое отношение, разделяемое между объектами двух классов.

Агрегация

Диаграмма классов, показывающая агрегирование между двумя классами. Здесь у профессора есть класс для преподавания.

Агрегация - это вариант отношения ассоциации «имеет»; агрегация более специфична, чем ассоциация. Это ассоциация, которая представляет собой отношения частично-целого или частично. Как показано на изображении, у профессора «есть» класс для преподавания. Как тип ассоциации, агрегация может называться и иметь те же украшения, что и ассоциация. Однако агрегация не может включать более двух классов; это должна быть двоичная ассоциация. Более того, во время реализации практически нет разницы между агрегациями и ассоциациями, и диаграмма может полностью пропускать отношения агрегации.

Агрегация может происходить, когда класс является коллекцией или контейнером других классов, но содержащиеся классы не имеют сильную зависимость жизненного цикла от контейнера. Содержимое контейнера все еще существует, когда контейнер уничтожен.

В UML он графически представлен в виде полой формы ромба на содержащем классе с единственной линией, которая соединяет его с содержащимся классом. Агрегат семантически представляет собой расширенный объект, который во многих операциях рассматривается как единое целое, хотя физически он состоит из нескольких меньших объектов.

Пример: библиотека и студенты. Здесь студент может существовать без библиотеки, отношения между студентом и библиотекой - это совокупность.

Композиция

Две диаграммы классов. На диаграмме вверху показано сочетание двух классов: автомобиль имеет ровно один карбюратор, а карбюратор является частью одного автомобиля. Карбюраторы не могут существовать как отдельные части, оторванные от конкретного автомобиля. На диаграмме внизу показано агрегирование между двумя классами: у пруда ноль или более уток, а у утки не более одного пруда (за раз). Утка может существовать отдельно от пруда, например. он может жить возле озера. Когда мы уничтожаем пруд, мы обычно не убиваем всех уток.

UML-представление отношения композиции показывает композицию в виде закрашенной ромбовидной формы на конце содержащего класса строк, которые соединяют содержащийся класс (-ы) с содержащим классом.

Различия между составом и агрегированием

Отношение состава
1. При попытке представить отношения между целыми и частями в реальном мире, например двигатель является частью автомобиля.
2. Когда контейнер разрушается, его содержимое также уничтожается, например университет и его факультеты.
Отношения агрегирования
1. При представлении связи программного обеспечения или базы данных, например Двигатель модели автомобиля ENG01 является частью модели автомобиля CM01, поскольку двигатель ENG01 также может быть частью другой модели автомобиля.
2. Когда контейнер разрушается, содержимое обычно не уничтожается, например у профессора есть студенты; когда умирает профессор, студенты не умирают вместе с ними.

Таким образом, отношение агрегирования часто является «каталожным» сдерживанием, чтобы отличить его от «физического» содержания композиции.

Отношения на уровне класса

Обобщение / наследование

Диаграмма классов, показывающая обобщение между суперклассом Person и двумя подклассами Student и Professor

Указывает, что один из двух связанных классов ( подкласс) считается специализированной формой другого (супертип), а суперкласс считается обобщением подкласса. На практике это означает, что любой экземпляр подтипа также является экземпляром суперкласса. Примерное дерево обобщений этой формы находится в биологической классификации : люди являются подклассом обезьяны, который является подклассом млекопитающих и так далее. Взаимосвязь легче всего понять по фразе «А - это Б» (человек - это млекопитающее, млекопитающее - это животное).

Графическое представление обобщения в UML - это полый треугольник на конце суперкласса линии (или дерева линий), который соединяет его с одним или несколькими подтипами.

Отношение обобщения также известно как наследование или отношение "является".

суперкласс (базовый класс) в отношении обобщения также известен как «родительский», суперкласс, базовый класс или базовый тип.

Подтип в отношении специализации также известен как «дочерний», подкласс, производный класс, производный тип, наследующий класс или наследующий тип.

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

A - это тип B
Например, «дуб - это тип дерева», «автомобиль - это тип транспортного средства»

Обобщение может быть показано только на диаграммах классов и на диаграммы вариантов использования.

Реализация / реализация

В моделировании UML отношения реализации - это отношения между двумя элементами модели, в которых один элемент модели (клиент) реализует (реализует или выполняет) поведение что указывает другой элемент модели (поставщик).

Графическое представление реализации в UML - это полый треугольник на конце интерфейса пунктирной линии (или дерева линий), который соединяет ее с одним или несколькими разработчиками. На конце интерфейса пунктирной линии, соединяющей его с пользователями, используется обычная стрелка. В диаграммах компонентов используется графическое соглашение с шариком и розеткой (разработчики показывают шарик или леденец, тогда как пользователи показывают сокет). Реализации могут быть показаны только на диаграммах классов или компонентов. Реализация - это отношения между классами, интерфейсами, компонентами и пакетами, которые соединяют клиентский элемент с элементом поставщика. Отношения реализации между классами / компонентами и интерфейсами показывают, что класс / компонент реализует операции, предлагаемые интерфейсом.

символ реализации ------- ▻

Общая взаимосвязь

Диаграмма классов, показывающая зависимость между классом «Автомобиль» и классом «Колесо» (еще более ясным примером будет « Автомобиль зависит от колеса ", потому что автомобиль уже объединяет (а не просто использует) колесо)

Зависимость

Зависимость - более слабая форма связи, которая указывает на то, что один класс зависит от другого, поскольку он использует его в какой-то момент во время. Один класс зависит от другого, если независимый класс является переменной параметра или локальной переменной метода зависимого класса. Это отличается от ассоциации, где атрибут зависимого класса является экземпляром независимого класса. Иногда отношения между двумя классами очень слабые. Они вообще не реализуются с переменными-членами. Скорее они могут быть реализованы как аргументы функции-члена.

Кратность

Это отношение ассоциации указывает, что (по крайней мере) один из двух связанных классов ссылается на другой. Эти отношения обычно описываются как «У А есть В» (у матери-кошки есть котята, у котят есть мать-кошка).

UML-представление ассоциации - это линия, соединяющая два связанных класса. На каждом конце строки есть необязательные обозначения. Например, мы можем указать с помощью стрелки, что заостренный конец виден из хвоста стрелки. Мы можем указать владение размещением шара, ролью, которую играют элементы этого конца, указав имя для роли и множественность экземпляров этой сущности (диапазон количества объектов, которые участвуют в ассоциации с точки зрения другого конца).

0Нет экземпляров (редко)
0..1Нет экземпляров или один экземпляр
1Ровно один экземпляр
1..1Ровно один экземпляр
0.. *Ноль или более экземпляров
*Ноль или более экземпляров
1.. *Один или несколько экземпляров

Стереотипы анализа

EntityControlBoundary Pattern.jpg

Сущности

Классы сущностей моделируют долгоживущую информацию обрабатывается системой, а иногда и поведение, связанное с информацией. Их не следует идентифицировать как таблицы базы данных или другие хранилища данных.

Они нарисованы как круги с короткой линией внизу круга. В качестве альтернативы их можно нарисовать как обычные классы с обозначением стереотипа «сущность» над именем класса.

См. Также

Связанные диаграммы

Ссылки

Внешние ссылки

Викискладе есть медиафайлы, связанные с диаграммой классов.
Последняя правка сделана 2021-05-15 10:14:53
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте