Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тех прог / Лекция 2. Парадигмы программирования.docx
Скачиваний:
32
Добавлен:
09.02.2016
Размер:
73.54 Кб
Скачать

6. Объектно-ориентированное программирование

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

Все объекты располагают некоторыми "собственными" данными, представленными как ссылки на другие объекты. Объекты могут обмениваться между собой сообщениями. При получении объектом сообщения запускается соответствующий ему обработчик, иначе называемый методом.

У объекта есть ассоциативный контейнер, который позволяет получить по сообщению его метод для его же обработки. Кроме этого, у объекта есть объект-предок. Если метод для обработки сообщения не найден, сообщение будет перенаправлено объекту-предку. Эту структуру в целом (таблица обработчиков + предки) из соображений эффективности выделяют в отдельный объект, называемый классом данного объекта. У самого объекта будет ссылка на объект, представляющий его класс. Объект по отношению к своему классу является экземляром. Так как классы тоже представлены, как объекты, поэтому существует класс, определяющий поведение, общее для всех классов. Такой класс принято называть метаклассом (абстрактный класс).

Основные свойства объектов:

1.) Так как один объект может воздействовать на другой исключительно при помощи посылки последнему сообщений, он не может как-либо непосредственно работать с собственными данными "собеседника", и, следовательно, не может нарушить их внутреннюю согласованность. Это свойство (сокрытие данных) принято называть инкапсуляцией.

2.) Так как объекты взаимодействуют исключительно засчет обмена сообщениями, объекты-собеседники могут ничего не знать о реализации обработчиков сообщений у своего визави. Взаимодействие происходит исключительно в терминах сообщений/событий, которые достаточно легко привязать к предметной области.

Это свойство, то есть описание взаимодействия исключительно в терминах предметной области - называют абстракцией.

3.) Объекты взаимодействуют исключительно через посылку сообщений друг другу. Поэтому если в каком-либо сценарии взаимодействия объектов заменить произвольный объект другим, способным обрабатывать те же сообщения, сценарий так же будет реализуем. Это свойство (возможность подмены объекта другим объектом со сходной структурой класса) называется полиморфизмом. Отношение "потомок-предок" на классах принято называть наследованием.

Все перечисленные свойства, встречаются и в других методологиях программирования. Так, локальные переменные инкапсулированы в процедуре.

Объектно-ориентированное программирование достаточно гармонично их сочетает. Синтаксис чистых объектно-ориентированных языков описывает всего одну операцию: послать сообщение M объекту А с параметрами B1..Вn.

Опр.: Параметры сообщения - это объекты, которые сами могут быть результатами обработки других сообщений.

Часто операцию "вернуть объект-результат" так же вводят в явном виде, хотя ее достаточно легко реализовать как посылку сообщения системному объекту "стек возвращаемых значений". Если в чистом объектно-ориентированном языке нужно создать новый класс - требуется послать классу-предку сообщение: "породить наследника" ( sublcass ). Существует класс, являющийся вершиной всей иерархии наследования (как правило, наываемый Object), так что предок будет у всех классов, даже явно его не имеющих. Для описания обработки сообщения нужно послать классу, в котором задается обработчик, сообщение: "установить новый обработчик сообщения" ( answer ).

Соседние файлы в папке тех прог