Диаграмма класса может содержать более подробную информацию об атрибутах иоперациях класса. В разделе атрибутов можно указать тип данных и/или значение по умолчанию (если оно предусмотрено) для класса и значения атрибутов для объектов. Например, типы данных, содержащиеся в разделе атрибутов класса student_schedule, могут иметь следующий вид.
StudentNumber : string;
Term : string
StudentSchedule : map
ScheduleIterator : map
Для oбъeктa mySchedule эти атрибуты могут принимать такие значения.
StudentNumber : string = «102933»
Term:string = «Spring»
Методы могут быть отображены с параметрами и с указанием типов возвращаемых ими значений.
studentSchedule(&X : map
StudentNumber () : string
Фу
На диаграмме класса можно также отобразить свойства атрибутов и операций (методов). Свойства атрибутов помогают описать характер использования того или иного атрибута, что дает возможность судить о том, можно ли его изменять или нет. Так, для описания атрибутов используются три свойства: changeable, addOnly и frozen. Краткое описание этих свойств приведено в табл. 10.1. Для определения методов используются четыре свойства: isQuery, sequential, guarded и concurrent. Они также описаны в табл.10.1. Свойства sequential, guarded и concurrent имеют отношение к параллельности выполнения методов. Свойство sequential описывает операцию, ответственность за синхронизацию которой лежит на инициаторе ее вызова. Такие операции не гарантируют целостности объекта. Свойство guarded описывает параллельно выполняемую операцию с уже встроенной синхронизацией. При этом guarded -операции означают, что в каждый момент времени возможен только один ее вызов. Свойство concurrent описывает операцию, которая позволяет ее одновременное использование. Операции, описываемые с помощью свойств guarded и concurrent, гарантируют целостность объекта. Гарантия целостности объекта применима к операциям, которые изменяют состояние объекта.
Таблица 10.1. Свойс
{changeable} На значения этого типа атрибута никакие ограничения не налагаются
{addOnly} Для атрибутов, y которых значение множественности >1, можно добавлять дополнительные значения. Созданное значение невозможно удалить или изменить
{frozen} После инициализации объекта значение атрибута изменить нельзя
{isQuery} При выполнении метода этого типа состояние объекта остается неизменным. Этот метод возвращает значения
{sequential} Пользователи этого метода для обеспечения гарантии последовательного доступа к нему должны использовать синхронизацию. При множественном параллельном доступе к этому метолу целостность объекта подвергается опасности
{guarded} Синхронизированный последовательный доступ к этому методу встроен в объект; целостность объекта гарантируется
{concurrent} К этому метолу разрешен множественный параллельный доступ: целостность объекта при этом гарантируется
Свойства guarded и concurrent можно использовать для отражения модели PRAM (Parallel Random-Access Machine — параллельнал машина с произвольным доступом). Если метод считывает и/или записывает данные в память, доступную для другого метода, который также считывает и/или записывает данные в гу же память, этот метод может быть описан как PRAM-алгоритм. При этом можно использовать соответствующие свойства, например, такие.
CR (Concurrent Read — параллельное чтение) | concurrent |
CW (Concurrent Write — параллельная запись) | concurrent |
CRCW (Concurrent Read Concurrent Write — параллельное чтение, параллельная запись) | concurrent |
EW (Exclusive Write — монопольнал запись) | guarded |
ER (Exclusive Read — монопольное чтение) | guarded |
EREW (Exclusive Read Exclusive Write — монопольное чтение, монопольная запись) | guarded |