Управление экспортом: открытый | реализацияМощность: выражение
Смысл этих пунктов вполне тождественен их графическим аналогам. Параметризованные и инстанцированные классы должны включать следующий пункт:
Параметры: список формальных или фактических параметров
Следующие необязательные пункты не имеют графических аналогов; они служат, чтобы указать некоторые функциональные аспекты класса:
Устойчивость: мгновенный | постоянныйПараллельность: последовательный | охраняемый | синхронный | активныйМесто в памяти: выражение
Первое из этих свойств отражает продолжительность жизни объектов класса: постоянная сущность - это та, чье состояние может пережить сам объект, в отличие от мгновенных, состояние которых пропадает с истечением времени жизни объекта.
Второе свойство показывает в какой степени класс может работать в многопоточной системе (см. главу 2). По умолчанию объекты - последовательные, то есть рассчитаны на один поток. Охраняемый и синхронный классы "выдерживают" несколько потоков. При этом охраняемый класс ожидает, что клиентские потоки как-то договариваются о взаимном исключении, с тем чтобы в каждый момент времени с ним работал только один из них. Синхронный класс сам обеспечивает взаимное исключение клиентов. Наконец, активный класс имеет свой поток.
Последний пункт содержит сведения об абсолютном или относительном потреблении памяти объектами этого класса. Мы можем использовать эту графу для подсчета размера класса или его экземпляров.
Спецификации операций. Для всех операций-членов классов и свободных подпрограмм наши спецификации включают следующие основные пункты:
Класс возвращаемого значения: ссылка на классАргументы: список формальных аргументов
Эти графы можно заполнить на выбранном языке реализации. В соответствии с правилами языка можно включить еще один пункт:
Квалификация: текст
В C++, например, этот пункт может содержать утверждение о том, является ли операция статической, виртуальной, чисто виртуальной или константой.
Использование дополнительных элементов обозначений требует введения дополнительной графы:
Доступ: открытый | защищенный | закрытый | реализация
Содержание этой графы зависит от языка реализации. Например в Object Pascal все атрибуты и операции всегда открытые, в Ada операции могут быть открытыми или закрытыми, а в C++ возможны любые из четырех указанных случаев.
Использование дополнительных элементов обозначений требует также введения графы
Протокол: текст
Эта графа происходит из практики языка Smalltalk: протокол операции не имеет семантического значения, а служит просто для именования логической совокупности операций, вроде таких, как initialize-release (инициализация-освобождение) или model access (доступ к модели).
Следующие необязательные графы не имеют графических аналогов и служат для формального описания семантики операции:
Предусловия: текст | ссылка на текст программы | ссылка на диаграмму объектовСемантика: текст | ссылка на текст программы | ссылка на диаграмму объектовПостусловия: текст | ссылка на текст программы | ссылка на диаграмму объектовИсключения: список исключительных ситуаций
Первые три пункта могут быть заполнены в любой из перечисленных форм. Последний содержит список исключительных ситуаций, содержащий имена соответствующих классов.
Последняя серия необязательных граф служит для описания некоторых функциональных аспектов операции:
Параллельность: последовательный | охраняемый | синхронныйПамять: выражениеВремя: выражение
Первые две аналогичны одноименным графам в спецификации класса. Третья - относительные или абсолютные оценки времени выполнения операции.
5.3. Диаграммы состояний и переходов
Существенное: состояния и переходы