SlideShare a Scribd company logo
1 of 15
1
Курс «Паскаль. Программирование на
языке высокого уровня»
Павловская Т.А.
Павловская Т.А. Паскаль. Программирование на языке высокого
уровня. Учебник. 2-е изд. — СПб.: ПИТЕР, 2010. — 464 с.
2
Лекция 6. Введение в объектно-
ориентированное программирование
Основные свойства, достоинства и недостатки
объектно-ориентированного подхода. Описание и
использование объектов. Экземпляры объектов.
Описание полей и методов. Директивы public и
private.
©Павловская Т.А.
(СПбГУ ИТМО) 3
Понятие объекта
 В реальном мире каждый предмет или процесс обладает
набором статических и динамических характеристик
(свойствами и поведением). Поведение объекта зависит
от его состояния и внешних воздействий.
 Понятие объекта в программе совпадает с обыденным
смыслом этого слова: объект представляется как
совокупность данных, характеризующих его состояние,
и функций их обработки, моделирующих его поведение.
Вызов функции на выполнение часто называют
посылкой сообщения объекту.
 При создании объектно-ориентированной программы
предметная область представляется в виде совокупности
объектов. Выполнение программы состоит в том, что
объекты обмениваются сообщениями.
©Павловская Т.А.
(СПбГУ ИТМО) 4
Абстрагирование и инкапсуляция
 При представлении реального объекта с помощью
программного необходимо выделить в первом его
существенные особенности и игнорировать
несущественные. Это называется абстрагированием.
 Таким образом, программный объект — это абстракция.
 Детали реализации объекта скрыты, он используется
через его интерфейс — совокупность правил доступа.
 Скрытие деталей реализации называется инкапсуляцией.
Это позволяет представить программу в укрупненном
виде — на уровне объектов и их взаимосвязей, а
следовательно, управлять большим объемом информации.
 Итак, объект — это инкапсулированная абстракция с
четко определенным интерфейсом.
©Павловская Т.А.
(СПбГУ ИТМО) 5
Наследование
 Важное значение имеет возможность многократного
использования кода. Для объекта можно определить
наследников, корректирующих или дополняющих его
поведение.
 Наследование применяется для:
 исключения из программы повторяющихся фрагментов кода;
 упрощения модификации программы;
 упрощения создания новых программ на основе
существующих.
 Благодаря наследованию появляется возможность
использовать объекты, исходный код которых недоступен,
но в которые требуется внести изменения.
 Наследование позволяет создавать иерархии объектов.
Иерархия представляется в виде дерева, в котором более
общие объекты располагаются ближе к корню, а более
специализированные — на ветвях и листьях.
©Павловская Т.А.
(СПбГУ ИТМО) 6
Полиморфизм
 ООП позволяет писать гибкие, расширяемые и
читабельные программы.
 Во многом это обеспечивается благодаря
полиморфизму, под которым понимается возможность
во время выполнения программы с помощью одного и
того же имени выполнять разные действия или
обращаться к объектам разного типа.
 Чаще всего понятие полиморфизма связывают с
механизмом виртуальных методов.
©Павловская Т.А.
(СПбГУ ИТМО) 7
Достоинства ООП
 использование при программировании понятий,
близких к предметной области;
 возможность успешно управлять большими объемами
исходного кода благодаря инкапсуляции, то есть
скрытию деталей реализации объектов и упрощению
структуры программы;
 возможность многократного использования кода за
счет наследования;
 сравнительно простая возможность модификации
программ;
 возможность создания и использования библиотек
объектов.
©Павловская Т.А.
(СПбГУ ИТМО) 8
Недостатки ООП
 некоторое снижение быстродействия программы,
связанное с использованием виртуальных методов;
 идеи ООП не просты для понимания и в
особенности для практического использования;
 для эффективного использования существующих
объектно-ориентированных систем требуется
большой объем первоначальных знаний;
 неграмотное применение ООП может привести к
