Презентация на тему Объектно-ориентированное программирование

Презентация на тему Презентация на тему Объектно-ориентированное программирование, предмет презентации: Разное. Этот материал содержит 65 слайдов. Красочные слайды и илюстрации помогут Вам заинтересовать свою аудиторию. Для просмотра воспользуйтесь проигрывателем, если материал оказался полезным для Вас - поделитесь им с друзьями с помощью социальных кнопок и добавьте наш сайт презентаций ThePresentation.ru в закладки!

Слайды и текст этой презентации

Слайд 1
Текст слайда:

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

7.1 Что такое ООП?
7.2 Объекты и классы
7.3 Скрытие внутреннего устройства объектов
7.4 Иерархия классов


Слайд 2
Текст слайда:

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

7.1 Что такое ООП?


Слайд 3
Текст слайда:

Направления развития ПО

переход от расчетов по формулам к сложным задачам моделирования систем
увеличение объемов обрабатываемых данных
повышение сложности программ, увеличение их длины (до миллионов строк!)

В итоге:
коллективная разработка
каждый делает свою часть независимо от других
части программы легко «собрать» вместе


Слайд 4
Текст слайда:

Борьба со сложностью

«Техника борьбы со сложностью известна с античных времен: “Divide et impera” (разделяй и властвуй)».
Э. Дейкстра

подзадача 1

подзадача 3

подзадача 2.1

подзадача 2.2

подзадача 2.3

задача

подзадача 2

Декомпозиция – это разбиение системы на подсистемы, каждая из которых может изучаться отдельно.

Алгоритмическая декомпозиция

> 100 000 строк???


Слайд 5
Текст слайда:

Объектный подход

Люди воспринимают мир, состоящий из объектов (Р. Декарт).


Слайд 6
Текст слайда:

Абстракция

Абстракция – это выделение существенных характеристик объекта, отличающих его от других объектов.


Иллюстрация из книги Г. Буч, Объектно-ориентированный анализ и проектирование с примерами приложений на С++.


Слайд 7
Текст слайда:

Абстракция в программировании

программа – это множество взаимодействующих объектов (моделей)
объекты имеют свойства и поведение
объекты не «знают» внутреннее устройство других объектов



А

Б

В

Г

Объектная
декомпозиция


Слайд 8
Текст слайда:

Абстракция в программировании

Б

В

Верхний уровень:
определить, ЧТО делает каждый объект
определить ИНТЕРФЕЙС – способ обмена данными между объектами

Б

В

интерфейс

Нижний уровень:
определить, КАК работают объекты

интерфейс


интерфейс


Слайд 9
Текст слайда:


Что такое ООП?

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

уточнение следует…



Слайд 10
Текст слайда:

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

7.2 Объекты и классы


Слайд 11
Текст слайда:

Объектно-ориентированный анализ (ООА)

Задачи:
выделить взаимодействующие объекты
определить их существенные свойства


описать команды, которые объекты могут выполнить (поведение)


Слайд 12
Текст слайда:

Что такое объект?

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

Примеры:

«Подпрыгни!»

«Пли!»


Слайд 13
Текст слайда:

Объектная модель: пример


Объекты:
дорога
машины

светофоры

Класс – это множество объектов, имеющих общую структуру и общее поведение.

Классы объектов: Дорога, Машина


Слайд 14
Текст слайда:

Объектная модель: класс Дорога




название класса


свойства

поведение
(команды, методы)


Слайд 15
Текст слайда:

Объектная модель: класс Машина




Метод – это процедура или функция, принадлежащая классу объектов.

метод



Слайд 16
Текст слайда:

Класс Дорога в программе

type TRoad = class
Length: real;
Width: integer;
end;


поля

Поле – это переменная, принадлежащая объекту.

Объявление (описание) класса:

Аналогия: чертёж детали.

от type


Слайд 17
Текст слайда:

Класс Дорога в программе

var road: TRoad;

Переменная для работы с объектом:

адрес 12345

Ссылка – это переменная, в которую можно записать адрес объекта заданного типа.

road := TRoad.Create;

Конструктор – это метод класса, который вызывается для создания объектов этого класса.

?



Слайд 18
Текст слайда:

Создание объекта

type TRoad = class
Length: real;
Width: integer;
end;
var road: TRoad;
begin
road := TRoad.Create;
road.Length := 60;
road.Width := 3;
end.

описание класса

переменная-ссылка

вызов конструктора

значения полей


Слайд 19
Текст слайда:

Новый конструктор

Цель – определить начальные значения при создании объекта.

road := TRoad.Create (60, 3);

длина

ширина

Описание класса:

type TRoad = class
Length: real;
Width: integer;


end;

constructor Create(length0: real;
width0: integer);


Слайд 20
Текст слайда:

Новый конструктор

Реализация (программа) конструктора:

