Объектно-ориентированное программирование
83.77K
Категория: ПрограммированиеПрограммирование

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

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

(ООП)
1

2.

До изобретения ООП (язык Симула 1967 г.) в
программировании использовалась идея процедурноориентированного программирования (отдельно данные,
отдельно процедуры (алгоритмы) их обработки.
Но с развитием вычислительной математики
оказалось, что нужны более сложные структуры
организации данных.
Идея ООП – связать данные и процедуры (алгоритмы)
их обработки в одно целое - объект.
Появился новый тип данных – КЛАСС.
КЛАСС - сложный структурированный тип данных, в
котором в одно целое связаны данные и процедуры
(алгоритмы) их обработки .
Объект – один экземпляр класса (одна переменная
этого типа).
Объект – ДИНАМИЧЕСКАЯ ПЕРЕМЕННАЯ.
2

3.

Основные принципы ООП:
- инкапсуляция;
- наследование;
- полиморфизм.
3

4.

Инкапсуляция
Инкапсуляция – объединение в единое целое
полей, свойств и методов (данных и алгоритмов их
обработки.
Данные называются полями объекта.
Процедуры (алгоритмы) обработки данных
называются методами объекта.
Библиотека классов в языке Object Pascal –
набор кирпичиков, из которых строятся
программы.
4

5.

Объявление класса
type
Tmyclass=class
a: integer; поля
b: string;
function Myfunc(c: integer):integer;
методы
procedure Myproc;
end;
5

6.

Объявление класса
Полем одного класса может быть другой
класс.
В описании класса могут быть только поля.
type
Tmyclass=class
a: integer;
поля
b: string;
end;
6

7.

Объявление класса
В описании класса могут быть только
методы.
type
Tmyclass=class
function Myfunc(c: integer):integer;
методы
procedure Myproc;
end;
7

8.

Объявление объекта
type
Tmyclass=class
класс
a: integer;
b: string;
function Myfunc(c: integer):integer;
procedure Myproc;
end;
var
ab: Tmyclass;
объект
8

9.

Обращение к полям и методам объекта
type
Tmyclass=class
a: integer;
b: string;
function Myfunc(c: integer):integer;
procedure Myproc;
end;
var
ab: Tmyclass;
Begin
Обращение к полям объекта
ab.a:=3;
ab.b:=‘Ура! Последняя презентация’;
ab.Myproc; Обращение к
методам объекта
9

10.

Наследование
Наследование – свойство объектов порождать своих
потомков.
Один класс может быть порожден от другого класса. Все
классы языка Object Pascal рождены от одного родителя
TObject.
Свойства объекта – потомка:
- автоматически наследует от родителя ВСЕ поля и методы;
- может дополнять объекты новыми полями и методами;
- может заменять (перекрывать) методы объекта-родителя
своими методами.
Любой объект может иметь много потомков, но только
одного родителя.
10

11.

Наследование
type
Tparentclass=class
родительский класс
procedure Work;
end;
Tchildclass=class (Tparentclass) класс – потомок
procedure Work1;
end;
var
ab: Tparentclass;
ab1: Tchildclass;
begin
ab.work;
ab1.work1;
end;
объект-родитель
объект-потомок
11

12.

Полиморфизм
Полиморфизм – свойство объектов, образованных от
одного родителя, решать схожие по смыслу проблемы
разными методами.
Изменяя алгоритм родительского метода в потомках,
программист придает потомкам новые свойства.
Для изменения метода нужно ПЕРЕКРЫТЬ его в
объекте-потомке: объявить в потомке ОДНОИМЕННЫЙ
метод и реализовать в нем новый алгоритм.
В результате в объекте-родителе и объекте-потомке
будут действовать два метода с одинаковыми именами, но
разными алгоритмами.
Такой метод перекрытия называют статическим.
12

13.

Полиморфизм
type
Tparentclass=class
procedure Work; родительский класс
end;
Tchildclass=class (Tparentclass)
класс – потомок
procedure Work;
procedure Work1;
end;
var
объект-родитель
ab: Tparentclass;
объект-потомок
ab1: Tchildclass;
begin
ab.work;
ab1.work;
ab1.work1;
end;
Два метода work с одинаковыми именами выполняют процедуру
work, но с помощью разных алгоритмов.
13

14.

Полиморфизм
СТАТИЧЕСКОЕ перекрытие (замещение) методов
реализуется компилятором. Он выбирает нужный
метод в зависимости от объекта.
Чаще
используется
ДИНАМИЧЕСКОЕ
замещение, которое происходит во время работы
программы. Для этого ЗАМЕЩАЕМЫЙ В
РОДИТЕЛЬСКОМ КЛАССЕ МЕТОД объявляется
как virtual (виртуальный), ЗАМЕЩАЮЩИЙ
МЕТОД объявляется как override (перекрытый).
Динамическое замещение позволяет использовать
методы объекта-потомка в объекте-родителе.
14

15.

Полиморфизм
type
Tvisualobject=class (TWinControl)
procedure Hide;
родительский класс
procedure Show:
procedure Draw; virtual;
end;
Tvisualchildobject=class (Tvisualobject)класс – потомок
procedure Hide;
procedure Show:
procedure Draw (f:boolean); override;
end;
Procedure Tvisualobject. Hide;
begin
Draw (false);
end;
Procedure Tvisualobject. Show;
begin
Draw (true);
end;
15

16.

Полиморфизм
Процедура Draw рисует у родителя и
потомка разные изображения. В результате
родительские методы Show и Hide будут
показывать и прятать изображения в
зависимости от метода Draw у своих потомков.
Такой процесс, позволяющий родительским
методам обращаться к методам своих потомков,
называется ВИРТУАЛИЗАЦИЕЙ.
16

17.

Полиморфизм
При компиляции, встретив слово virtual,
компилятор создает в памяти таблицу виртуальных
методов. Количество элементов этой таблицы равно
количеству виртуальных методов (не только данного
класса, но и его родителей). В таблице хранятся
адреса точек входа в каждый виртуальный метод.
Встретив
слово
override,
компилятор
в
родительскую таблицу помещает адрес точки входа
метода класса-потомка, и класс-родитель получает
возможность пользоваться этим методом классапотомка.
17

18.

Конструктор и деструктор объекта
В состав любого класса входят два
специальных метода:
- конструктор объекта;
- деструктор объекта.
Конструктор объекта создает объект в ОЗУ
(аналог процедуры new).
Деструктор объекта удаляет объект из ОЗУ
(аналог процедуры dispose).
Любое обращение к полям и методам
объекта возможно только после вызова
конструктора.
18

19.

Обращение к полям и методам объекта
type
Tmyclass=class
a: integer;
b: string;
constructor Create;
destructor Destroy;
end;
var
ab: Tmyclass;
Begin
ab:= Tmyclass.Create;
Создание объекта
ab.a:=3;
ab.b:=‘Ура! Последняя презентация’;
Обращение к полям объекта
FormCreate – cтандартный метод – конструктор объекта
Form
19
English     Русский Правила