значительному ухудшению характеристик
разрабатываемой программы.
©Павловская Т.А.
(СПбГУ ИТМО) 10
Понятие класса
 Класс является типом данных, определяемым
пользователем. Он должен представлять собой
одну логическую сущность, например, являться
моделью реального объекта или процесса.
Элементами класса являются данные и функции,
предназначенные для их обработки.
11©Павловская Т.А. (СПбГУ ИТМО)
Описание объектов - Паскаль
©Павловская Т.А.
(СПбГУ ИТМО) 12
Описание объектов
type имя = object
[ private ]
описание полей
[ public ]
заголовки методов
end;
©Павловская Т.А.
(СПбГУ ИТМО) 13
Пример описания объекта
unit monsters;
interface
uses Graph;
type monstr = object
procedure init(x_, y_, health_, ammo_ : word);
procedure attack;
procedure draw;
procedure erase;
procedure move(x_, y_ : word);
procedure getpos(var x_, y_ : word);
private
x, y : word;
health, ammo : word;
color : word;
end;
©Павловская Т.А.
(СПбГУ ИТМО) 14
Описание методов
implementation
procedure monstr.init(x_, y_, health_, ammo_ : word);
begin
x := x_;
y := y_;
health := health_;
ammo := ammo_;
color := yellow;
end;
procedure monstr.draw;
begin
setcolor(color); outtextXY(x, y, '@');
end;
procedure monstr.getpos(var x_, y_ : word);
begin
x_ := x; y_ := y;
end;
©Павловская Т.А.
(СПбГУ ИТМО) 15
procedure monstr.attack;
begin
if ammo = 0 then exit;
dec(ammo); setcolor(color);
outtextXY(x + 15, y, 'ба-бах!');
end;
procedure monstr.erase;
begin
setcolor(black); outtextXY(x, y, '@');
end;
procedure monstr.move(x_, y_ : word);
begin
if health = 0 then exit;
erase; x := x_; y := y_; draw;
end;
end.
©Павловская Т.А.
(СПбГУ ИТМО) 16
Экземпляры объектов
uses graph, crt, monsters;
var Vasia : monstr;
x, y : word;
gd, gm: integer;
begin
gd := detect; initgraph(gd, gm, '...');
Vasia.init(100, 100, 10, 10);
Vasia.draw; Vasia.attack; readln;
x := 110;
while x < 200 do begin
Vasia.move(x, x); inc(x, 7);
delay(200);
end;
readln;
end.
@ ба-бах!

More Related Content

Similar to введение в ооп

Сила парадигмы: обзор парадигм программирования
Сила парадигмы: обзор парадигм программированияСила парадигмы: обзор парадигм программирования
Сила парадигмы: обзор парадигм программирования
Vasiliy Sabadazh
 
C++ осень 2013 лекция 8
C++ осень 2013 лекция 8C++ осень 2013 лекция 8
C++ осень 2013 лекция 8
Technopark
 
C++ осень 2012 лекция 7
C++ осень 2012 лекция 7C++ осень 2012 лекция 7
C++ осень 2012 лекция 7
Technopark
 
содержательно 1
содержательно 1содержательно 1
содержательно 1
guestd40fac0
 
Ai lab
Ai labAi lab
Ai lab
aaa
 

Similar to введение в ооп (20)

Составные части объектного подхода
Составные части объектного подходаСоставные части объектного подхода
Составные части объектного подхода
 
введение в объектно ориентированный анализ
введение в объектно ориентированный анализвведение в объектно ориентированный анализ
введение в объектно ориентированный анализ
 
Сила парадигмы: обзор парадигм программирования
Сила парадигмы: обзор парадигм программированияСила парадигмы: обзор парадигм программирования
Сила парадигмы: обзор парадигм программирования
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.
 
ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОД...
ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОД...ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОД...
ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОД...
 
Programming Concepts
Programming ConceptsProgramming Concepts
Programming Concepts
 
