Диаграмма классов - Википедия - Class diagram

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

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

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

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

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

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

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

Члены

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

Видимость

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

+Общественные
-Частный
#Защищено
~Упаковка

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

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

Объем

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

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

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

Отношения

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

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

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

Зависимость

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

Ассоциация

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

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

Агрегация

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

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

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

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

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

Сочинение

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

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

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

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

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

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

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

Диаграмма классов, показывающая обобщение суперкласса Человек и два подкласса Ученик и Профессор

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

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

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

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

В подтип в отношениях специализации также известен как "ребенок", подкласс, производный класс, производный тип, наследующий класс, или же наследующий тип.

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

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

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

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

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

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

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

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

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

Зависимость

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

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

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

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

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

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

EntityControlBoundary Pattern.jpg

Сущности

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

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

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

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

Рекомендации

  1. ^ Спаркс, Джеффри. «Моделирование баз данных в UML». Получено 8 сентября 2011.
  2. ^ Скотт В. Эмблер (2009) Диаграммы классов UML 2. Webdoc 2003-2009. Доступ 2 декабря 2009 г.
  3. ^ Справочная карта UML, версия 2.1.2, Holub Associates, август 2007 г., получено 12 марта 2011
  4. ^ «Производное свойство UML - это свойство, значение которого создается или вычисляется из другой информации, например, с использованием других свойств». www.uml-diagrams.org. Получено 2019-01-24.
  5. ^ Надстройка унифицированного языка моделирования OMG (OMG UML), Версия 2.3: май 2010 г. Проверено 23 сентября 2010 г.
  6. ^ Фаулер (2003) UML Distilled: Краткое руководство по стандартному языку моделирования объектов
  7. ^ «Учебник по UML, часть 1: диаграммы классов» (PDF). Архивировано из оригинал (PDF) на 2007-01-03. Получено 2015-07-18.
  8. ^ Гудвин, Дэвид. «Моделирование и симуляция, стр. 26» (PDF). Уорикский университет. Получено 28 ноября 2015.

внешняя ссылка