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

Основными элементами являются классы и связи между ними. Классы характеризуются при помощи атрибутов и операций .
Атрибуты описывают свойства объектов класса. Большинство объектов в классе получают свою индивидуальность из-за различий в их атрибутах и взаимосвязи с другими объектами. Однако, возможны объекты с идентичными значениями атрибутов и взаимосвязей. Т.е. индивидуальность объектов определяется самим фактом их существования, а не различиями в их свойствах. Имя атрибута должно быть уникально в пределах класса. За именем атрибута может следовать его тип и значение по умолчанию.
Операция есть функция или преобразование. Операция может иметь параметры и возвращать значения.
Виды связей:
- ассоциация
- агрегация
- наследование.
Ассоциация ( association ) – представляет собой отношения между экземплярами классов.
Каждый конец ассоциации обладает кратностью (синоним – мощностью, ориг. — multiplicity), которая показывает, сколько объектов , расположенных с соответствующего конца ассоциации, может участвовать в данном отношении . В примере на рисунке каждый Товар имеет сколь угодно Записей в накладной , но каждая Запись в накладной обязательно один Товар . В общем случае кратность может быть задана любым множеством.
Ассоциации может быть присвоено имя. В качестве имени обычно выбирается глагол или глагольное словосочетание , сообщающие смысл и назначение связи. Также на концах ассоциации под кратностью может указываться имя роли , т.е. какую роль выполняют объекты, находящиеся с данного конца ассоциации.

Агрегация ( aggregation ) – это ассоциация типа «целое-часть». Агрегация в UML представляется в виде прямой с ромбом на конце.
Ромб на связи указывает, какой класс является агрегирующим (т.е. «состоящим из»); класс с противоположного конца — агрегированным (т.е. те самые «части»).

Композиция ( composition ) – это такая агрегация, где объекты-части не могут существовать сами по себе и уничтожаются при уничтожении объекта агрегирующего класса. Композиция изображается так же, как ассоциация, только ромбик закрашен.
Важно понимать разницу между агрегацией и композицией: при агрегации объекты-части могут существовать сами по себе, а при композиции — нет. Пример агрегации: автомобиль—колесо, пример композиции: дом—комната.

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

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

Основной сущностью в системе будет являться товар. Как известно из задания на проектирование, товар хранится на складе. Но понятия товара как некоего описания и товара, лежащего непосредственно на складе, отличаются друг от друга. Товар, лежащий на складе, кроме того, что связан со складом отношением композиции (агрегация не совсем подходит, поскольку в данной системе товар является товаром, пока он не покинет склад), ещё характеризуется количеством. Аналогично следует рассуждать и при рассмотрении отношения Товара и Заказа, Товара и Накладной. В связи с тем, что Заказ и Накладная в сущности являются документами и имеют сходные атрибуты, они были объединены с помощью общего класса-предка Документ . Примечательно, что на диаграмме представлены два класса со стереотипом Enumeration (перечисление). Стереотип можно установить из контекстного меню для класса.
3.Сохранить диаграмму.
Приложение для построения диаграмм классов
Для построения UML-диаграмм следует использовать Flexberry Designer — удобный онлайн инструмент. После простого процесса регистрации достаточно создать проект, перейти на список диаграмм и создавать нужные диаграммы.
Также рекомендуем воспользоваться полезным инструментом для быстрого построения диаграмм по текстовому описанию.
Перейти
- Построение диаграммы видов деятельности
- Построение диаграмм взаимодействия
Язык UML: что это такое и зачем он нужен
Разбираемся, что собой представляет язык стрелочек и кружочков, который используют все айтишники.


Иллюстрация: Оля Ежак для Skillbox Media

