Диаграмма классов
Диаграммы классов – это наиболее часто используемый тип диаграмм, которые создаются при моделировании объектно-ориентированных систем, они показывают набор классов, интерфейсов и коопераций, а также их связи. На практике диаграммы классов применяют для моделирования статического представления системы, они служат основой для целой группы взаимосвязанных диаграмм – диаграмм компонентов и диаграмм размещения. На данном этапе для всех информационных объектов, выделенных в системе (см. п.1), разрабатываются классы с указанием полей, методов и свойств, которые регулируют процессы обработки данных (потоки данных заданной структуры) и/или структуры данных. На рисунке 9 приведен пример диаграммы классов на этапе проектирования. На ней определены основные сущности системы с указанием отношений между ними. В методологии UML приняты следующие обозначения для отношений между классами (см. таблицу 3). На рисунке 10 приведен пример диаграммы классов на этапе реализации. Таблица 3 – Основные виды отношений между классами
Отношение зависимости используется тогда, когда изменение одного элемента модели может потребовать изменения другого, зависимого от него. Это наиболее общая форма отношений, все другие виды отношений можно считать частным случаем данного. Отношение обобщения показывает, что некоторые объекты являются потомками базового (родительского) класса. Отношение ассоциации показывает, что некоторые объекты образуют группу (ассоциацию). Наиболее простая ассоциация ‑ бинарная. Для данного вида отношения может быть указана мощность связи (например, 1..*, один ко многим). Отношения агрегации и композиции рассматриваются как частный случай ассоциации. Агрегация – вид отношения, при котором один класс включает в себя в качестве составляющей другие классы (при этом используется вид декомпозиции «часть-целое»). Можно дать такое определение отношения агрегации [9]: «Агрегация – это отношение «часть-целое» между двумя равноправными объектами, когда один объект (контейнер) имеет ссылку на другой объект. Оба объекта могут существовать независимо: если контейнер будет уничтожен, то его содержимое — нет». При этом связь между объектами устанавливается на уровне ссылок. Композиция – частный случай агрегации, отличие заключается в том, что этом включаемый объект может существовать только как часть контейнера (целого), т.е. связь между объектами организуется «по значению». Для того чтобы понять назначение данных сущностей, входящих в диаграмму классов, необходимо представить в табличном виде (см. таблицы 4-5) описание всех классов с указанием типов классов и областей видимости (знаком «+» отмечена область видимости public, знаком «‑» ‑ private, знаком «#» ‑ protected). Таблица 4 – Описание класса «Базовая сущность»
Таблица 5 – Описание класса «Узел»
Существуют различные разновидности классов: − Абстрактный (abstract) класс не имеет экземпляров или объектов, для обозначения его имени на диаграмме используется наклонный шрифт (курсив); − Активный класс (active class) – класс, каждый экземпляр которого имеет свою собственную нить управления; − Пассивный класс (passive class) – класс, каждый экземпляр которого выполняется в контексте некоторого другого объекта; − Квалифицированное имя (qualified name) используется для того, чтобы явно указать, к какому пакету относится тот или иной класс. Для этого применяется специальный символ в качестве разделителя имени – двойное двоеточие «::»; − Имя класса без символа разделителя называется простым именем класса.
|