Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материал по ооп.docx
Скачиваний:
3
Добавлен:
04.08.2019
Размер:
63.16 Кб
Скачать
  1. Интерфейсы, их связь с абстрактными классами. Реализация

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

  • 1924 – Шейнфиннель – простая теория функций

  • 1934 – Черч – Лямбда- Исчисление исследование теории множеств

  • 1971 – Скотт - Полные и непрерывные решетки

  • 80е – Скотт – исследование механизма определённых дескрипций

  • 90е – Вольфангаген – схема двухуровневой концентрализации

События в Математике:

Событие – соотнесение над объектом предметной области. Произв. семейство объектов может быть параметризовано не только типами, но и событиями.

События в программировании:

Событие – способ внедрения фрагмента в код с целью изменения поведения программы.

Делегаты – тип, который описывает сигнатуру метода (список, типы и последовательность параметров)

Преимущества СОП:

  • возможность моделирования произвольных реальных объектов

  • потенциальная лёгкость настройки интерфейса

  • программирование основанное на сценариях

  • гибкость реинженеринга ПО

  • строгое мат. осн-е (концептуализация)

процент повторного использования кода высокий

  1. Делегаты. События как особый вид делегатов

Делегаты – тип, который описывает сигнатуру метода (список, типы и последовательность параметров)

Управление событиями с помощью делегатов:

  • переменная делегат может иметь пустое значение null (метод не неазначен)

  • пустая переменная делегат не может быть вызвана (искл ситуация)

  • Переменные – делегаты являются объектами первого рода; их можно хранить в структурах данных, передавать как параметр.

Виды делегатов:

  1. Единичные

  • Содержат ссылку к одному единственному методу

  • Наследники класса System.Delegate

  1. Множественные

  • Содержат связанный список ссылок к методам

  • Наследник класса 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