Дмитрий Зверев
Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.
Чтобы грамотно проектировать приложения, используют схемы. Они помогают разработчикам понять, как выглядит вся архитектура целиком и как устроены отдельные её части.
Но схемы можно делать по-разному — например, одни проектировщики будут использовать кружки для обозначения классов, а другие — квадраты. И как тогда обычным программистам разобраться, где класс, а где не класс? Ответ — с помощью популярного языка для схем и моделей — UML.
В этой статье мы разберёмся, что это за язык и зачем он нужен, а также научимся различать разные типы фигур и построим свои первые диаграммы.
- Что это за язык
- Для чего он нужен
- Какие у него преимущества и недостатки
- Что такое UML-диаграмма
- Из чего она состоит
- Каких бывает видов
- Как построить собственную
- Что запомнить
Что такое язык UML
UML, или Unified Modeling Language, — это унифицированный язык моделирования. Его используют, чтобы создавать диаграммы и схемы для визуализации процессов и явлений.
Слово «унифицированный» означает, что схемы на UML будут понятны всем, кто знаком с ним. То есть у языка есть определённые правила, по которым применяются все стрелочки, кружки и квадраты.
Давайте на примере разберём, о каких процессах и явлениях мы вообще говорим.
Представьте, что у нас есть простой сайт, который работает на сервере. К нему подключена база данных, где хранится информация о посетителях и их действиях. Когда пользователь заходит на сайт, он сначала отправляет запрос на сервер, а тот делает запрос в базу данных и возвращает информацию обратно пользователю. И так происходит до тех пор, пока не будет закрыта страница сайта.
Визуально такое взаимодействие можно представить так:

Только что мы описали процесс — как пользователь взаимодействует с нашим сайтом. Правда, сделали это в очень упрощённом виде и не по правилам языка UML. К примеру, мы могли вместо картинки компьютера использовать картинку ноутбука или вообще консоли. А направление запросов обозначать с помощью эмодзи:

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

Базы данных могут быть сложнее, и для работы с ними как раз и пригодится язык UML. Например, вот как выглядит диаграмма для интернет-магазина:

Не бойтесь, что всё выглядит так сложно. Это только потому, что мы ещё не разобрались со стандартными обозначениями. В конце статьи можете вернуться сюда и понять, что всё просто.
Теперь поговорим о преимуществах и недостатках UML, а затем начнём уже наконец разбирать диаграммы.
Какие преимущества и недостатки у UML
Нарисовать схему может любой — для этого даже не нужен никакой язык моделирования. Достаточно графического редактора. Но если вы хотите, чтобы эти схемы понимали не только вы, но и другие разработчики, то стоит присмотреться именно к UML. У него есть несколько аргументов в кармане.
- Универсальность. У каждого элемента в UML-диаграммах строго определённое значение, которое не меняется в зависимости от отрасли, страны или предпочтений разработчика. Поэтому если вы знаете базовый синтаксис, то сможете разобраться практически в любой схеме. Это как математические теоремы: их понимают одинаково во всём мире.
- Простота и визуализация. Любую информацию легче понять, если она представлена в виде картинки, а UML как раз про это. В диаграммах используют знакомые всем объекты: фигуры и стрелки. По ним легко понять, как устроена структура целиком, даже если вы не особо знакомы с языком.
- Распространённость. UML — понятный и простой язык, поэтому его используют во многих областях, например в IT, инженерии и менеджменте. При этом диаграммы из одной сферы смогут без особых усилий понять и в другой, хотя нюансы, конечно, есть.
- Возможность автоматизации и реверс-инжиниринга. Язык поддерживает много инструментов для автоматизации моделирования. Например, можно генерировать код прямо из UML-диаграмм — для этого есть такие инструменты, как Umbrello. Это же помогает, когда нужно провести ревёрс-инжиниринг и понять, как работает система без документации.
Теперь о неприятном — о недостатках языка UML. Они тоже есть, и об этом точно стоит помнить, прежде чем использовать его для ваших проектов.
- Объёмная документация. Если решитесь изучить язык, практически сразу же наткнётесь на его документацию. И она удивит вас тем, что там 700 страниц… Хотя читать всю необязательно — достаточно обращаться к ней, когда возникнут вопросы об элементах.
- Сложность использования и поддержки проектов. Некоторые инструменты для работы с UML могут показаться сложными или недостаточно интуитивными. А это добавляет трудности в освоении и использовании.
- Семантическая неоднозначность. Язык не всегда придерживается строгих обозначений, и это усложняет работу с ним. Некоторые элементы можно интерпретировать по-разному, что приводит к проблемам интерпретации. Особенно ярко это видно в диаграммах активности и последовательности. Но о них дальше.
- Несовместимость с мелкими проектами. UML разработали, чтобы моделировать большие и сложные системы. Поэтому использовать его для небольших — это избыточно и неэффективно. Так вы только усложните разработку и потратите ресурсы на менее значимые вещи.
Плюсов у языка достаточно, и они перешивают минусы, поэтому использовать его точно стоит. Теперь перейдём к самим диаграммам, чтобы понять, как они устроены.
Что такое UML-диаграмма
UML-диаграмма — это просто схема, которую сделали по правилам языка UML. Обычно в ней есть элементы и связи между ними, а также дополнительные объекты, которые помогают лучше понять диаграмму.
С помощью UML-схем можно описывать разные процессы и явления. Это мы уже усвоили. Примеры таких диаграмм — зависимости частей приложения друг от друга, описание классов в коде, планировка магазина или архитектура ноутбука.
Вот так выглядит простая диаграмма, которая описывает связи между классами в коде:

