А.Н.
Павлов. Высокоуровневые методы информатики и программирования
1.1.
Сущность ООП
В теории программирования ООП определяется
как технология создания сложного программного обеспечения, которая основана на
представлении программы в виде совокупности объектов, каждый из которых
является экземпляром определенного типа (класса), а классы образуют иерархию с
наследованием свойств. Когда вы открываете любую программу Windows, вы видите окно с множеством
кнопок, разделов меню, окон редактирования, списков и т.п. Все это объекты.
Причем сами по себе они ничего не делают. Они ждут каких-либо событий – нажатия
пользователем клавиш и кнопок мыши, перемещения курсора и т.д. Когда происходит
подобное событие, объект получает сообщение об этом и как-то на него реагирует:
выполняет некоторые вычисления, разворачивает список, заносит символ в окно
редактирования. Вот такая программа Windows и есть объектно-ориентированная
программа, часто такие программы называют приложениями.
Приложение, построенное по принципам
объектной ориентации – это не последовательность каких-либо операторов, не
некий жесткий алгоритм. Объектно-ориентированная программа – это совокупность
объектов и способов их взаимодействия. Отдельным (и главным) объектом при таком
подходе во многих случаях можно считать пользователя программы. Он же служит и
основным, но не единственным, источником событий, управляющих приложением.
Базовыми
понятиями организации объекта при его взаимодействии с окружающей средой
являются: инкапсуляция, наследование и полиморфизм.
Инкапсуляция
(encapsulation) – это
способ связывания атрибутов и процедур для формирования объектов, т.е.
объединение в единое целое данных и алгоритмов (объектных методов) обработки
этих данных. Практическое применение инкапсуляции при создании программ
проявляется в том, что программист помещает атрибуты и процедуры их обработки в
специальный класс, следовательно, можно организовывать контроль вводимых
данных, таким образом происходит защита (скрытие) программного кода от
вмешательства со стороны. Пользователь может вводить данные, используя
интерфейс пользователя, но не может повлиять на механизм их контроля.
Разработчик может всегда видоизменить процедуру обработки и контроля данных.
Наследование (inheritance) – свойство
объектов порождать своих «потомков». В отношении «родитель-потомок» потомок
наследует все атрибуты и варианты поведения родителя, а родительские
спецификаторы доступа используются для контроля того, каким образом эти
унаследованные элементы будут доступны другим классам или функциям. Существует
три способа реализации наследования в программе: простое, множественное и многоуровневое
наследование. Каждый из этих типов позволяет классу обращаться к атрибутам и
поведению другого класса, используя немного разные методы.
Полиморфизм (polymorphism)
– свойство
родственных объектов решать схожие по смыслу проблемы разными способами. Технически
полиморфизм означает, что одна вещь может принимать много форм. В терминах
программирования «вещь» - это название метода, а «форма» - это поведение,
осуществляемое методом. Поэтому полиморфизм в терминах программирования
означает, что метод с одним названием может осуществлять множество вариантов
поведения. Если привести пример из окружающего мира, то представьте себе, что
необходимо включить или выключить питание компьютера, освещение в доме или
управлять напряжением в высоковольтной сети. Во всех случаях, механизмы
выполняют одинаковые действия (включают или выключают), но при этом, они
устроены совершенно по-разному.