Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Перечень ответов по дисциплине «Объектно-ориент...docx
Скачиваний:
4
Добавлен:
03.09.2019
Размер:
68.64 Кб
Скачать

9. Событийная модель как неотъемлемая часть современного программирования. Создание события. Рекомендации по использованию событий.

Событийная модель программирования заключается в том, что выполнение программы определяется событиями — действиями пользователя (клавиатура, мышь), сообщениями других программ и потоков, событиями операционной системы (например, поступлением сетевого пакета).

Сфера применения

  • при построении пользовательских интерфейсов (в том числе графических);

  • при создании серверных приложений в случае, если по тем или иным причинам нежелательно порождение обслуживающих процессов;

  • при программировании игр, в которых осуществляется управление множеством объектов.

Создание события

Событие – это элемент класса, позволяющий ему посылать другим объектам уведомление о своем состояния.

Синтаксис объявления события для C#:

[атрибуты] [спецификаторы] event тип_события имя_события

Здесь тип_события – это тип делегата (ссылки на метод) метода-обработчика данного события.

Пример создания события для C#:

// Объявляем делегат метода-обработчика события (обработчик будет // принимать один аргумент типа Object)

public delegate void MyEventDelegate (Object o);

***

class Sender {

// Объявляем событие

public event MyEventDelegate MyEvent;

*** }

Механизм работы событий

Пример для C#:

// Объявление делегата метода-обработчика события MyEvent.

public delegate void MyEventDelegate(Object o);

// Класс-отправитель события

public class Sender

{

// Объявлем открытое событие MyEvent.

public event MyEventDelegate MyEvent;

// Здесь вызовем событие MyEvent и разошлем его всем подписчикам.

public void ShowThem()

{

if (MyEvent != null)

{

// Вызываем MyEvent и отправляем всем подписчикам,

// если таковые имеются. Через параметр передаем

// объект-отправитель события (для прикола, надо же что-то передать).

MyEvent(this);

}

}

}

// Один из классов-получателей события MyEvent.

public class Receiver_N

{

// Обработчик события в классе-получателе (подписчике).

public void MyEventHandler(Object o)

{

// Обрабатываем событие MyEvent от объекта класса Sender.

Console.WriteLine("Объект класса Receiver_N обработал событие от " + o.ToString());

}

}

В некоторой точке программы (в методе main) написать:

static void Main(string[] args)

{

// Создаем 1 объект класса отправителя и 2 объекта классов-получателей.

Sender s = new Sender();

Receiver_1 r1 = new Receiver_1();

Receiver_N rN = new Receiver_N();

// Подписываем 2 класса получателя на событие класса-отправителя.

s.MyEvent += new MyEventDelegate(r1.MyEventHandler);

s.MyEvent += new MyEventDelegate(rN.MyEventHandler);

// Отправляем события получателям.

s.ShowThem();

// Тупим, пока пользователь прочитает консоль.

Console.ReadLine();

}

Консольный вывод:

Объект класса Receiver_1 обработал событие класса от test.Sender

Объект класса Receiver_N обработал событие класса от test.Sender

Здесь test – название программы.

10. Применение объектно-ориентированной технологии программирования в различных языках и средах программирования.

Объектно-ориентированное программирование ― это методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного класса, а классы образуют иерархию на принципах наследуемости.

Достоинства ООП:

  • Использование при программировании понятий, близких к предметной области.

  • Возможность успешно управлять большими объемами исходного кода благодаря инкапсуляции, то есть скрытию деталей реализации объектов и упрощению структуры программы.

  • Возможность многократного использования кода за счет наследования.

  • Сравнительно простая возможность модификации программ.

  • Возможность создания и использования библиотек классов.

Объектно-ориентированное программирование возможно на следующих языках:

1. Чисто объектные (только ооп): Python, Java, C#, Ruby, AS3;

2. Гибридные (включают ООП-подсистему в исходно процедурный язык): C++, Delphi и Perl.

11