Три основных принципа ООП
Классы объектов
Объекты
Основные понятия объектно-ориентированного программирования
В объектно-ориентированном программировании (ООП) главной отправной точкой при проектировании программы является не процедура, не действие, а объект.
Программа, построенная на принципах ООП, – это не последовательность операторов, не некий жесткий алгоритм, а совокупность объектов и способов их взаимодействия. Обмен информацией между объектами происходит посредством сообщений.
Объект. Назовем объектом понятие, абстракцию или любой предмет с четко очерченными границами, имеющий смысл в контексте рассматриваемой прикладной проблемы. Все объекты можно идентифицировать, между объектами можно установить отношение тождества (два Сидоровых Ивана – это разные люди, но они студенты одной группы).
Свойства. Свойства – перечень параметров объекта, которые определяют внешний вид и поведение объекта, выделяют уникальные особенности каждого экземпляра. К свойствам относятся: имя, тип, значение, цвет, размер и др. Состояние – совокупность всех свойств данного объекта.
Методы. Метод – это некоторое действие (операция), которое можно выполнять над данным объектом или команда, которую может выполнять объект. В результате с объектом что-то происходит, например он меняет местоположение, цвет, удаляется с экрана, перемещается в другое место.
События. Каждый объект способен реагировать на определенные события – это разновидность свойства объекта. События – сигналы, формируемые внешней средой, на которые объект должен отреагировать соответствующим образом. Для каждого объекта определено множество событий, на которые он может реагировать. Средой взаимодействия объектов являются сообщения, генерируемые в результате наступления различных событий. События наступают в результате действий пользователя (перемещен курсор, нажата кнопка мыши или клавиша на клавиатуре), а также в результате работы самих объектов. При возникновении события производится его обработка с помощью обработчика событий. Обработчики событий могут обращаться к методам и свойствам объекта. Для конкретных объектов могут быть определены обработчики каких-то из событий, которые и определяют реакцию данного объекта.
Таким образом, объект можно определить как совокупность свойств и методов, а также событий, на которые он может реагировать.
Классом называют особую структуру, которая выступает в качестве объектного типа данных, а объект – это конкретный экземпляр класса.
Каждый конкретный класс имеет свои особенности поведения и характеристики (свойства, методы, события) определяющие этот класс. Классы имеют иерархическую структуру. Наивысший уровень структуры – самый общий и самый простой, каждый последующий уровень более специфический и менее общий. Например,
Класс «Геометрический объект» | ||
Класс «Объемный» | Класс «Плоский» | |
Класс «С вершинами» | Класс «Без вершин» | |
Класс «Окружность» | Класс «Эллипс» |
Если характеристика уже однажды определена для более высокого уровня, то все уровни, расположенные ниже имеют ту же характеристику (если уж определена окружность, понятно, что вершин у нее нет). Таким образом, классы-наследники могут наследовать характеристики классов-родителей.
Инкапсуляция. С одной стороны объект, обладает определенными свойствами, которые характеризуют его состояние в данный момент. С другой стороны над объектами возможны операции, которые приводят к изменению этих свойств. Доступ к изменению свойств осуществляется только с помощью методов, присущих данному классу объектов. Есть метод, данное свойство данного объекта можно изменить, нет метода – нельзя. Методы как бы «окружают» свойства объекта, говорят, что свойства «инкапсулированы» в объект. Для обеспечения инкапсуляции класс не должен позволять прямого доступа к своим данным. Инкапсуляция – механизм скрытия всех внутренних деталей объекта, не влияющих на его поведение.
Наследование. Наследование определяет отношение между классами: объекты класса-наследника обладают всеми свойствами и методами объектов класса-родителя и не должны их повторно реализовывать. Т.е. один объект приобретает свойства другого объекта, добавляя к ним свойства, характерные только для него. Например,
Класс «Точка» (родитель) | Класс «Окружность» (наследник) | ||
Свойства | Методы | Свойства | Методы |
Координаты (x, y) | Перемещение | Координаты центра (x, y) | Перемещение |
Цвет | Изменение цвета | Цвет | Изменение цвета |
Радиус | Изменение радиуса |
Полиморфизм (имеющий много форм). К объектам разных классов можно применять один и тот же метод, вот только действовать этот метод будет по-разному. Например, к большинству объектов в Windows&Office можно применять одни и те же методы: копирование, перемещение, переименование, удаление и т.п. Однако, механизмы реализации этих методов для разных классов (файл в Windows и документ Word) неодинаковы. Полиморфизм – возможность использования одних и тех методов для объектов разных классов, только реализация этих методов будет индивидуальной для каждого класса.