constructor TRoad. Create(length0: real;
width0: integer);
begin
if length0 > 0 then
Length := length0
else Length := 1;
if width0 > 0 then
Width := width0
else Width := 1;
end;

Length := length0;
Width := width0;

TRoad.

метод класса TRoad


Слайд 21
Текст слайда:

Класс Машина в программе

type TCar = class
X, V: real; { координата, скорость }
Y: integer; { номер полосы }
road: TRoad; { ссылка на дорогу }
procedure move; { двигаться вперед }
end;

адрес объекта класса Дорога

road: TRoad;


Слайд 22
Текст слайда:

Класс Машина в программе

procedure TCar.move;
begin
X := X + V; { при Δt = 1 }
if X > road.Length then
X := 0; { «перескочить» в начало }
end;

Равномерное движение:

V – перемещение за 1 интервал.

длина дороги, по которой едет машина


Слайд 23
Текст слайда:

Класс Машина в программе

type TCar = class
...
constructor Create(road: TRoad;
y0: integer; v0: real);
end;

Добавление конструктора:

адрес дороги

полоса

скорость


Слайд 24
Текст слайда:

Основная программа моделирования

const N = 3;
var road: TRoad;
cars: array [1..N] of TCar;
i: integer;
begin
road := TRoad.Create(60, N);
for i:=1 to N do
cars[i] := TCar.Create(road, i, 2.0*i);
repeat
for i:=1 to N do cars[i].move;
{ вывод расположения машин }
until keypressed;
end.


Слайд 25
Текст слайда:

Плюсы и минусы ООП

основная программа простая и понятная
каждый класс может разрабатывать отдельный программист независимо
можно использовать готовые классы в других программах

увеличение длины полной программы (с учетом описания классов)
замедление работы


Слайд 26
Текст слайда:

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

7.3 Скрытие внутреннего устройства объектов


Слайд 27
Текст слайда:

Зачем скрывать внутреннее устройство?

Иллюстрация из книги Г. Буч, Объектно-ориентированный анализ и проектирование с примерами приложений на С++.

борьба со сложностью
безопасность внутренних данных
возможность изменять «внутренности», не меняя интерфейс


Слайд 28
Текст слайда:

Инкапсуляция

Инкапсуляция («помещение в капсулу») – это скрытие внутреннего устройства объектов от других объектов.

Класс Перо (цвет и стиль линий):

type TPen = class
color: string;
end;

'FF00FF'

var pen: TPen;
...
pen := TPen.Create;
pen.color := '#%';
writeln(pen.color);

доступно всем!


Слайд 29
Текст слайда:

Инкапсуляция

Скрытие полей:

type TPen = class
private
FColor: string;
end;

от Field – «поле»

частный, закрытый

F

private

pen.color := 'FFFF00';
writeln(pen.color);



Слайд 30
Текст слайда:

Методы доступа к полю

type TPen = class
private
FColor: string;
public
function getColor: string;
procedure setColor(newColor: string);
end;

общедоступный

public

метод чтения

function getColor: string;

procedure setColor(newColor: string);

метод записи

Метод чтения:
функция без параметров
возвращает значение того же типа, что и поле
Метод записи:
процедура
принммает значение того же типа, что и поле


Слайд 31
Текст слайда:

TPen

Методы доступа к полю

function TPen.getColor: string;
begin
Result := FСolor;
end;
procedure TPen.setColor(newColor: integer);
begin
FColor := newColor;
end;

getColor

setColor

FColor

другой
объект


методы

поле


Слайд 32
Текст слайда:

Проверка при изменении поля

procedure TPen.setColor(newColor: integer);
begin
if { ошибочное значение } then
FColor := '000000' { чёрный цвет }
else FColor := newColor;
end;

В случае ошибочного значения установить черный цвет:

Length(newColor) <> 6

pen.setColor('FF00'); { ошибка: черный }
pen.setColor('FFFF00'); { запись }
writeln(pen.getColor); { чтение }

Использование:


Слайд 33
Текст слайда:

Свойство

pen.сolor := 'FFFF00'; { запись }
writeln(pen.color); { чтение }

Свойство – это способ доступа к внутреннему состоянию объекта, имитирующий обращение к его внутренней переменной.

TPen

FColor

другой
объект

color





getColor

setColor

методы

поле

свойство


Слайд 34
Текст слайда:

Свойство

type TPen = class
private
FColor: string;
function getColor: string ;
procedure setColor(newColor: string );
public
property сolor: string
read getColor write setColor;
end;

свойство

property

pen.сolor := 'FFFF00'; { запись }
writeln(pen.color); { чтение }

string

string

string

тип свойства

getColor

getColor

метод чтения

setColor

setColor

метод записи


Слайд 35
Текст слайда:

Изменяем способ хранения данных

FColor: string;

FColor: integer;