На диаграмме есть три класса: Студент, Учитель и Человек. Все они как-то относятся друг к другу. Сейчас коротко поясним.
Классы Студент и Учитель связаны между собой — это показано обычной линией. Связаны — значит, что они как-то взаимодействуют: например, вызывают методы друг друга.
Классы Студент и Учитель наследуют свойства от класса Человек. Наследуют — значит берут этот класс за основу. Например, у Человека могут быть свойства: рост, вес и имя. А все классы, которые наследуются от него, сразу же получат эти свойства. Наследование показано незакрашенной стрелкой.
Все диаграммы строятся по главному принципу: есть объекты, которые как-то связаны друг с другом. Эта связь может быть разной — например, наследование или обычное взаимодействие между объектами.
Из чего состоят UML-диаграммы
В языке есть десятки элементов для обозначения любых процессов. Посмотрим на основные из них поближе. Будет много картинок и теории, готовьтесь.
Класс
Весь UML основан на принципах объектно-ориентированного программирования. Поэтому дальше мы часто будем говорить о классах, объектах, интерфейсах. Этот подход очень популярен среди разработчиков, и создатели UML решили сфокусироваться именно на нём.
Если вы ещё не знакомы с ООП и хотите узнать о нём подробнее, прочитайте наш цикл статей, где мы рассказываем об этом подходе просто и с примерами.
Класс — это структура данных, у которой есть свойства и методы. Из него создаются объекты — копии класса со всеми его внутренностями, но всегда с разными значениями.
У свойств класса есть имена и типы данных. А у методов — тоже имена и типы возвращаемых значений. Выглядит класс так:

На прямоугольнике есть три секции: с названием класса, свойствами и методами. Давайте о них подробнее.
- Название класса — это уникальное имя, по которому мы можем определить, зачем нужен этот класс. В нашем случае, класс Человек — это набор характеристик людей и действия, которые они могут совершать.
- Свойства класса — это переменные класса, которые нужны для чего-то. Например, для человека мы можем перевести его рост и вес в американские обозначения.
- Методы класса — это действия, которые класс может выполнять. Например, метод Ходить позволяет человеку ходить, а метод Есть — есть.
Заметьте, что у свойств и методов есть типы — float и void. Для свойств они показывают, какой тип переменных будет храниться в ней. А для методов — какой тип будет возвращаться после выполнения действия.
Чтобы обозначить метод, после его названия ставят две круглые скобки. А если метод принимает какой-то аргумент, то его тип можно указать внутри скобок:

Объект
Это копия класса, у которой есть все его свойства и методы. Объекты нужны, чтобы создавать различные версии классов с разными значениями. Например, мы можем создать объект класса Человек:

Интерфейс
Это как класс, только что-то абстрактное. Интерфейс можно представить как нечто, что помогает двум другим объектам взаимодействовать друг с другом. Например, интерфейс сайта позволяет пользователю не разбираться, как отправлять HTTP-запросы, а просто нажимать кнопки с понятным названием.
В программировании интерфейсы используют, чтобы показать наличие класса, но без его внутренностей. В UML это выглядит так:

