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