среда, 8 апреля 2015 г.

TRAINING: Event handling, C#

В этом году по событиям удалось провести два семинара: в первом разобрались с событиями, дописывали код. Второй сделали полностью практическим с возможностью написать весь код самостоятельно.
Задача, которая вызвала больше всего трудностей:
В библиотеке классов описать:
1. Тип-делегат
public delegate void ChainLenChanged(double r);

2. Класс Bead - бусина
2.1. Поле r – вещественное число, радиус бусины
2.2. Конструктор с вещественным параметром – радиус бусины. Если радиус – меньше или равен нулю, конструктор создаёт исключение ArgumentOutOfRangeException
3. Класс Chain – цепочка бусин
3.1. Поле l – вещественное число - длина нити, на которую нанизаны бусины
3.2. Поле beads – список List, составленный из бусин, нанизанных на нить
3.3. Событие ChainLenChangedEvent, определённое типом-делегатом ChainLenChanged
3.4. Свойство L. Обеспечивает доступ к полю – длина нити. При изменении длины нити активируется событие ChainLenChangedEvent
3.5. Конструктор с двумя параметрами – вещественной длиной нити len и целым числом N бусин в цепочке. Создание бусин выполняет вспомогательный метод CreateBeads(). Радиус бусин одинаков и равен целому
3.6. Метод CreateBeads() – создаёт объекты-бусины и добавляет их методы-обработчики в список обработчиков события ChainLenChangedEvent
4. Добавить в код событие, возникающее при изменении N - количества бусин на нити, предполагается, что длина нити не изменяется, а размеры бусин «подстраиваются» под длину нити так, чтобы занять её.
4.1. В обработчике этого события добавить код (в классе Bead)
4.1.1. Пересчёта и изменения радиуса бусин
5. Добавить в код событие, возникающее при изменении радиуса бусин
6. Подписать объект Chain на события 5
6.1. В обработчике пересчитывать количество бусин, которые могут поместиться на нити заданной длины, удалять/добавлять бусины
Тестирование кода выполните в консольном приложении.
(*) Создайте оконное приложение, в поле pictureBox визуализируйте цепочку бусин. Добавьте возможность изменения параметров цепочки и бусин. Свяжите изменения в интерфейсе с изменениями бусин и цепочки.
UPD: На Blogger нашла подробный пост по использованию событий.Developer's notes. Использование событий в C# Терминология мне не очень нравится, но вряд ли это может быть сильной придиркой к посту в блоге.

Комментариев нет:

Отправить комментарий