Для интерфейса нужно обязательно указать слово «interface». Иначе его можно будет спутать с обычным объектом или классом.
Ещё можно указать, какие у интерфейса должны быть свойства и методы, которые обязательно нужно сделать программисту:

Компонент
Это более крупная часть приложения — например, файл или библиотека. С помощью компонентов можно показать, как взаимодействуют разные части системы между собой. Выглядит он так:

Узел
Это как компонент, только ещё больше. Пример — сервер или база данных. Внутри узла может находиться несколько компонентов. А выглядит узел так:

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

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

Заметка
Это комментарий для разных объектов в UML. У заметок нет определённой структуры: они нужны просто для уточнений подробностей. Выглядят так:

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

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

А так выглядит связь между двумя классами:

Взаимодействие
Это стрелка, которая показывает, что один объект обращается к другому. Взаимодействие также указывает, какие данные передаются адресату. Показывают взаимодействие так:

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

Зависимость
Это тоже стрелка, но пунктирная, которая показывает, что если мы изменим один объект, то одновременно изменим и другой. Выглядит зависимость так:

Пример зависимости — это градусник и температура. Если меняется температура, то меняется и значение на градуснике:

Агрегация
Это указание, что один объект является частью другого. Например, машина, говоря упрощённо, состоит из колеса, руля и двигателя. Обозначается агрегация так:

Как это выглядит в схеме? Посмотрим агрегацию на примере машины, которая состоит из нескольких частей:

Обобщение или наследование
Это стрелка, которая показывает, что один объект наследует свойства другого. Например, класс Студент может наследовать класс Человек. Выглядит обобщение так:

Пример наследования — классы Человек, Студент и Учитель:

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

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

Диаграмма компонентов. Показывает, какие компоненты есть в системе и как они взаимодействуют между собой. Пример такой диаграммы — приложение интернет-магазина:

Видим, что появились новые обозначения в виде круга и полукруга. Они указывают на то, что для взаимодействия компонентов нужен интерфейс. А ещё есть круг, полукруг, стрелка между ними и надпись «Платёж». Это значит, что для взаимодействия компонентов должен произойти платёж.
Диаграмма объектов. Нужна, чтобы показать состояние элементов в конкретный момент времени. Это помогает лучше понять, как моделировать объекты.

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

Видим, что на диаграмме ещё появились ромбики. Это условие, от которого зависит, к какому следующему действию мы перейдём.
Диаграмма вариантов использования. Нужна, чтобы показать, как пользователи взаимодействуют с системой. На этой диаграмме можно указать все сценарии использования, а также показать, как перейти из одного сценария в другой.

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

Как построить UML-диаграмму
Чтобы построить UML-диаграмму, можно даже не устанавливать дополнительные приложения — всё уже доступно в браузере. Для нашей статьи мы делали все схемы в сервисе draw.io. Вот как он выглядит:

В сервисе есть все нужные для UML элементы: классы, объекты, связи и прочие. Находятся они в левом меню:

Чтобы добавить элемент, нужно просто перетащить его в центральную область:

А чтобы сделать связь, можно воспользоваться стрелками из меню:

Кроме этого сервиса есть ещё много других. Вот список некоторых из них:
- Lucidchart — популярный инструмент для создания диаграмм. Он предлагает широкий выбор готовых шаблонов и символов, а также возможность совместной работы в реальном времени.
- Visual Paradigm — полнофункциональный инструмент для моделирования и создания UML-диаграмм. Он предоставляет множество функций и возможностей для анализа и разработки систем.
- Creately предлагает простой в использовании веб-интерфейс для создания UML-диаграмм. Он содержит множество шаблонов и символов, а также поддерживает совместную работу и комментирование.
- PlantUML — представляет собой инструмент для создания диаграмм, основанный на текстовом описании с использованием языка UML. Он позволяет создавать UML-диаграммы путем написания текстового кода, что делает его гибким и простым в использовании.
Что запомнить
Давайте резюмируем всё, что мы узнали о языке UML:
- UML — это унифицированный язык для создания схем. Унифицированный — значит, что если знать базовый синтаксис, то можно понять любую схему.
- Язык нужен, чтобы визуально описывать явления и процессы. Например, как работают приложения или как идут бизнес-процессы в компании.
- У UML несколько главных преимуществ: универсальность, простота и визуализация, распространённость, а также возможность автоматизации и ревёрс-инжиниринга.
- UML-диаграммы — это схемы, которые сделаны по правилам языка UML.
- Диаграммы состоят из разных базовых элементов — например, классов, объектов, узлов и связей между ними.
- Глобально диаграммы делятся на два вида: структурные и поведенческие. Структурные описывают, из каких элементов состоит система, а поведенческие — как она себя ведёт внутри.
- А ещё структурные и поведенческие диаграммы делятся внутри на 14 более специфичных диаграмм, где у каждой своё предназначение.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!
Читайте также:
Простое руководство по использованию классовых диаграмм UML | Учебное пособие по использованию классовых диаграмм
В основе любой объектно-ориентированной системы лежит этап проектирования структуры классов – поэтому говорят, что диаграммы классов являются наиболее популярными из типов UML-диаграммы.
В этом простом учебном пособии по построению диаграмм классов мы рассмотрели ключевые области, которые необходимо знать, чтобы без труда нарисовать диаграммы классов. Прокрутите вниз, чтобы узнать.
- Классовая диаграмма Определение
- Нотации диаграммы класса с примерами
- Как нарисовать диаграмму классов
- Классовая диаграмма Лучшие практики
- Примеры/шаблоны схем классов
Определение Классовой Диаграммы | Что такое Классовая Диаграмма?
Диаграмма классов – это UML-диаграмма, которая описывает систему, визуализируя различные типы объектов внутри системы и виды статических связей, которые существуют между ними. Он также иллюстрирует операции и атрибуты классов.
Обычно они используются для изучения концепций области, понимания требований к программному обеспечению и описания подробных проектов.
Нотации диаграммы класса с примерами
Существует несколько обозначений диаграмм классов, которые используются при рисовании диаграмм классов UML. Мы перечислили ниже наиболее распространенные нотации диаграммы классов.
Класс

Классы представляют собой центральные объекты в системе. Он представлен прямоугольником с 3 отсеками.
Первый показывает имя класса, а средний – атрибуты класса, которые являются характеристиками объектов. В нижнем списке перечислены операции класса, которые представляют собой поведение класса.

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

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

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

Для получения подробной информации о типах разъемов диаграммы классов и различных отношениях между классами обратитесь к нашему удобному руководству по отношениям диаграммы классов.
Полный список нотаций/символов диаграммы классов см. в данной заметке.
Как нарисовать диаграмму классов
Классовые диаграммы идут рука об руку с объектно-ориентированным дизайном. Поэтому знание его основ – ключевая часть умения рисовать хорошие классовые диаграммы.
При необходимости описания статического вида системы или ее функциональных возможностей, потребуется нарисовать диаграмму классов. Вот шаги, которые необходимо выполнить для создания диаграммы классов.
Шаг 1: Определите имена классов
Первым шагом является идентификация первичных объектов системы.
Шаг 2: Различные отношения
Следующий шаг – определить, как каждый из классов или объектов связан друг с другом. Обратите внимание на общие черты и абстракции среди них; это поможет вам сгруппировать их при рисовании диаграммы классов.
Шаг 3: Создать структуру
Сначала добавьте имена классов и свяжите их с соответствующими коннекторами. Добавить атрибуты и функции/методы/операции можно позже.
Классовая диаграмма Лучшие практики
- Классовые диаграммы могут иметь тенденцию к бессвязности по мере их расширения и роста. Лучше всего избегать создания больших диаграмм и разбивать их на более мелкие, которые позже можно будет связать друг с другом. Ты можешь очень легко сделать это с Крейли. Это поможет вам улучшить читабельность ваших диаграмм.
- Используя простую нотацию класса, вы можете быстро создать высокоуровневый обзор вашей системы. Подробная диаграмма может быть создана отдельно по мере необходимости, и даже связана с первой диаграммой для удобства пользования.
- Чем больше линий перекрываются на диаграммах классов, тем более загроможденными они становятся. Читатель только запутается, пытаясь найти путь. Убедитесь, что две линии не пересекаются.
- Используйте цвета для группировки общих модулей. Различные цвета на разных классах помогают читателю различать различные группы.
Примеры диаграмм классов / Шаблоны
Диаграмма класса Пример 1

