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

Цели диаграмм классов
- Отображение статической структуры классификаторов в системе
- Предоставляет основную нотацию для других структурных диаграмм UML
- Очень полезно для разработчиков и других членов команды
- Бизнес-аналитики могут использовать диаграммы классов для моделирования систем с бизнес-точки зрения
Диаграммы классов UML состоят из:
- Набор классов
- Набор отношений между классами
Что такое класс?
Описание группы объектов с аналогичными ролями, включая:
- Структурные особенности (атрибуты): определяют, что объекты класса «знают»
- Представляет состояние объекта
- Описывает структуру или статические характеристики класса
- Поведенческие особенности (операции): определяют, что объекты класса «могут делать»
- Определяют, как взаимодействуют объекты
- Описывают поведение или динамические характеристики класса
Нотация классов
Нотация классов состоит из трех частей:
- Имя класса
- Имя класса появляется в первой секции.
- Атрибуты класса
- Атрибуты отображаются во второй секции.
- Тип указывается после двоеточия.
- Атрибуты соответствуют переменным-членам (данным-членам) в коде.
- Операции класса (методы)
- Операции показаны в третьем отделении. Они представляют услуги, предоставляемые классом.
- Тип возвращаемого значения указывается после двоеточия в конце сигнатуры метода.
- Типы параметров указываются после двоеточия после имени параметра.
- Операции соответствуют методам класса в коде.

Графическое представление класса MyClass как показано выше:
- MyClass имеет 3 атрибута и 3 операции
- Параметр p3 метода op2 имеет тип int
- op2 возвращает float
- op3 возвращает указатель (обозначается символом *) на Class6
Связи между классами
Класс может участвовать в одной или нескольких связях с другими классами. Связи могут быть следующих типов: (см. изображение справа для графического представления).
| Тип связи | Схема |
|---|---|
Наследование (или обобщение):
|
![]() |
Простая ассоциация:
|
![]() |
Агрегация:
|
![]() |
Композиция:
|
![]() |
Зависимость:
|
![]() |
Имена отношений
- Имена отношений записываются посередине линии ассоциации.
- Хорошие имена отношений имеют смысл при произнесении вслух:
-
- «Каждая электронная таблица содержит некоторые ячейки»
<li>Выражение оценивается как значение»
-
- Часто они имеют маленькую стрелку, указывающую направлениечтения, например, выражение оценивается как значение, но значение не оценивается как выражение.

Связь – Роли
- Роль определяет цель направления в ассоциации.
- Роль записывается на конце линии ассоциации и описывает роль, которую класс играет в этом отношении.
- Например, ячейка связана с выражением. Природа связи заключается в том, что выражение является формулой ячейки.
Видимость членов класса
В объектно-ориентированном проектировании представляется видимость атрибутов и операций. UML определяет четыре типа видимости: публичный, защищенный, – указывает на приватный атрибут или операцию, и пакет.
Символы +, -, # и ~ перед именами атрибутов и операций указывают на видимость:
- + указывает на публичный атрибут или операцию
- – указывает на приватный атрибут или операцию
- # указывает на защищенный атрибут или операцию
- ~ указывает на атрибут или операцию пакета
Пример видимости класса

В приведенном выше примере:
- атрибут1 и op1 класса MyClassName являются публичными
- атрибут3 и op3 являются защищенными
- атрибут2 и op2 являются приватными
Права доступа для различных членов класса показаны ниже:
| Уровень доступа | Публичный (+) | Приватный (-) | Защищенный (#) | Пакет (~) |
|---|---|---|---|---|
| Члены того же класса | Да | Да | Да | Да |
| Члены производных классов | Да | Нет | Да | Да |
| Члены любого другого класса | Да | Нет | Нет | Только в том же пакете |
Множественность
Множественность указывает, сколько объектов класса участвуют в отношении. Она может быть выражена как:
- Точно 1 – 1
- Ноль или один – 0..1
- Многие – 0..* или *
- Один или более – 1..*
- Точное количество – например, 3..4 или 6
- Сложная связь – например, 0..1, 3..4, 6* означает любое количество, кроме 2 или 5
Пример множественности
- Требование: студент может записаться на много курсов, и много студентов могут записаться на один курс.
- В приведённом ниже примере диаграмма классов (слева) описывает статическую модель вышеуказанного требования, тогда как диаграмма объектов (справа) показывает снимок регистрации курсов (экземпляр диаграммы классов) по курсам программирования и управления базами данных.

Пример агрегации – компьютер и компоненты
- Агрегация — это особый случай ассоциации, представляющий иерархию «содержит».
- Агрегация — это родительский класс, компонент — дочерний класс.

Пример наследования – классификация клеток
- Наследование — ещё один особый случай ассоциации, представляющий иерархию «вид-родитель».
- Наследование упрощает модель анализа за счёт введения таксономии.
- Подклассы наследуют атрибуты и операции от суперкласса.

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

Из приведённого выше примера мы можем интерпретировать диаграмму следующим образом:
- Shape — это абстрактный класс. Он отображается курсивом.
- Shape — это суперкласс. Circle, Rectangle и Polygon наследуются от Shape. Другими словами, Circle — это Shape. Это отношение обобщения/наследования.
- Существует ассоциация между DialogBox и DataController.
- Shape является частью Window. Это отношение агрегации. Shape может существовать без Window.
- Point является частью Circle. Это отношение композиции. Point не может существовать без Circle.
- Window зависит от Event. Но Event не зависит от Window.
- Атрибуты Circle — radius и center. Это конкретный класс.
- Методы Circle — area(), circum(), setCenter() и setRadius().
- Параметр radius в Circle имеет тип float.
- Метод area() в Circle возвращает значение типа double.
- Атрибуты и методы Rectangle скрыты. Некоторые другие классы на диаграмме также скрывают свои атрибуты и методы.
Работа с сложными системами – несколько или одна диаграмма классов?
При моделировании крупных систем или крупных бизнес-областей необходимо учитывать множество сущностей. Следует ли использовать несколько или одну диаграмму классов? Ответ:
- Лучше использовать несколько диаграмм классов, чем моделировать каждое сущность и их отношения на одной диаграмме.
- Разбиение системы на несколько диаграмм классов облегчает ее понимание, особенно когда каждая диаграмма является визуальным представлением конкретной части системы.
Перспектива диаграмм классов в жизненном цикле разработки программного обеспечения
Диаграммы классов могут использоваться на разных этапах Жизненного цикла разработки программного обеспечения (ЖЦРПО), и обычно постепенно моделируются три разных уровня детализации (перспективы):
Концептуальная перспектива: Диаграмма интерпретируется как описание вещей в реальном мире. Таким образом, если вы начинаете с концептуальной перспективы, вы рисуете диаграмму, представляющую концепции в изучаемой области. Эти концепции естественным образом связаны с классами, которые их реализуют. Эта перспектива считается независимой от языка.
Перспектива спецификации: Диаграмма интерпретируется как описание программных абстракций или компонентов с указанием спецификаций и интерфейсов, без привязки к конкретной реализации. Таким образом, если вы подходите с позиции спецификации, вы изучаете интерфейсы программного обеспечения, а не его реализацию.
Перспектива реализации: Диаграмма интерпретируется как описание конкретной технологии и языкареализации программного обеспечения. Таким образом, если вы подходите с позиции реализации, вы изучаете реализацию программного обеспечения.
Попробуйте нарисовать диаграмму классов UML прямо сейчас
Скачать бесплатно




