Диаграмма классов Для моделирования статического вида системы с точки зрения проектирования. Может отображать различные взаимосвязи между объектами предметной области. Основа для диаграммы компонентов и развёртывания Используется для: моделирования словаря системы; для моделирования простых коопераций (Кооперация -- сообщество классов, интерфейсов и др. элементов, работающих совместно для обеспечения некоторого кооперативного поведения, более значимого, чем сумма состав. компонентов); для модел. логической схемы БД. Хорошо структур диаграмма классов обладает свойствами <...> Класс -- описание совокупности объектов с общими атрибутами, операциями, отношениями и семантикой. +----------------+ |Счёт | +----------------+ +----------------+ |проверить() | +----------------+ |исключение: | |кредит. карточка| |просрочена | +----------------+ Абстрактный класс не имеет экземпляров объектов. Для его изображения использ. курсив. В некоторых случаях необходимо явно указать, к какому пакету относится класс. Для этого исполлз. двоеточие. <имя_пакета>::<имя_класса> Атрибут -- именованное свойство класса, включающее описание множества значений, которые могут принимать экземпляры этого свойства. Атрибут -- абстракция состояния объекта. <квантор видимости><имя атрибута>[кратность]:<тип атрибута>=<исходное значение>{строка символов} Кванторы видимости: + (public) -- доступен или виден из любого другого класса пакета # (protected) -- не доступен для всех классов, за исключением подклассов данного класса - (private) -- закрыт для всех классов Если квантор отсутствует <...> Наряду с атрибутами можно использ. 3 свойства: - changeable - addOnly - frozen после инициализации объекта нельзя изменять его атрибуты default: changeable Кратность -- кол-во экземпляров класса В UML кратность задаётся в правом верхнем углу пиктограммы. Кратность может применяться к атрибутам. Операция представляет некоторый сервис, предоставляемый каждым экземпляром класса. <квантор видимости><имя операции>(<список параметров>):<тип возвращаемого значения>{строка свойств} Имя операции должно быть уникальным в пределах данного класса. Параметры могут принимать любое из след. значений: in -- входной out -- выходящий Для указания параллельности выполнения операций используется строка свойств {concurrency=имя} имя: - sequential - concurrent - guarded sequential: обеспечить единственное выполнение данной операции в системе concurrent: операция может выполняться параллельно guarded: все обращкения к операции должны быть строго упорядочены по времени. Интерфейс определяет границу между спецификацией абстракции и её реализацией. Интерфейс изображается в виде круга или прямоугольника. +------------------+ | "interface | |Датчик температуры| +------------------+ | ... | +------------------+ Объект -- отдельный экземпляр класса, который создаётся на этапе выполнения программы. +---------------------+ |квадрат:Прямоугольник| +---------------------+ |вершина=(1,10) | |цвет заливки=белый | +---------------------+ Шаблоны, или параметризованные классы Шаблон предназначен для оббозначения такого класса, который имеет один или более нефикс ированный формальный параметр. Обычно параметрами шаблонов служат типы атрибутов класса. - - - - - - - - - - - - - - + +--------+--------+список форм. парам. |имя шаблона- - - + - - - - - - - - - + +-----------------+ |список атрибутов | +-----------------+ |список операций | +-----------------+ Отношения между классами ассоциация (бинарная, парная, агрегация) композиция обобщение реализация зависимость Обобщение -- наследование родительского класса. Строки ограничения для обобщения: {complete} {disjoint} {incomplete} на диаграмме указаны не все классы-потомки {overlapping}