Щелкните по шаблону, чтобы отредактировать его в режиме онлайн
Диаграмма класса Пример 2

Щелкните по шаблону, чтобы отредактировать его в режиме онлайн
Диаграмма класса Пример 3

Диаграмма классов для системы банкоматов банка (Нажмите на шаблон, чтобы отредактировать в режиме онлайн)
Другие ресурсы диаграммы классов
- Руководство по работе с диаграммами классов UML – Часть 1
- Руководство по работе с диаграммами классов UML – часть 2
- Инструменты, шаблоны и ресурсы для построения диаграмм классов
Поделитесь своими мыслями об учебном пособии “Классная диаграмма”
В этом учебном пособии мы рассмотрели, что такое диаграмма классов, нотации диаграммы классов, как нарисовать диаграмму классов и лучшие практики, которым вы можете следовать при создании диаграмм классов. Кроме того, мы добавили несколько примеров схем классов, которые можно мгновенно редактировать в режиме онлайн.
Хотите узнать о других типах диаграмм UML?
Основы UML. Кому и зачем нужен UML
Статья про основы применения UML будет полезна начинающим аналитикам, а также разработчикам, тестировщикам, менеджерам продуктов, архитекторам и техническим писателям, которые хотят начать использовать UML-диаграммы в своей работе или структурировать знания об их применении.
Обратите внимание: в этой статье не разбираются правила нотации, значения элементов и способы построения конкретных видов диаграмм. Зато в ответах на вопросы мы обсуждаем практические аспекты применения UML в работе.
Время на чтение статьи: 17 минут
Не любите читать? Посмотрите видео.
Оглавление
- Определение
- История возникновения UML
- Классификация UML диаграмм
- UML для Заказчика
- UML для Аналитика
- UML для Архитектора
- UML для Разработчика
- UML c позиции Тестировщика
- UML для Технического писателя
- Какие задачи на UML встречаются на собеседованиях?
- Правда ли, что UML используют только в больших компаниях?
- Обязательно ли знать программирование для работы с UML?
- На каких практических кейсах можно потренироваться в UML?
- Можно ли моделировать сложную логику UML в MS Visio?
- Как быстро освоить Enterprise Architect?
- Зачем нужна диаграмма классов, если есть ER-диаграмма?
- Как связаны UML и BPMN?
Что такое UML
Определение
UML (Unified Modeling Language, Унифицированный Язык Моделирования) — язык графического описания для объектного моделирования в области разработки программного обеспечения, который также можно применять для моделирования бизнес-процессов, системного проектирования и отображения организационных структур.
Давайте подробнее разберём аббревиатуру UML:
- U — Unified (Унифицированный). Большой набор элементов, входящих в нотацию, позволяет покрывать много задач на этапе анализа и проектирования. Ещё одна версия происхождения этого слова кроется в том, что нотация объединила в себе несколько разнородных нотаций, существовавших ранее.
- M — Modeling (Моделирование). Создание диаграмм заключается в разработке моделей, содержащих наполненные информацией и связанные между собой графические объекты.
- L — Language (Язык). UML является искусственным языком и обладает свойствами языка: имеет словарь (графические символы), семантику (смысловые значения элементов) и синтаксис (правила построения конструкций). В нотацию также заложена возможность генерации кода из графической модели и генерация моделей из кода.
История возникновения UML
UML является далеко не первой нотацией моделирования. Графически описывать системы при проектировании и разработке стали давно. В какой-то момент появилась необходимость в том, чтобы использовать при моделировании единые правила, понятные всем.
В основу нотации легли наработки многих специалистов в области программной инженерии, но наиболее весомый вклад внесли Грейди Буч (Grady Booch), Айвар Джейкобсон (Ivar Jacobson) и Джеймс Рамбо (James Rumbaugh). UML вобрала в себя особенности их нотаций моделирования — Booch, OOSE (Object Oriented Software Engineering) и OMT (Object Modeling Technique) соответственно.

