Интерфейсы, их связь с абстрактными классами. Реализация



Понятие события в математике и программировании. Моделирование событий

· 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!