МиСПИСиТ (введение)
МиСПИСиТ (введение)МиСПИСиТ (введение)
МиСПИСиТ (введение)
 
SPb BA & SA Night. Learning a New Business Domain [1.01, RUS]
SPb BA & SA Night. Learning a New Business Domain [1.01, RUS]SPb BA & SA Night. Learning a New Business Domain [1.01, RUS]
SPb BA & SA Night. Learning a New Business Domain [1.01, RUS]
 
C++ осень 2013 лекция 8
C++ осень 2013 лекция 8C++ осень 2013 лекция 8
C++ осень 2013 лекция 8
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.
 
C++ осень 2012 лекция 7
C++ осень 2012 лекция 7C++ осень 2012 лекция 7
C++ осень 2012 лекция 7
 
содержательно 1
содержательно 1содержательно 1
содержательно 1
 
Метапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScriptМетапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScript
 
принципы ооп и программирование классов в C#
принципы ооп и программирование классов в C#принципы ооп и программирование классов в C#
принципы ооп и программирование классов в C#
 
04 1 информатика 10-11. книга 1-шауцукова_2004
04 1  информатика 10-11. книга 1-шауцукова_200404 1  информатика 10-11. книга 1-шауцукова_2004
04 1 информатика 10-11. книга 1-шауцукова_2004
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"
 
закон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelinesзакон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelines
 
закон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelinesзакон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelines
 
Ai lab
Ai labAi lab
Ai lab
 
ООП. Класс. Инкапсуляция
ООП. Класс. ИнкапсуляцияООП. Класс. Инкапсуляция
ООП. Класс. Инкапсуляция
 

