Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТРПО_Бугай_Шпоры_телефон.doc
Скачиваний:
11
Добавлен:
23.09.2019
Размер:
5.94 Mб
Скачать
  1. Диаграмма классов: шаблоны

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

Чаще всего в качестве шаблона выступает суперкласс, параметры которого уточняются в его классах-потомкам.

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

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

Canvas 129

В данном примере отмечен тот факт, что класс "Адрес" может быть получен из шаблона "Связный_список" на основе актуализации формальных параметров k, i, s фактическими атрибутами дом, квартира, улица.

С использованием этого класса-шаблона можно получить класс "точки на плоскости" следующим образом:

Canvas 108

  1. Диаграмма классов: класс

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

Класс

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

Даже если какая-то секция атрибутов или операций пустая, то ее оставляют в обозначении класса.

Canvas 23

Имя класса

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

Примерами имен классов могут быть такие существительные, как: "сотрудник", "компания", "руководитель", и так далее.

Для обозначения имени абстрактного класса (не имеющего объектов) используется курсив.

Чтобы показать к какому пакету относится класс используют в имени разделитель "::". Синтаксис имени в этом случае следующий:

<имя пакета>::<имя класса>

Например в пакете "Банк" класс "Счет" может быть представлен именем Банк::Счет.

Атрибуты класса

Атрибуты (свойства) класса записываются во второй секции прямоугольника класса. Каждому атрибуту класса соответствует строка текста вида:

<квантор видимости ><имя атрибута>[кратность]:<тип атрибута>=<исходное значение>{строка-свойство}

Квантор видимости может принимать одно из трех возможных значений: "+" (public), "#" (protected), "-" (private).

Имя атрибута является единственным обязательным элементом рассматриваемой строки, идентифицирующим атрибут.

Кратность атрибута характеризует общее количество атрибутов данного типа в классе. Примерами задания кратности могут быть:

[0..1], [0..*], [1..3, 7..10], [1..3, 7..*]. Тип атрибута определяется языком спецификации соответствующей модели (иногда зависит от языка реализации).

Примерами задания имен и типов атрибутов классов могут быть следующие:

цвет: Color, имя_сотрудника: [1..2]:string форма:многоугольник.

Исходное значение определяет начальное значение атрибута в момент создания отдельного экземпляра класса (объекта). Например, выше перечисленные атрибуты могут быть дополнены следующим образом:

цвет:Color=(255,0,0)

имя_сотрудника[1..2]:string=Иван Иванович

форма:многоугольник=прямоугольник

Операция Операция представляет собой некоторый сервис, представляемый экземпляром класса по определенному требованию. Совокупность операций характеризует функциональный аспект поведения класса. Запись каждой операции выполняется строкой вида:

<квантор видимости><имя операции>(список параметров):<тип возвращаемого значения>{строка-свойство}

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

<вид параметра><имя параметра><выражение типа>=<значение по умолчанию>

Здесь вид параметра - одно из ключевых слов in, out или inout.

Операция с областью действия на весь класс показывается подчеркиванием имени и строки выражения типа.

Операция, которая не может изменять состояние системы, обозначается строкой-свойством.

Пример: "{запрос}". Для указания параллельности выполнения операции используется строка-свойство вида: {"concurrency=имя"}

где имя может принимать одно из следующих значений:

-последовательная (sequential); -параллельная (concurrent); -охраняемая (guarded).

В качестве примеров записи операций можно привести следующие:

  • + создать()

  • + нарисовать(форма:многоугольник=прямоугольник, цвет_заливки: Color=(0,0,255))

  • выдать_сообщение(): {"ошибка деления на ноль"}