Рис. 1 — История возникновения нотации UML
Язык постоянно развивается, появляются новые элементы для моделирования более сложных систем. Актуальная сейчас версия нотации — UML 2.5.1; новости и рекомендации можно найти на официальном сайте UML.org.
Классификация UML диаграмм
Нотация известна тем, что в неё входит много различных видов диаграмм:

Рис. 2 — Классификация диаграмм нотации UML
Структурные диаграммы UML. Описывают систему статически
Диаграмма;Описание
Диаграмма классов (Class Diagram);Описывает систему в виде набора классов со свойствами, доступными методами и взаимосвязями между классами. Диаграмма объектов (Object Diagram);Является экземпляром диаграммы классов и показывает конкретные значения свойств классов. Диаграмма пакетов (Package Diagram);Описывает взаимосвязи пакетов. Пакет — группа классов, объединенных для упрощения сложной диаграммы классов. Диаграмма компонент (Component Diagram);Описывает архитектуру компонентов (сервисы, интерфейсы, приложения и т.д.) и зависимости между ними. Диаграмма развертывания (Deployment Diagram);Описывает архитектуру системы с точки зрения ее развертывания на физическом уровне. Диаграмма профилей (Profile Diagram);Описывает пользовательские стереотипы и ограничения, применяемые к моделям. Диаграмма композитной структуры (Composite Structure Diagram);Описывает внутреннюю структуру классов и взаимодействие элементов класса между собой.
Диаграммы поведения UML. Описывают систему динамически
Диаграмма;Описание
Диаграмма прецедентов (Use Case Diagram). Употребляется также термин «Диаграмма вариантов использования»;Описывает набор функциональности (прецедент), доступной акторам (внешним для системы сущностям, например, пользователям). Диаграмма деятельности (Activity Diagram);Описывает рабочий процесс внутри каждого прецедента. Диаграмма состояний (State Machine Diagram);Описывает состояния, в которых может находиться каждый объект, и правила перехода из одного состояния в другое. Диаграммы взаимодействия; Диаграмма последовательности (Sequence Diagram);Описывает логику взаимодействия и обмена данными между объектами в рамках прецедента в хронологическом порядке. Диаграмма коммуникации (Communication Diagram);Описывает логику взаимодействия и обмена данными между объектами в рамках прецедента. Схожа с sequence diagram, но без раскрытия хронологического порядка. Диаграмма синхронизации (Timing Diagram);Описывает как объекты ведут себя на временной шкале без отображения взаимосвязей между объектами. Диаграмма обзора взаимодействия (Interaction Overview Diagram);Описывает процесс взаимодействия объектов. Похожа на activity diagram, но более высокоуровневую, где каждый узел — другая диаграмма взаимодействия.
С детальным описанием всех элементов нотации и правил их использования можно ознакомиться в официальной документации.
Применение UML к разным задачам
Почти любые задачи описания и проектирования при разработке можно решить с помощью UML. Примеры таких задач перечислены в таблице.
Задача;Диаграммы
На графике ниже приведена статистика упоминания различных видов диаграмм (информация взята из мета-анализа встречаемости UML в статьях и исследованиях по ИТ-дисциплинам за 2021 год, числа указывают абсолютное количество публикаций). В рабочей практике статистика применимости похожая.

- Class Diagram
- Activity Diagram
- Sequence Diagram
- Use Case Diagram
Курс Анны Вичуговой
«Основы ООП и разработка UML-моделей»
- основы объектно-ориентированного проектирования
- построение всех основных видов UML-диаграмм: диаграммы Use Cases, Sequence, Class Diagram, и др.
- выбор подходящих UML диаграмм для формализации требований, процессов и структур
| Посмотреть программу курса |

Применение UML разными ролями
Если в поиске на сайте HeadHunter ввести ключевое слово «UML», то получится, что в подавляющем большинстве случаев знание этой нотации нужно системным аналитикам (реже — бизнес-аналитикам). По описаниям вакансий можно также заметить, что знание UML требуется в основном специалистам уровня middle и senior.
- Кто такой системный аналитик? Профессия, требования, зарплата
- Как выполнить тестовое задание на должность системного аналитика
Давайте разберемся, кому и какие UML-модели могут пригодиться в работе.