введение в ооп

  • 1. 1 Курс «Паскаль. Программирование на языке высокого уровня» Павловская Т.А. Павловская Т.А. Паскаль. Программирование на языке высокого уровня. Учебник. 2-е изд. — СПб.: ПИТЕР, 2010. — 464 с.
  • 2. 2 Лекция 6. Введение в объектно- ориентированное программирование Основные свойства, достоинства и недостатки объектно-ориентированного подхода. Описание и использование объектов. Экземпляры объектов. Описание полей и методов. Директивы public и private.
  • 3. ©Павловская Т.А. (СПбГУ ИТМО) 3 Понятие объекта  В реальном мире каждый предмет или процесс обладает набором статических и динамических характеристик (свойствами и поведением). Поведение объекта зависит от его состояния и внешних воздействий.  Понятие объекта в программе совпадает с обыденным смыслом этого слова: объект представляется как совокупность данных, характеризующих его состояние, и функций их обработки, моделирующих его поведение. Вызов функции на выполнение часто называют посылкой сообщения объекту.  При создании объектно-ориентированной программы предметная область представляется в виде совокупности объектов. Выполнение программы состоит в том, что объекты обмениваются сообщениями.
  • 4. ©Павловская Т.А. (СПбГУ ИТМО) 4 Абстрагирование и инкапсуляция  При представлении реального объекта с помощью программного необходимо выделить в первом его существенные особенности и игнорировать несущественные. Это называется абстрагированием.  Таким образом, программный объект — это абстракция.  Детали реализации объекта скрыты, он используется через его интерфейс — совокупность правил доступа.  Скрытие деталей реализации называется инкапсуляцией. Это позволяет представить программу в укрупненном виде — на уровне объектов и их взаимосвязей, а следовательно, управлять большим объемом информации.  Итак, объект — это инкапсулированная абстракция с четко определенным интерфейсом.
  • 5. ©Павловская Т.А. (СПбГУ ИТМО) 5 Наследование  Важное значение имеет возможность многократного использования кода. Для объекта можно определить наследников, корректирующих или дополняющих его поведение.  Наследование применяется для:  исключения из программы повторяющихся фрагментов кода;  упрощения модификации программы;  упрощения создания новых программ на основе существующих.  Благодаря наследованию появляется возможность использовать объекты, исходный код которых недоступен, но в которые требуется внести изменения.  Наследование позволяет создавать иерархии объектов. Иерархия представляется в виде дерева, в котором более общие объекты располагаются ближе к корню, а более специализированные — на ветвях и листьях.
  • 6. ©Павловская Т.А. (СПбГУ ИТМО) 6 Полиморфизм  ООП позволяет писать гибкие, расширяемые и читабельные программы.  Во многом это обеспечивается благодаря полиморфизму, под которым понимается возможность во время выполнения программы с помощью одного и того же имени выполнять разные действия или обращаться к объектам разного типа.  Чаще всего понятие полиморфизма связывают с механизмом виртуальных методов.
  • 7. ©Павловская Т.А. (СПбГУ ИТМО) 7 Достоинства ООП  использование при программировании понятий, близких к предметной области;  возможность успешно управлять большими объемами исходного кода благодаря инкапсуляции, то есть скрытию деталей реализации объектов и упрощению структуры программы;  возможность многократного использования кода за счет наследования;  сравнительно простая возможность модификации программ;  возможность создания и использования библиотек объектов.
  • 8. ©Павловская Т.А. (СПбГУ ИТМО) 8 Недостатки ООП  некоторое снижение быстродействия программы, связанное с использованием виртуальных методов;  идеи ООП не просты для понимания и в особенности для практического использования;  для эффективного использования существующих объектно-ориентированных систем требуется большой объем первоначальных знаний;  неграмотное применение ООП может привести к значительному ухудшению характеристик разрабатываемой программы.
  • 9. ©Павловская Т.А. (СПбГУ ИТМО) 10 Понятие класса  Класс является типом данных, определяемым пользователем. Он должен представлять собой одну логическую сущность, например, являться моделью реального объекта или процесса. Элементами класса являются данные и функции, предназначенные для их обработки.
  • 10. 11©Павловская Т.А. (СПбГУ ИТМО) Описание объектов - Паскаль
  • 11. ©Павловская Т.А. (СПбГУ ИТМО) 12 Описание объектов type имя = object [ private ] описание полей [ public ] заголовки методов end;
  • 12. ©Павловская Т.А. (СПбГУ ИТМО) 13 Пример описания объекта unit monsters; interface uses Graph; type monstr = object procedure init(x_, y_, health_, ammo_ : word); procedure attack; procedure draw; procedure erase; procedure move(x_, y_ : word); procedure getpos(var x_, y_ : word); private x, y : word; health, ammo : word; color : word; end;
  • 13. ©Павловская Т.А. (СПбГУ ИТМО) 14 Описание методов implementation procedure monstr.init(x_, y_, health_, ammo_ : word); begin x := x_; y := y_; health := health_; ammo := ammo_; color := yellow; end; procedure monstr.draw; begin setcolor(color); outtextXY(x, y, '@'); end; procedure monstr.getpos(var x_, y_ : word); begin x_ := x; y_ := y; end;
  • 14. ©Павловская Т.А. (СПбГУ ИТМО) 15 procedure monstr.attack; begin if ammo = 0 then exit; dec(ammo); setcolor(color); outtextXY(x + 15, y, 'ба-бах!'); end; procedure monstr.erase; begin setcolor(black); outtextXY(x, y, '@'); end; procedure monstr.move(x_, y_ : word); begin if health = 0 then exit; erase; x := x_; y := y_; draw; end; end.
  • 15. ©Павловская Т.А. (СПбГУ ИТМО) 16 Экземпляры объектов uses graph, crt, monsters; var Vasia : monstr; x, y : word; gd, gm: integer; begin gd := detect; initgraph(gd, gm, '...'); Vasia.init(100, 100, 10, 10); Vasia.draw; Vasia.attack; readln; x := 110; while x < 200 do begin Vasia.move(x, x); inc(x, 7); delay(200); end; readln; end. @ ба-бах!