Структурное программирование приспособлено для описания действий, а ООП - для описания моделей.
Абстракция – это суждение или представление о некотором объекте, которое содержит только свойства, являющиеся существенными в данном контексте. Абстракция – эффективное средство против сложности программирования, поскольку оно позволяет программисту сосредоточиться на существенных свойствах объекта и игнорировать менее важные свойства.
Объектный стиль программирования связан с воздействием на объекты (говорят, с передачей объекту сообщений). При этом проектирование системы базируется на том условии, что никакая подсистема данного уровня не должна зависеть от устройства любой другой подсистемы этого уровня (взаимодействуют, но не зависят).
Инкапсуляция – это процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение; в частности, это скрытие переменных (полей) объекта с целью обеспечения доступа к ним только посредством методов класса. Идея инкапсуляции, в частности, реализована в модуле при его разделении на секции интерфейса и реализации.
Значительно упростить понимание сложных задач удается за счет усложнения иерархии. Усложнение иерархии от уровня к уровню достигается за счет наследования. Наследование – это расширение свойств наследника за счет принятия всех свойств предка.
ООП использует также понятие "полиморфизма", состоящее в возможности переопределять методы класса-родителя. Иными словами, полиморфизм означает общий род действий, которые могут быть выполнены многими специфическими путями, в зависимости от того, какие объекты выполняют действия. Неразрывно с полиморфизмом связано понятие динамического связывания – возможность отложить подстановку реального адреса некоторой подпрограммы-метода с этапа компиляции (раннее связывание) до момента выполнения программы (позднее связывание), что используется для стандартизации работы с объектами.
Любой объект в ООП обладает определенным поведением и состоянием. Поведение объекта – это то, как он реагирует на воздействия. Состояние объекта представляет собой суммарный результат его поведения.
Сообщение, посланное объекту, активизирует совокупность операций над объектом, которая называется методом. Задавая структуру обмена сообщениями между объектами, программист получает совокупность операций, которые и составляют программу.
Основные типы операций над объектами:
Таблица 3.1
Название
Содержание
Конструктор
Создает и инициализирует объект.
Деструктор
Освобождает объект, т.е. разрушает его.
Модификатор
Изменяет состояние объекта.
Селектор
Считывает состояние объекта без изменения этого состояния.
Итератор
Организует доступ ко всем частям объекта в строго определенной последовательности.
Рассмотрим пример объекта Окружность.
Внутренность объекта
ОКРУЖНОСТЬ А
Переменные
Позиция 15,20
Размер 5
Методы
Форма
- Маркер ПероВверх
- Маркер СдвигК : Позиция
- Маркер СдвигНа : Размер
- Маркер ПероВниз
- Маркер ЧертитьДугу : Размер,360
Высветить
- Маркер Черный
- Себе Форма
Стереть
- Маркер Белый
- Себе Форма
МАРКЕР
Методы
ПероВверх
ПероВниз
Черный
Белый
СдвигК : X,Y
СдвигНа : Z
ЧертитьДугу : R,j
...
Сообщения (операции) объекту ОкружностьА:
ОкружностьА.Высветить
ОкружностьА.Стереть
Тогда можно отобразить иерархию классов в следующем виде: