DesignLearning

Static Structure diagram UML

Выдержки и откровенные копипасты из книги РНР. Объекты, шаблоны и методики программирования*.

Диаграммы классов — это один из аспектов UML (Unified Modeling Language - унифицированный язык моделирования), и именно они чаще всего употребляются в объектно-ориентированном проектировании. Очень полезны для описания объектно-ориентированных связей.

Описание классов

Как и следовало ожидать, классы являются главными составными элемента­ми диаграмм классов. На такой диаграмме класс представлен в виде именован­ного прямоугольника.

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

Обозначения имён классов

Для представления абстрактных классов на диаграмме имя класса выделя­ется курсивом, или же оно дополняется обозначением {abstract}.

Обозначение {abstract} — это пример ограничения. На диаграммах классов ограничения служат для описания порядка применения отдельных элементов. Специальных правил для указания текста в фигурных скобках не установлено. Он просто должен ясно давать пояснение каких-нибудь условий, устанавливаемых для элемента.

Интерфейсы определяются таким же образом, как и классы, за исключением того, что они должны включать стереотип <<interface>>

Обозначения атрибутов классов

Атрибуты перечисля­ются в той части диаграммы, которая располагается непосредственно под име­нем класса.

Первый знак в обозначении атрибута обозначает уровень видимости атрибута или управле­ния доступом к нему:

Знак Уровень видимости Описание
+ Общедоступный Доступность для всего кода
- Закрытый Доступность только для текущего класса
# Защищенный Доступность только для текущего класса и его подклассов

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

Обозначения методов классов

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

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

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

Описание отношений

Наследование и реализация

В языке UML отношения наследования описываются в виде обобщений. Это отношение обозначается сплошной линией, оканчивающейся незаполненной замкнутой стрелкой, ведущей от подкласса к родительскому классу.

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

Ассоциация

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

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

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

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

Явный вызов метода объекта из другого объекта, в котором первый объект внедрен как свойство, называется делегированием, а внедрённый объект является делегатом ссылающегося класса.

Агрегирование и композиция

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

При агрегировании объекты, на которые ссылаются, составляют основную часть объекта-контейнера, который их содержит, но они могут одновременно содержаться и в других объектах. Отношение агрегирования обозначается линией, которая начинается с незаполненного ромба. (Например: Класс Pupil состоит из учеников, но на один и тот же объект типа Pupil могут одновременно ссылаться различные экземпляры класса Schoolclass. Если же понадобится распустить школьный класс, для этого необязательно уда­лять ученика, который может посещать другие классы.)

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

Описание отношений использования

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

Отношение использования обозначается пунктирной ли­нией со стрелкой, имеющей незамкнутый контур на конце.

Использование примечаний

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

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

* Зандстра М. - РНР. Объекты, шаблоны и методики программирования. 5-е издание - 2019

Оставить комментарий

avatar
  Подписаться  
Уведомление о