'FF00FF'

FF00FF16 = 16711935


'001234'

123416 = 4460


'0000A5'

A516 = 165




реализация

интерфейс


Слайд 36
Текст слайда:

Изменяем способ хранения данных

function TPen.getColor: string;
begin
Result := IntToHex (FColor,6);
end;

procedure TPen.setColor(newColor: string);
begin
if Length(newColor) <> 6 then
FColor := 0 { чёрный цвет }
else
FColor := StrToInt ('$' + newColor);
end;

IntToHex

X10 → X16 (строка)

6 знаков: '0000FF'

StrToInt

строка → число

шестнадцатеричное


Слайд 37
Текст слайда:

Свойства «только для чтения»

type TCar = class
private
Fv: real;
...
public
property v: real read Fv;
...
end;

property v: real read Fv;

свойство «только для чтения»


Слайд 38
Текст слайда:

Скрытие внутреннего устройства: итог

защита данных объекта
изменение внутреннего устройства не требует изменения других объектов, если сохранить интерфейс

длина программы ↑
замедление работы


Слайд 39
Текст слайда:

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

7.4 Иерархия классов


Слайд 40
Текст слайда:

Классификации

Фото: www.statesymbolsusa.org, xenianova.files.wordpress.com, spoon.com.ua, gerbl.ru

Фрукт

сочный съедобный плод дерева или кустарника

базовый класс


классы-наследники

Яблоко – это разновидность фруктов.
Яблоко наследует все свойства фруктов.


Слайд 41
Текст слайда:

Примеры наследования свойств

Человек

Работник школы

Ученик

Родитель

Администратор

Учитель

Технический работник

Директор

Завуч

Уборщик

Слесарь

Электрик

базовый класс


Слайд 42
Текст слайда:

Что такое наследник?

Класс Б является наследником класса А, если можно сказать, что Б – это разновидность А.


водоем

озеро

осёл

животное

цветок

ромашка

автомобиль

двигатель

автомобиль

грузовик

косточка

ягода



Слайд 43
Текст слайда:

Иерархия логических элементов

Логический элемент

с одним входом

с двумя входами

НЕ

И

ИЛИ


Слайд 44
Текст слайда:

Определение ООП

Объектно-ориентированное программирование – это такой подход к программированию, при котором
программа представляет собой множество взаимодействующих объектов,
… каждый из которых является экземпляром определенного класса, и …
классы образуют иерархию наследования.


Слайд 45
Текст слайда:

Класс «Логический элемент»

type
TLogElement = class
In1, In2: boolean;
Res: boolean;
procedure calc;
end;

Сравните (плюсы, минусы):

type
TLogElement = class
In1, In2: boolean;
function res: boolean;
end;

вычислить результат при изменении входов

вычислить результат по известным входам


Слайд 46
Текст слайда:

Скрываем данные (инкапсуляция)

type
TLogElement = class
private
FIn1, FIn2: boolean;
FRes: boolean;
procedure calc;
procedure setIn1(newIn1: boolean);
procedure setIn2(newIn2: boolean);
public
property In1: boolean read FIn1 write setIn1;
property In2: boolean read FIn2 write setIn2;
property Res: boolean read FRes;
end;

читать прямо из поля

свойство «только для чтения»


Слайд 47
Текст слайда:

Процедура изменения входа

procedure TLogElement.setIn1(newIn1: boolean);
begin
FIn1 := newIn1;
calc;
end;

Проблемы:
как написать метод calc?
для элемента «НЕ» доступ ко второму входу не нужен!


Слайд 48
Текст слайда:

Метод calc

невозможно написать для базового класса


разный у всех логических элементов
наследники должны его переопределять!


недоступен для других объектов

Абстрактный метод – это метод, который объявляется, но не реализуется в классе.

Виртуальный метод – это метод, который могут переопределять классы-наследники.


Слайд 49
Текст слайда:

Метод calc

type
TLogElement = class
private
...
protected
procedure calc; virtual; abstract;
public
...
end;

procedure calc; virtual; abstract;

protected

виртуальный

абстрактный

защищенный

Абстрактный класс – это класс, содержащий абстрактный метод («фрукт»).


Слайд 50
Текст слайда:

Как «скрыть» свойство In2?

type
TLogElement = class
private
...
protected
property In2: boolean read FIn2 write setIn2;
procedure calc; virtual; abstract;
public
...
end;

property In2: boolean read FIn2 write setIn2;


Слайд 51
Текст слайда:

Классы-наследники: TNot

type
TNot = class(TLogElement)
procedure calc; override;
end;

override;

переопределить

наследник от …

procedure TNot.calc;
begin
FRes := not FIn1;
end;


Слайд 52
Текст слайда:

Классы-наследники: TLog2In

TLog2In = class(TLogElement)
public
property In2;
end;

свойство становится общедоступным

