Элементы графической нотации диаграммы классов
Центральное место в методологии ООАП занимает разработка логической модели системы в виде диаграммы классов . Диаграмма классов отражает, в частности, различные взаимосвязи между отдельными сущностями предметной области , такими как объекты и подсистемы, а также описывает их внутреннюю структуру и типы отношений. На данной диаграмме не указывается информация о временных аспектах функционирования системы. С этой точки зрения диаграмма классов может служить дальнейшим развитием концептуальной модели проектируемой системы
Диаграмма классов ( class diagram ) — диаграмма языка UML , на которой представлена совокупность декларативных или статических элементов модели, таких как классы с атрибутами и операциями , а также связывающие их отношения.
Диаграмма классов предназначена для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования. При этом диаграмма классов может содержать интерфейсы, пакеты, отношения и даже отдельные экземпляры классификаторов, такие как объекты и связи. Когда говорят о данной диаграмме, имеют в виду статическую структурную модель проектируемой системы, т.е. графическое представление таких структурных взаимосвязей логической модели системы, которые не зависят от времени.
КлассКласс (class) — абстрактное описание множества однородных объектов, имеющих одинаковые атрибуты , операции и отношения с объектами других классов .
Графически класс в нотации языка UML изображается в виде прямоугольника, который дополнительно может быть разделен горизонтальными линиями на разделы или секции ( рис. 5.1). В этих секциях могут указываться имя класса , атрибуты и операции класса .
На начальных этапах разработки диаграммы отдельные классы могут обозначаться простым прямоугольником, в котором должно быть указано имя соответствующего класса (рис. 5.1, а). По мере проработки отдельных компонентов диаграммы описание классов дополняется атрибутами (рис. 5.1, б) и операциями (рис. 5.1, в). Четвертая секция (рис. 5.1, г) не обязательна и служит для размещения дополнительной информации справочного характера, например, об исключениях или ограничениях класса , сведения о разработчике или языке реализации. Предполагается, что окончательный вариант диаграммы содержит наиболее полное описание классов , которые состоят из трех или четырех секций.
Даже если секции атрибутов и операций пусты, в обозначении класса они должны быть выделены горизонтальной линией, с тем чтобы отличить класс от других элементов языка UML . Примеры графического изображения конкретных классов приведены на рис. 5.2. В первом случае для класса Окружность (рис. 5.2, а) указаны только его атрибуты – точка на координатной плоскости, которая определяет расположение ее центра и длина радиуса окружности. Для класса Окно (рис. 5.2, б) указаны только его операции , при этом секция его атрибутов оставлена пустой. Для класса Счет (рис. 5.2, в) дополнительно изображена четвертая секция, в которой указано требование – реализовать резервное копирование объектов этого класса .
Имя классаИмя класса должно быть уникальным в пределах пакета, который может содержать одну или несколько диаграмм классов . Имя указывается в самой верхней секции прямоугольника, поэтому она часто называется секцией имени класса . В дополнение к общему правилу именования элементов языка UML , имя класса записывается по центру секции имени полужирным шрифтом и должно начинаться с заглавной буквы. Рекомендуется в качестве имен классов использовать существительные, записанные по практическим соображениям без пробелов. Необходимо помнить, что имена классов образуют словарь предметной области при ООАП.
В секции имени класса могут также находиться стереотипы или ссылки на стандартные шаблоны, от которых образован данный класс и, соответственно, от которых он наследует атрибуты и операции . В этой секции может также приводиться информация о разработчике данного класса и статус состояния разработки. Здесь также могут записываться и другие общие свойства этого класса , имеющие отношение к другим классам диаграммы или стандартным элементам языка UML .
Класс может иметь или не иметь экземпляров или объектов. В зависимости от этого в языке UML различают конкретные и абстрактные классы .
Конкретный класс ( concrete class ) — класс , на основе которого могут быть непосредственно созданы экземпляры или объекты.
Рассмотренные выше обозначения относятся к конкретным классам . От них следует отличать абстрактные классы .
Абстрактный класс (abstract class) — класс , который не имеет экземпляров или объектов.
Для обозначения имени абстрактного класса используется наклонный шрифт (курсив). В языке UML принято общее соглашение о том, что любой текст, относящийся к абстрактному элементу, записывается курсивом. Это имеет принципиальное значение , поскольку является семантическим аспектом описания абстрактных элементов языка UML .
В некоторых случаях необходимо явно указать, к какому пакету относится тот или иной класс . Для этой цели используется специальный символ разделитель – двойное двоеточие - ( :: ). Синтаксис строки имени класса в этом случае будет следующий: < Имя пакета >::< Имя класса > . Другими словами, перед именем класса должно быть явно указано имя пакета , к которому его следует отнести. Например, если определен пакет с именем Банк , то класс Счет в этом банке может быть записан в виде: Банк::Счет .