- •1. Основные понятия объектно-ориентированного программирования как современной технологии создания программ.
- •Абстракция
- •Наследование
- •Полиморфизм
- •3. Достоинства ооп. Соотношение понятий объекта и класса при объектно-ориентированной разработке программ. Соотношение понятий объекта и класса
- •Достоинства ооп
- •Синтаксис и пример для c#:
- •Элементы класса:
- •6. Производные классы. Наследование свойств как принцип ооп.
- •8. Виртуальные методы. Поддержка полиморфизма.
- •9. Событийная модель как неотъемлемая часть современного программирования. Создание события. Рекомендации по использованию событий.
- •Сфера применения
- •Создание события
- •Механизм работы событий
- •10. Применение объектно-ориентированной технологии программирования в различных языках и средах программирования.
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.