События можно использовать, например, для организации активизации нескольких классов одновременно или создания цепочки обработчиков, каждый из которых может быть заменён на другой обработчик.
Задание, проиллюстрированное в примере:
Создать систему взаимодействующих классов: класс для хранения и управления коллекцией; класс, рассчитывающий среднее арифметическое; класс, рассчитывающий среднее геометрическое. Классы расчёта среднего, должны перерассчитывать при каждом добавлении или удалении элементов из коллекции.
Разработать систему «Железнодорожная касса». Пассажир делает заявку на станцию назначения, время и дату поездки. Система регистрирует Заявку и осуществляет поиск соответствующего Поезда. Пассажир делает выбор Поезда и получает Счет на оплату. Между классами могут передаваться разные сообщения.
Создать систему взаимодействующих классов: класс для приёма и хранения текста; классы для шифрования текста и передачи зашифрованного далее классу, принимающему шифровку и отображающему её. Классы шифрования в цепочке могут менять один, другого.
Создать систему взаимодействующих классов: класс для приёма и хранения списка чисел; классы для сортировки чисел и передачи отсортированного далее классу, принимающему и отображающему полученное. Классы сортировки в цепочке могут менять один, другого.
Разработать систему «Автобаза». Диспетчер распределяет заявки на Рейсы между Водителями и назначает для этого Автомобиль. Водитель может сделать заявку на ремонт. Диспетчер может отстранить Водителя от работы. Водитель делает отметку о выполнении Рейса и состоянии Автомобиля. Между классами могут передаваться разные сообщения.
Разработать систему «Вступительные экзамены». Абитуриент регистрируется на Факультет, сдает Экзамены. Преподаватель выставляет Оценку. Система подсчитывает средний бал и определяет Абитуриента, зачисленного в учебное заведение.
Создать систему взаимодействующих классов: класс для хранения графа и координат начала и окончания пути (на рёбрах графа отмечается может ли ребро использоваться для автомобиля, пешехода или общественного транспорта); класс, вычисления по графу кратчайший путь для автомобиля; класс, вычисления по графу кратчайший путь для пешехода; класс, вычисления по графу кратчайший путь для общественного транспорта. Классы расчёта путей, должны пересчитывать маршрут при каждом изменении координат начала или окончания маршрута.
Создать систему взаимодействующих классов: класс для хранения и управления списком; класс, определяющий, является ли список симметричным; класс, определяющий сколько различных значений содержится в списке. Классы определения, должны срабатывать при каждом добавлении или удалении элементов. Между классами могут передаваться разные сообщения.
Создать систему взаимодействующих классов: класс, описывающий окружность; класс, рассчитывающий периметр окружности; класс, рассчитывающий площадь окружности. Классы расчёта, должны срабатывать при каждом изменении в описании окружности.
Создать систему взаимодействующих классов: класс, описывающий треугольник; класс, определяющий, является ли треугольник прямоугольным; класс, определяющий, является ли треугольник равносторонним. Классы определения, должны срабатывать при каждом изменении в описании треугольника.
Создать систему взаимодействующих классов: класс, описывающий граф в виде матрицы смежности; класс, определяющий, есть ли в графе петли; класс, определяющий степень графа. Классы определения, должны срабатывать при каждом изменении в описании графа.
Создать систему взаимодействующих классов: класс, описывающий бинарное дерево; класс, определяющий, есть ли в дереве одинаковые вершины; класс, определяющий в дереве самый длинный путь. Классы определения, должны срабатывать при каждом изменении в описании дерева.
Создать систему взаимодействующих классов: класс, описывающий множество точек на двухмерной плоскости; класс, определяющий, такую точку, от которой сумма расстояние к другим точкам наименьшая; класс, определяющий три разные точки, которые составляют треугольник наибольшего периметра. Классы определения, должны срабатывать при каждом изменении в описании множества точек.
Создать систему взаимодействующих классов: класс, хранящий текст и информацию о длине строки и количестве строк на странице; класс, рассчитывающий количество слов в тексте; класс, рассчитывающий количество строк в тексте; класс, рассчитывающий количество страниц. Классы расчёта, должны срабатывать при каждом изменении текста.
Создать систему взаимодействующих классов: класс, хранящий список товаров (Наименование, цена за единицу); класс, рассчитывающий количество каждого наименования товара; класс, рассчитывающий цену каждого наименования товара; класс, рассчитывающий общую цену всех товаров. Классы расчёта, должны срабатывать при каждом добавлении или удалении товаров.
Создать систему взаимодействующих классов: класс, хранения графа с указанием расстояния для каждого ребра и операций перемещения объектов по этому графу; класс, рассчитывающий скорость перемещения каждого объекта; класс, рассчитывающий среднюю скорость перемещения всех объектов. Классы расчёта, должны срабатывать при каждом добавлении операции перемещения. В расчёте скоростей должны учитываться времена задержки объектов в вершинах графа.
Создать систему взаимодействующих классов: класс, хранения графа с указанием расстояния в километрах для каждого ребра и операций перемещения объектов, имеющих некоторую массу в тоннах, по этому графу; класс, рассчитывающий перемещенные тонно-километры каждого объекта; класс, рассчитывающий среднюю величину перемещенных тонно-километров всех объектов. Классы расчёта, должны срабатывать при каждом добавлении операции перемещения.
Создать систему взаимодействующих классов: класс, хранения графа с указанием расстояния в километрах для каждого ребра и операций перемещения объектов, имеющих некоторую длину в условных единицах, по этому графу; класс, рассчитывающий перемещенные условные единицы каждого объекта; класс, рассчитывающий среднюю величину перемещенных условных единиц всех объектов. Классы расчёта, должны срабатывать при каждом добавлении операции перемещения.
Создать систему взаимодействующих классов: класс, хранения данных, с операциями добавления и удаления; класс, сохраняющий данные в JSON; класс, сохраняющий данные в XML. Классы сохранения, должны срабатывать при каждом добавлении новых данных или удалении.
Создать систему взаимодействующих классов: класс, хранения графа станций с рёбрами перегонами и хранения операций с поездом (код операции – прибытие или отправление или проследование, время операции, код станции операции), с добавлением и удалением операций; класс, определяющий дефект пропуск операции – есть прибытия, нет отправления или есть отправление и нет прибытия; класс, определяющий дефект пропуск станции – отсутствуют операции по какой-либо станции графа. Классы определения, должны срабатывать при каждом добавлении или удалении операции.
Создать систему взаимодействующих классов: класс, хранения списка комплектующих автомобилей (марка авто, наименование комплектующего, цена комплектующего) с добавлением и удалением; класс, формирующий описание автомобиля каждой марки; класс, рассчитывающий цену автомобиля каждой марки со всеми комплектующими. Классы формирования и расчёта, должны срабатывать при каждом добавлении или удалении комплектующего.