Интерфейсы, их связь с абстрактными классами. Реализация
Понятие события в математике и программировании. Моделирование событий
· 1924 – Шейнфиннель – простая теория функций
· 1934 – Черч – Лямбда- Исчисление исследование теории множеств
· 1971 – Скотт - Полные и непрерывные решетки
· 80е – Скотт – исследование механизма определённых дескрипций
· 90е – Вольфангаген – схема двухуровневой концентрализации
События в Математике:
Событие – соотнесение над объектом предметной области. Произв. семейство объектов может быть параметризовано не только типами, но и событиями.
События в программировании:
Событие – способ внедрения фрагмента в код с целью изменения поведения программы.
Делегаты – тип, который описывает сигнатуру метода (список, типы и последовательность параметров)
Преимущества СОП:
· возможность моделирования произвольных реальных объектов
· потенциальная лёгкость настройки интерфейса
· программирование основанное на сценариях
· гибкость реинженеринга ПО
· строгое мат. осн-е (концептуализация)
процент повторного использования кода высокий
Делегаты. События как особый вид делегатов
Делегаты – тип, который описывает сигнатуру метода (список, типы и последовательность параметров)
Управление событиями с помощью делегатов:
· переменная делегат может иметь пустое значение null (метод не неазначен)
· пустая переменная делегат не может быть вызвана (искл ситуация)
· Переменные – делегаты являются объектами первого рода; их можно хранить в структурах данных, передавать как параметр.
|
|
Виды делегатов:
1) Единичные
· Содержат ссылку к одному единственному методу
· Наследники класса System.Delegate
2) Множественные
· Содержат связанный список ссылок к методам
· Наследник класса System.MulticastDelegate
System.MulticastDelegate
· при вызове использует последовательно друг за другом все методы из списка
· если multicast делегат возвращает значение или имеет ref или out параметр, результат только последний вызванный метод от списка методов делегата
· если при вызове multicast делегата один из методов в списке вызвал исключение, следовательно метод из списка не вызывается
на практике single-cast делегаты почти не используются и под делегатом обыкновенно понимают multicast
События:
· Используются для уведомления о некотором событии
· Объект, вызывающий событие – инициатор (sender)
· Объект, получающий событие – получатель (receiver)
· Для получения события получатель предварительно подписывается на него
· События поддерживаются через делегаты
· События в с# специальные сущности делегата, декларированные ключевым словом event
Различия событий и делегатов:
· События не эквивалентны члену, переменной типа делегат
|
|
· События могут быть членами интерфейса, а делегаты не могут
· Вызов события может происходить только из класса в котором оно описано
· Доступ к событию по умолчанию синхронизирован
Конвенция для событий:
· делегат который использует события
· имеет имя обретаемое от глагола + EventHandler (SomeVerbEventHandler)
· возвращает void и принимает 2 параметра (объект-инициатор типа System.Object и объект, содержащий данные о событии типа, наследника System.EventArgs)
· события объявляют как public, начинаются с заглавной буквы и заканчиваются глаголом
· Для вызова событий создают protected метод, не имеющий возвращаемого типа
· метод-получатель (обработчик) события имеет имя объект_событие
Делегат System.EventHandler:
· Описывает ссылку к callback методу, который обрабатывает событие, для которого не нужна дополнительная информация
Часто используется в .net Framework
29. Исключения и их обработка в C#
· Заменяет процедурно-ориентированный подход, при котором любая функция возвращает код ошибки
· Упрощает написание и поддержку программного кода
· Проблемные случаи обрабатываются намного лучше
Генерация исключений (throwing):
1) имеет цель уведомить вызываемый код при возникновении проблемы
|
|
2) исполняет в случае наступления ошибки или др. ситуации
3) при возникновении прекращается исполнение программы и обходит стек на достижение catch блока для соответствующего исключения
4) в C# вызывается оператором throw
5) обычно создаётся объект, наследник класса System.Exeption, в котором описана проблема
6) в catch блоке вызываемое исключение может быть обработано
Собственные классы исключений:
1) В .NET программист может описать собственный класс исключений и создать иерархию классов
2) такая возможность лучше при управлении ошибками и др. ситуациями
3) для описания собственного исключения:
§ наследник класса System.ApplicationExeption
§ создать подходящий конструктор
§ можно добавить дополнительные свойства, дающие представление о проблеме
Конструкция try- finally:
§ выполняется в любом случае
§ используют для исполнения очищаемого кода, освобождения ресурсов
Алгоритм работы оператора try:
1. условия обнаружения (catch) проверяется последовательно
2. в итоге одно из условий всегда удовлетворяется (если список условий не пуст)
3. имя параметра exeption в условии обнаружения можно опустить
4. тип exeption должен быть выводим из System.Exeption
в случае отсутствия параметра exeption подраз-ся System.Exeption
|
|
Обработка исключений:
- В с# исключения могут быть обработаны программной конструкцией try {} catch {}
- catch может иметь несколько путей соответственно для различных исключений
- если error нет то catch не вызывается
- Большая часть стандартных методов выполняет генерацию исключений при проблемной ситуации
Дата добавления: 2018-04-15; просмотров: 535; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!