наследник от …


Слайд 53
Текст слайда:

Классы-наследники: TAnd

type
TAnd = class(TLog2In)
procedure calc; override;
end;

override;

переопределить

наследник от …

procedure TAnd.calc;
begin
FRes := FIn1 and FIn2;
end;


Слайд 54
Текст слайда:

Вернемся к setIn1…

procedure
TLogElement.setIn1 (newIn1: boolean);
begin
FIn1 := newIn1;
calc;
end;

calc;

какой метод вызывается?

вызвать процедуру = перейти по заданному адресу памяти
в классе TLogElement метод calc не реализован (нет кода, нет адреса)
каждый наследник имеет свой метод calc


Слайд 55
Текст слайда:

Обычный вызов процедуры

...
calc;
...

...
call AB12
...

Паскаль

Ассемблер


процедура

AB12 ...
AB14 ...
AB16 ...
...


Статическое связывание: адрес процедуры известен и сразу записывается в машинный код!


Слайд 56
Текст слайда:

Динамическое связывание (при выполнении)

...
calc;
...

Паскаль


TNot.calc

методы классов

TAnd.calc

TOr.calc




виртуальный метод

Виртуальный метод – это метод базового класса, который могут переопределить классы-наследники так, что конкретный адрес вызываемого метода определяется только при выполнении программы.


Слайд 57
Текст слайда:

Основная программа («И-НЕ»)

var elNot: TNot; { ссылки }
elAnd: TAnd;
A, B: boolean;
begin
elNot := TNot.Create; { создание объектов }
elAnd := TAnd.Create;
writeln('| A | B | not(A&B) ');
writeln('-------------------');
for A:=False to True do begin { перебор вариантов }
elAnd.In1 := A;
for B:=false to True do begin
elAnd.In2 := B;
elNot.In1 := elAnd.res; { связь элементов }
writeln('| ', integer(A), ' | ', integer(B),
' | ', integer(elNot.res));
end;
end;
end.

| A | B | not(A&B)
------------------
| 0 | 0 | 1
| 0 | 1 | 1
| 1 | 0 | 1
| 1 | 1 | 0


Слайд 58
Текст слайда:

Классы – в модуль!

unit log_elem;
{$mode objfpc}
interface { доступно другим модулям }
type
TLogElement = class
...
end;
... { объявление всех классов }
implementation { скрыто от других модулей }
procedure TLogElement.setIn1(newIn1: boolean);
begin
FIn1 := newIn1; calc;
end;
...
end.

interface

implementation

режим работы с объектами


Слайд 59
Текст слайда:

Основная программа

program logic;
{$mode objfpc}
uses log_elem ;
var elNot: TNot;
elAnd: TAnd;
...
begin
elNot := TNot.Create;
elAnd := TAnd.Create;
...
end.

unit log_elem ;
{$mode objfpc}
interface { доступно другим модулям }
...
implementation { скрыто от других модулей }
...
end.

log_elem

log_elem



Слайд 60
Текст слайда:

Обмен данными между объектами




&

«И»

«НЕ»


1

2

объект 1 должен «знать» адрес объекта 2
у объекта 2 должен быть метод, доступный объекту 2, с помощью которого он может передать данные


Слайд 61
Текст слайда:

Обмен данными между объектами

TLogElement = class
private
FNextEl: TLogElement; { адрес объект 2 }
FNextIn: integer; { номер входа объекта 2 }
...
public
procedure Link(nextElement: TLogElement;
nextIn: integer);
...
end;

метод для установки связи выхода с входом другого элемента


Слайд 62
Текст слайда:

Обмен данными между объектами

procedure TLogElement.Link
(nextElement: TLogElement;
nextIn: integer);
begin
FNextEl := nextElement;
FNextIn := nextIn;
end;

запомнить адрес и номер входа следующего элемента


Слайд 63
Текст слайда:

Обмен данными между объектами

procedure TLogElement.setIn1(newIn1: boolean);
begin
FIn1 := newIn1;
calc;
if FNextEl <> nil then
case FNextIn of
1: FNextEl.In1 := res;
2: FNextEl.In2 := res;
end;
end;

если связь установлена…

передать новые данные

аналогично для setIn2…


Слайд 64
Текст слайда:

Обмен данными между объектами

elNot := TNot.Create;
elAnd := TAnd.Create;
elAnd.Link(elNot, 1);
...
for A:=False to True do begin
elAnd.In1 := A;
for B:=False to True do begin
elAnd.In2 := B;
...
end;
end;

elAnd.Link(elNot, 1);

объект elAnd САМ сообщает объекту elNot, что его выход изменился

установить связь


Слайд 65
Текст слайда:

Конец фильма

ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики высшей категории,
ГОУ СОШ № 163, г. Санкт-Петербург
kpolyakov@mail.ru


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика