Открыть сервис

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

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

Назначение и место в UML

Диаграмма классов входит в группу структурных диаграмм UML наряду с диаграммами компонентов, развёртывания, объектов и композитных структур. Её основная задача — зафиксировать статический «каркас» системы: какие сущности в ней выделены, какими свойствами и поведением они обладают и как связаны между собой. В отличие от диаграмм поведения (например, диаграммы последовательности или состояний), диаграмма классов не показывает развитие процесса во времени.

Диаграмма может применяться на разных уровнях абстракции: концептуальная модель описывает понятия предметной области без привязки к коду, спецификация — интерфейсы и типы, а реализационная модель отражает конкретные классы языка программирования. Один и тот же набор классов может быть представлен на нескольких таких диаграммах.

Основные элементы

Класс

Класс изображается прямоугольником, разделённым на три секции:

  • имя — записывается в верхней секции; абстрактные классы выделяют курсивом;
  • атрибуты — свойства класса с указанием типа и, при необходимости, видимости;
  • операции — методы или функции класса с параметрами и типами возвращаемых значений.

Видимость членов класса обозначается знаками: + — открытый (public), — закрытый (private), # — защищённый (protected), ~ — пакетный (package). Атрибуты и операции могут иметь кратность и значения по умолчанию.

Отношения

Между классами устанавливаются следующие основные виды связей:

ОтношениеОбозначениеСмысл
Ассоциациялинияклассы связаны структурно
Агрегациялиния с пустым ромбом«часть — целое», часть может существовать отдельно
Композициялиния с закрашенным ромбомсильное «часть — целое», часть не существует без целого
Наследование (обобщение)линия со стрелкой-треугольникомподкласс наследует свойства суперкласса
Реализацияпунктир со стрелкой-треугольникомкласс реализует интерфейс
Зависимостьпунктирная стрелкаизменение одного класса влияет на другой

Ассоциации могут иметь кратность (например, 1, 0..1, *), имена ролей и направление навигации. Наследование описывает отношение «является» (is-a), а агрегация и композиция — отношение «содержит» (has-a).

История

Диаграмма классов восходит к более ранним методам объектно-ориентированного анализа и проектирования 1980–1990-х годов, в частности к нотациям Грейди Буча, Джеймса Рамбо и Ивара Якобсона. После объединения их подходов в UML (первая версия — 1997 год) диаграмма классов стала одним из ключевых элементов стандарта. Спецификацию UML развивает консорциум OMG; актуальные версии (UML 2.x) уточнили нотацию, добавили шаблоны классов, интерфейсы как отдельные элементы и расширенные возможности моделирования связей.

Построение диаграммы

Типовой порядок работы включает несколько этапов:

  1. Выделение сущностей предметной области или программной системы.
  2. Определение атрибутов и операций каждого класса.
  3. Установление связей и их типов (ассоциация, наследование, композиция и др.).
  4. Уточнение кратностей и ролей, устранение избыточных связей.
  5. Проверка модели на соответствие требованиям и на согласованность.

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

Применение

Диаграммы классов используются в следующих областях:

  • проектирование программного обеспеченияописание архитектуры и доменной модели;
  • проектирование баз данных — классы соответствуют таблицам, ассоциации — внешним ключам;
  • реинжиниринг — восстановление структуры существующей системы;
  • документированиефиксация решений для команды и сопровождения;
  • обучение — изучение принципов объектно-ориентированного подхода.

Существуют инструменты, поддерживающие построение диаграмм классов: как коммерческие (например, Enterprise Architect, Visual Paradigm), так и свободные (StarUML, Modelio, PlantUML, генерирующий диаграммы из текстового описания). Многие среды разработки позволяют строить диаграммы автоматически по исходному коду.

Связь с кодом

Диаграмма классов напрямую отображается на конструкции объектно-ориентированных языков: классы, интерфейсы, поля и методы. Наследование соответствует ключевым словам extends/implements, композиция — вложенным объектам, ассоциация — ссылкам на другие объекты. Это делает диаграмму удобным средством перехода от модели к реализации, хотя полное соответствие не всегда достигается: детали языка (шаблоны, замыкания, множественное наследование) могут требовать дополнительных обозначений.

Ограничения

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

Источники: спецификация UML консорциума OMG; Г. Буч, Дж. Рамбо, И. Якобсон, «Язык UML. Руководство пользователя»; М. Фаулер, «UML. Основы».

Загружаем BFOmetr…