stringtranslate.com

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

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

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

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

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

Класс с тремя отсеками

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

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

Участники

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

Видимость

Чтобы указать видимость члена класса (т. е. любого атрибута или метода), перед именем члена необходимо разместить следующие обозначения: [5]

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

Производное свойство отображается с именем, перед которым стоит косая черта «/». [6]

Объем

UML определяет два типа области действия для членов: экземпляр и класс . Имя класса отображается как подчеркнутая конкатенация имени экземпляра (если есть), двоеточия (':') и фактического имени класса. [1]

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

Отношения

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

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

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

Зависимость

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

Ассоциация

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

Ассоциация представляет собой семейство структурных связей. Бинарная ассоциация представлена ​​в виде сплошной линии между двумя классами. Рефлексивная ассоциация — это бинарная ассоциация между классом и самим собой. Ассоциация между более чем двумя классами представлена ​​в виде ромба, соединенного сплошной линией с каждым из ассоциированных классов. Ассоциация между тремя классами является тернарной ассоциацией. Ассоциация между большим количеством классов называется n-арной ассоциацией.

Ассоциация может быть названа, а концы ассоциации могут быть украшены именами ролей, индикаторами агрегации, множественностью, видимостью, навигационностью и другими свойствами. Точечная нотация, например, позволяет представлять с помощью маленькой точки на стороне одного класса, что конец ассоциации принадлежит другой стороне. [8]

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

Агрегация

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

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

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

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

Состав

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

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

Различия между композицией и агрегацией

Состав отношения
1. При попытке представить реальные отношения «целое-часть», например, двигатель является частью автомобиля.
2. При уничтожении контейнера уничтожается и его содержимое, например, университет и его факультеты.
Агрегационные отношения
1. При представлении связи программного обеспечения или базы данных, например, двигатель модели автомобиля ENG01 является частью модели автомобиля CM01, поскольку двигатель ENG01 может также быть частью другой модели автомобиля. [10]
2. При уничтожении контейнера его содержимое обычно не уничтожается, например, у профессора есть студенты; когда профессор покидает университет, студенты не уходят вместе с профессором.

Таким образом, отношение агрегации часто является "каталогическим" включением, чтобы отличить его от "физического" включения композиции. UML 2 не определяет никакой семантики для агрегации по сравнению с простой ассоциацией.

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

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

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

Это указывает на то, что один из двух родственных классов ( подкласс ) считается специализированной формой другого (супертипа ) , а суперкласс считается обобщением подкласса. На практике это означает, что любой экземпляр подтипа также является экземпляром суперкласса. Примерное дерево обобщений этой формы можно найти в биологической классификации : люди являются подклассом обезьян , которые являются подклассом млекопитающих , и так далее. Связь легче всего понять с помощью фразы «A is a B» (человек является млекопитающим, млекопитающее является животным).

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

 символ реализации (подкласс) _______▻ (суперкласс)

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

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

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

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

А — это тип Б.
Например, «дуб — это вид дерева», «автомобиль — это вид транспортного средства».

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

Реализация/Внедрение

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

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

 символ реализации (реализатор) -------▻ (интерфейс)

Общие отношения

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

Зависимость

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

Множественность

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

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

Анализ стереотипов

Сущности

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

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

Смотрите также

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

Ссылки

  1. ^ ab "Классы". Унифицированный язык моделирования 2.5.1. Номер документа OMG formal/2017-12-05. Организация по разработке стандартов группы управления объектами (OMG SDO). Декабрь 2017 г. стр. 194.
  2. ^ Спаркс, Джеффри. "Моделирование баз данных в UML" . Получено 8 сентября 2011 г.
  3. ^ Флэтт, Амели; Лангнер, Арне; Лепс, Олоф (2022), «Фаза I: Сопоставление юридических концепций с техническими объектами» , Разработка профилей приложений Akoma Ntoso на основе моделей , Cham: Springer International Publishing, стр. 13–17, doi : 10.1007/978-3-031-14132-4_3, ISBN 978-3-031-14131-7, получено 2023-01-07
  4. ^ Скотт В. Эмблер (2009) Диаграммы классов UML 2. Webdoc 2003-2009. Доступ 2 декабря 2009 г.
  5. UML Reference Card, Version 2.1.2, Holub Associates, August 2007 , получено 12 марта 2011
  6. ^ "Производное свойство UML — это свойство, значение которого создается или вычисляется из другой информации, например, с использованием других свойств". www.uml-diagrams.org . Получено 24.01.2019 .
  7. ^ Фаулер (2003) UML Distilled: Краткое руководство по стандартному языку объектного моделирования
  8. ^ Селик, Бран (18.04.2013). «Getting it right on the dot» (PDF) . www.omg.org . Object Management Group . Получено 26.11.2023 .
  9. ^ "UML Tutorial part 1: class diagrams" (PDF) . Архивировано из оригинала (PDF) 2007-01-03 . Получено 2015-07-18 .
  10. ^ Гудвин, Дэвид. "Моделирование и имитация, стр. 26" (PDF) . Университет Уорика . Получено 28 ноября 2015 г.

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