Камерон Хьюз - Параллельное и распределенное программирование на С++
- Название:Параллельное и распределенное программирование на С++
- Автор:
- Жанр:
- Издательство:Издательский дом «Вильямс»
- Год:2004
- Город:МоскваСанкт-ПетербургКиев
- ISBN:ISBN 5-8459-0686-5 (рус.)ISBN 0-13-101376-9 (англ.)
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Камерон Хьюз - Параллельное и распределенное программирование на С++ краткое содержание
Эта книга адресована программистам, проектировщикам и разработчикам программных продуктов, а также научным работникам, преподавателям и студентам, которых интересует введение в параллельное и распределенное программирование с использованием языка С++.
Параллельное и распределенное программирование на С++ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
mySchedule именованный экземпляр
mySchedule: student_schedule именованный экземпляр с именем класса
Поскольку реальное имя объекта может быть известно только для программы, которая его объявляет, то в системной документации, возможно, имеет смысл указывать анонимные экземпляры классов. Анонимный объект класса можно представить следующим образом.
:student_schedule
Такой тип обозначения м ожет оказаться удобны м в случае, когда в систе м е существует несколько экзе м пляров класса. Несколько экзе м пляров класса можно представить двумя способами: в виде объектов и в виде классов.
Количество экземпляров, которое может иметь класс, называется множественностью. Количество экземпляров класса (от нуля до бесконечности) можно указать на диаграм м е класса. Класс с нулевым количеством экземпляров является чистым абстрактным классом. Он не может иметь ни одного объекта, явно объявленного с использованием этого типа. Количество экземпляров может иметь нижнюю и верхнюю границы, которые также могут быть указаны на диаграмме класса. На рис. 10.2 показаны возможные варианты обозначения нескольких экземпляров класса на диаграмме класса (с помощью графических средств или значения множественности).
На рис. 10.2 множественность класса student_scheduleуказана как диапазон 1..7 ,а это означает, что наименьшее количество расписаний в нашей системе равно 1, а наибольшее — 7. Приведем еще несколько примеров обозначения множественности класса.
1Один экземпляр
1..nОт одного до заданного числа n.
1..* От одно г о до бесконечности
0..1От нуля до единицы
0* От нуля до бесконечности
*Бесконечное количество экземпляров
Безусловно, бесконечное количество экземпляров будет ограничено объемом внутренней или внешней памяти.
Рис. 10.2. Обозначение нескольких экземпляров класса с помощью графических средств и значения множественности |
Отображение информации об атрибутах и операциях класса
Диаграмма класса может содержать более подробную информацию об атрибутах иоперациях класса. В разделе атрибутов можно указать тип данных и/или значение по умолчанию (если оно предусмотрено) для класса и значения атрибутов для объектов. Например, типы данных, содержащиеся в разделе атрибутов класса student_schedule, могут иметь следующий вид.
StudentNumber : string;
Term : string
StudentSchedule : map >
ScheduleIterator : map >::iterator
Для oбъeктa mySchedule эти атрибуты могут принимать такие значения.
StudentNumber : string = «102933»
Term:string = «Spring»
Методы могут быть отображены с параметрами и с указанием типов возвращаемых ими значений.
studentSchedule(&X : map >) : void
StudentNumber () : string
Фу н кция studentSchedule() принимает значение courseдля заданного студента (course— это класс, который моделирует один курс обучения). Курсы для каждого дня недели хранятся в векторе. Контейнер mapустанавливает соответствие строки (дня недели) и вектора курсов (для заданного дня недели). Функция studentSchedule()возвращает void-значение, а функция 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-алгоритм. При этом можно использовать соответствующие свойства, например, такие.
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 |
Описание класса student_scheduleможно сделать еще более подробным, указав с помощью свойств, как использовать его (класса) атрибуты и операции.
Читать дальшеИнтервал:
Закладка: