- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Параллельное и распределенное программирование на С++ - Хьюз Камерон
Шрифт:
Интервал:
Закладка:
MajorAgent Создает список имеющихся основных курсов
MinorAgent Создает список имеющихся непрофилирующих курсов
FilterAgent Фильтрует список курсов и генерирует список возможных курсов
ScheduleAgent Генерирует несколько вариантов расписаний на основе списка возможных курсов
Объект schedule_of_courses содержит все и м ею щ иеся курсы.
Объекты blackboard и schedule_of_courses доступны при параллельном к ним обращении со стороны нескольких агентов. В данном варианте сотрудничества оба эти объекта видимы для всех агентов. А г енты MajorAgent, MinorAgent, FilterAgent и ScheduleAgent вызывают методы объекта blackboard. Агенты MajorAgent и MinorAgent вызывают методы объекта schedule_of_courses. При этом а г енты Maj orAgent и MinorAgent имеют анало г ичную последовательность обращений к объектам blackboard и schedule_of_courses.
MajorAgentl: currentDegreePlan()
MajorAgent2 : coursesTaken()
MajorAgent3 : scheduleOfCourses ()
MajorAgent4 : suggestionsForMajor ()
MinorAgentl:currentDegreePlan()
MinorAgent2:coursesTaken()
MinorAgent3:scheduleOfCourses()
MinorAgent4:suggestionsForMinor()
Как видите, к имени активного объекта, который вызывает эти методы, присоединяется порядковый номер. Оба объекта параллельно вызывают методы объектов blackboard и schedule_of_courses. Все эти методы параллельно синхронизированы и защищены от одновременного вызова. Методы masterList() и possibleCourses() имеют свойство guarded. Одни объекты могут модифицировать содержимое курсов, а другие— считывать его. Поэтому методы masterList () и possibleCourses () защищены разрешением только последовательного к ним доступа (EREW).
Последовательность передачи сообщений между объектами
В то время как в диаграмме сотрудничества основное внимание уделяется структурной организации и взаимодействию объектов, совместно выполняющих некоторую за-далу или реализующих прецедент (вариант использования системы), в диаграмме последовательностей акцент ставится на временном упорядочении вызовов методов или процелур, составляющих данную задалу или прецедент. В диаграмме последовательностей имя каждого объекта или консгрукции отображается в собственном прямоугольнике. Все прямоугольники размещаются в верхней части диаграммы, вдоль ее оси X. В диаграмму следует включать только основных исполнителей прецедента и наиболее важные функции, в противном случае диаграмма будет перенасыщена деталями и утратит свою полезность. Объекты упорядочиваются слева направо, начинал с объекта или про-целуры, которая является инициатором действия для большинства второстепенных объектов или процедур. Вызовы функций отображаются вдоль оси Y сверху вниз в порядке возрастания значения времени. Под каждым прямоугольником наносятся вертикальные линии, представляющие «жизненные пути» (линии жизни) объектов. Стрелки со сплошной заливкой наконечника, направленные от линии жизни одного объекта клинии жизни другого, обозначают вызовы функций или методов (причем такая стрелка всегда направлена от инициатора вызова). Стрелки с «реберными» наконечниками имеют обратное направление (т.е. к инициатору вызова), обозначая возврат из функции или метода. Каждый вызов функции помечается ее именем. Помимо имени, при необходимости отображается информация об аргументах и условиях вызова, например:
[list != empty]
getResults()
Функция или метод не выполнится, если заданное условие не будет истинны м. Методы, которые должны быть вызваны несколько раз (напри м ер, при считывании значений из структуры), предваряются признако м итерации (*).
На рис. 10.10 показана диагра мм а последовательностей для объектов систе м ы составления расписания. Чтобы не перегружать эту де м онстрационную диагра мм у, количество объектов в ней ограничено лишь тремя. В диаграммах последовательностей для параллельных объектов или процедур используются символы активизации. Си м вол активизации представляет собой прямоугольник, отображаемый на линии жизни объекта. Наличие символа активизации означает активность объекта или процедуры. Символы активизации используются в случае, когда объект обращается к другому объекту без блокирования. Тем самым становится понятно, что объект или процедура продолжает выполняться или быть активной. На рис. 10.10 показано, что объект blackboard всегда активен. Он порождает объект schedule _agent и нс блокируется. Объект schedule_agent вызывает метод blackboard.masterList() и ожидает получения от него списка курсов. Как упоминалось выше, возвра щ ение метода обозначается стрелкой с «реберным» наконечником. Метод schedule_agent затем вызывает один из собственньвс методов createSchedules (). Для обозначения вызова объектом одного из собственных методов используется специальный символ, состоя щ ий из символа активизации и стрелки вызова. Символ активизации при этом накладывается на уже имеющийся символ активизации. Линия выходит из исходного символа активизации, а ее стрелкауказывает надополнительный символ. После передачи объектом schedule_agent результатов своей работы путем вызова метода blaekboard.possibleSchedule () объект blackboard аннулирует его. Аннулирование обозначается большим символом «X» в конце линии жизни объекта. Стрелка вызова метода, исходящал из объекта blackboard и указываю щ ая на символ «X», означает, что инициатором аннулирования является объект blackboard. Объект blackboard затем порождает объект filter_agent и опять-таки не блокируется. Объект filter_agent вызывает метод blackboard.possibleSchedules () и ожидает получения от него вариантов расписаний. Объект filter_agent после этого вызывает один из собственных методов filterCourses (). После передачи результатов объект filter_agent ликвидирует себя. Объект blackboard последовательно вызывает собственные методы organizeSolution () и updateRecords (), а затем также ликвидируется.
Деятельность объектов
Язык UML можно использовать для моделирования видов деятельности объектов — участников конкретной операции или прецедента. В этом случае строится диаграмма (видов) деятельности, которая представляет собой блок-схему, отражающую последовательные и параллельные действия (или виды деятельности) объектов, принимаю щ их участие в выполнении конкретной задачи. На этой диаграм м е с по м о щ ью стрелок указывается направление передачи управления для соответствую щ их видов деятельности. В то вре м я как в диагра мм ах сотрудничества основное внимание уделяется передаче управления от объекта к объекту, в диагра м мах последовательностей — временному упорядочению потоков выполнения, в диаграммах деятельности акцент ставится на передаче управления от одного действия (или вида деятельности) к другому. В результате действия (или вида деятельности) изменяется состояние объекта или возвра щ ается некоторое значение. Содержи м ое действия (или вида деятельности) называется состоянием действия (или вида деятельности). Состояние объекта представляется в это м случае как конкретный м о м ент в потоке выполнения.
Рис. 10.10. Диаграмма последовательностей некоторых объектов системы составления расписаний