SlideShare a Scribd company logo
1 of 32
Объектно-ориентированное
программирование на С++
С ростом объема кода программы
становится невозможным удерживать в
памяти все детали
Необходимо структурировать
информацию, выделять главное и
отбрасывание несущественное
Этот процесс называется повышением
степени абстракции программы
В процедурном программировании задача
разбивается на более мелкие подзадачи и
оформляется в виде функций.
Любая функция может быть вызвана по
имени из любой точки программы,
включая другие функции или её же саму
(т.н. рекурсивный вызов).
Любая функция может быть вызвана
сколько угодно раз.
Имея библиотеку функций, можно
составить конечный продукт –
программу, всего лишь вызывая
нужные функций.
При этом программисту важен
интерфейс функций (имя и сигнатура) и
он абстрагируется от их реализации.
// … реализация всех функций
void main() {
SetWindOptions(); // настройки окна
Greeting(); // приветствие
Menu(); // показ главного меню
GameLevel(); // уровень игры
SaveState(); // запись игрового прогресса в файл
Shutdown(); // завершение работы программы
}
При таком подходе получаем
существенные преимущества:
 Проект разделяется на логические части –
упрощается чтение и отладка кода
 Возможность сопровождение проекта через
длительное время
 Возможность разделять проект на несколько
файлов
 Сокращается размер кода
 Функции могут принимать параметры
 Над проектом одновременно могут работать
несколько человек
НО!!!
Процедурное программирование –
подход, при котором функции и
переменные, относящиеся к какому-то
конкретному объекту свободно
располагаются в коде и никак между
собой не связаны
В вашем исходнике может оказаться
несколько функции, отвечающих за
генерацию или вывод карты на экран.
И никто, кроме их создателя, понятия
не имеет (без пристальной вычитки
кода), с какими именно объектами
работает та или иная функция.
Объектно-ориентированное
программирование –
подход, при котором функции и
переменные, относящиеся к
конкретному объекту объединены в
коде и тесно связаны между собой
Предметная область разбивается на
сущности (объекты реального мира).
Описание окружающего мира
осуществляется в терминах ОБЪЕКТОВ
над которыми производятся действия
(объект – центр концепции ООП).
Программист, решающий задачу,
мыслить в терминах, присущих самой
задаче, а не программированию в
целом.
В процедурном программировании
описание окружающего мира
осуществляется в терминах ДЕЙСТВИЙ
(акцент делается на составлении
правильного алгоритма).
Центральным элементе концепции
объектно-ориентированного
программирования - является объект.
Характеристики объекта - называются
свойствами или полями объекта.
 Что этот объект собой представляет?
 Что мы о нём знаем?
 Каковы его характеристики?
Действия, которые можно выполнить с
данным объектом - называются
методами объекта.
 Что этот объект умеет делать?
 Какие действия можно совершать над
объектом?
Тип объекта: Маркер
Поля:
- Модель: Friday
- Цвет колпачка: синий
- Длина корпуса: 138 мм
Методы:
- Чесаться
- Ковыряться
- Метко бросать
- Писать по доске
Снаружи объект принято рассматривать
как чёрный ящик (прибор с кнопками).
 Известно, что будет, если нажимать на кнопки
(есть инструкция).
 Неизвестно, как всё устроено внутри и почему оно
работает (да и не нужно знать, почему).
ООП основано на объектной
декомпозиции, т.е. выделения
сущностей предметной области и
оформление их в виде экземпляров
классов
Класс – это общее описание состояния
и поведения некоторой сущности, а
также правил по взаимодействию с ней.
Класс – это пользовательский тип
данных
 Объект (экземпляр класса) – это
отдельный представитель класса,
имеющий своё конкретное состояние,
и поведение, полностью
определяемое классом
 Поле – это переменная, связанная с
классом или объектом. Состояние
объекта хранится в его полях. Тип
данных поля задаётся при описании
класса.
 Метод – это функция или процедура,
принадлежащая классу или объекту.
Синтаксис объявления класса
class имя_класса
{
[private | protected | public]:
тип_поля1 имя_поля1;
тип_поля2 имя_поля2;
тип_поля3 имя_поля3;
...
тип1 имя_метода1(список_параметров)
{
...
}
тип2 имя_метода2(список_параметров)
{
...
}
...
} [список_переменных];
Способы доступа к компонентам
класса
• Открытый (public)
• Защищенный (protected)
• Закрытый (private)
Пример объявления класса
Инкапсуляция – это принцип, согласно
которому данные о свойствах объекта
и методы для работы с этими данными
объединены в единое целое - класс.
Важнейшее требование инкапсуляции -
скрытие состояния объекта от
внешнего мира
Инкапсуляция повышает степень
абстракции программы
Данные класса и реализация методов
класса находятся ниже уровня
абстракции, и для написания
программы информация о них не
требуется
Инкапсуляция позволяет изменить
реализацию класса без модификации
основной части программы, если
интерфейс остался прежним

More Related Content

Similar to ООП. Класс. Инкапсуляция

вспомогательные алгоритмы
вспомогательные алгоритмывспомогательные алгоритмы
вспомогательные алгоритмы
Елена Ключева
 
Android осень 2013 лекция 1
Android осень 2013 лекция 1Android осень 2013 лекция 1
Android осень 2013 лекция 1
Technopark
 
Фундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел ТайкалоФундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел Тайкало
Stanfy
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
7bits
 
Observable как атом приложения
Observable как атом приложенияObservable как атом приложения
Observable как атом приложения
Artem Bey
 

Similar to ООП. Класс. Инкапсуляция (20)

Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей. Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей.
 
вспомогательные алгоритмы
вспомогательные алгоритмывспомогательные алгоритмы
вспомогательные алгоритмы
 
Cтиль программирования
Cтиль программированияCтиль программирования
Cтиль программирования
 
Генерация программы поведения игрового персонажа по естественно-языковой спец...
Генерация программы поведения игрового персонажа по естественно-языковой спец...Генерация программы поведения игрового персонажа по естественно-языковой спец...
Генерация программы поведения игрового персонажа по естественно-языковой спец...
 
Интерактивные Прототипы или «Игра в Имитацию»
Интерактивные Прототипы  или «Игра в Имитацию»Интерактивные Прототипы  или «Игра в Имитацию»
Интерактивные Прототипы или «Игра в Имитацию»
 
Android осень 2013 лекция 1
Android осень 2013 лекция 1Android осень 2013 лекция 1
Android осень 2013 лекция 1
 
Фундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел ТайкалоФундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел Тайкало
 
Журнал "Про e-learning": выпуск 7
Журнал "Про e-learning": выпуск 7Журнал "Про e-learning": выпуск 7
Журнал "Про e-learning": выпуск 7
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
 
прак 15.docx
прак 15.docxпрак 15.docx
прак 15.docx
 
пр 15.docx
пр 15.docxпр 15.docx
пр 15.docx
 
Observable как атом приложения
Observable как атом приложенияObservable как атом приложения
Observable как атом приложения
 
Разработка бизнес приложений (3)
Разработка бизнес приложений (3)Разработка бизнес приложений (3)
Разработка бизнес приложений (3)
 
пр 2 ПО.docx
пр 2 ПО.docxпр 2 ПО.docx
пр 2 ПО.docx
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструменты
 
B pwin&ramus
B pwin&ramusB pwin&ramus
B pwin&ramus
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"
 
закон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelinesзакон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelines
 
закон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelinesзакон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelines
 
алгоритм 1 часть
алгоритм 1 частьалгоритм 1 часть
алгоритм 1 часть
 

ООП. Класс. Инкапсуляция

  • 2. С ростом объема кода программы становится невозможным удерживать в памяти все детали
  • 3. Необходимо структурировать информацию, выделять главное и отбрасывание несущественное
  • 4. Этот процесс называется повышением степени абстракции программы
  • 5. В процедурном программировании задача разбивается на более мелкие подзадачи и оформляется в виде функций. Любая функция может быть вызвана по имени из любой точки программы, включая другие функции или её же саму (т.н. рекурсивный вызов). Любая функция может быть вызвана сколько угодно раз.
  • 6. Имея библиотеку функций, можно составить конечный продукт – программу, всего лишь вызывая нужные функций. При этом программисту важен интерфейс функций (имя и сигнатура) и он абстрагируется от их реализации.
  • 7. // … реализация всех функций void main() { SetWindOptions(); // настройки окна Greeting(); // приветствие Menu(); // показ главного меню GameLevel(); // уровень игры SaveState(); // запись игрового прогресса в файл Shutdown(); // завершение работы программы }
  • 8. При таком подходе получаем существенные преимущества:  Проект разделяется на логические части – упрощается чтение и отладка кода  Возможность сопровождение проекта через длительное время  Возможность разделять проект на несколько файлов  Сокращается размер кода  Функции могут принимать параметры  Над проектом одновременно могут работать несколько человек
  • 9. НО!!! Процедурное программирование – подход, при котором функции и переменные, относящиеся к какому-то конкретному объекту свободно располагаются в коде и никак между собой не связаны
  • 10. В вашем исходнике может оказаться несколько функции, отвечающих за генерацию или вывод карты на экран. И никто, кроме их создателя, понятия не имеет (без пристальной вычитки кода), с какими именно объектами работает та или иная функция.
  • 11. Объектно-ориентированное программирование – подход, при котором функции и переменные, относящиеся к конкретному объекту объединены в коде и тесно связаны между собой
  • 12. Предметная область разбивается на сущности (объекты реального мира). Описание окружающего мира осуществляется в терминах ОБЪЕКТОВ над которыми производятся действия (объект – центр концепции ООП).
  • 13. Программист, решающий задачу, мыслить в терминах, присущих самой задаче, а не программированию в целом.
  • 14. В процедурном программировании описание окружающего мира осуществляется в терминах ДЕЙСТВИЙ (акцент делается на составлении правильного алгоритма).
  • 16. Характеристики объекта - называются свойствами или полями объекта.  Что этот объект собой представляет?  Что мы о нём знаем?  Каковы его характеристики?
  • 17. Действия, которые можно выполнить с данным объектом - называются методами объекта.  Что этот объект умеет делать?  Какие действия можно совершать над объектом?
  • 18. Тип объекта: Маркер Поля: - Модель: Friday - Цвет колпачка: синий - Длина корпуса: 138 мм Методы: - Чесаться - Ковыряться - Метко бросать - Писать по доске
  • 19. Снаружи объект принято рассматривать как чёрный ящик (прибор с кнопками).  Известно, что будет, если нажимать на кнопки (есть инструкция).  Неизвестно, как всё устроено внутри и почему оно работает (да и не нужно знать, почему).
  • 20. ООП основано на объектной декомпозиции, т.е. выделения сущностей предметной области и оформление их в виде экземпляров классов
  • 21. Класс – это общее описание состояния и поведения некоторой сущности, а также правил по взаимодействию с ней. Класс – это пользовательский тип данных
  • 22.  Объект (экземпляр класса) – это отдельный представитель класса, имеющий своё конкретное состояние, и поведение, полностью определяемое классом
  • 23.  Поле – это переменная, связанная с классом или объектом. Состояние объекта хранится в его полях. Тип данных поля задаётся при описании класса.
  • 24.  Метод – это функция или процедура, принадлежащая классу или объекту.
  • 25. Синтаксис объявления класса class имя_класса { [private | protected | public]: тип_поля1 имя_поля1; тип_поля2 имя_поля2; тип_поля3 имя_поля3; ... тип1 имя_метода1(список_параметров) { ... } тип2 имя_метода2(список_параметров) { ... } ... } [список_переменных];
  • 26. Способы доступа к компонентам класса • Открытый (public) • Защищенный (protected) • Закрытый (private)
  • 28. Инкапсуляция – это принцип, согласно которому данные о свойствах объекта и методы для работы с этими данными объединены в единое целое - класс.
  • 29. Важнейшее требование инкапсуляции - скрытие состояния объекта от внешнего мира
  • 31. Данные класса и реализация методов класса находятся ниже уровня абстракции, и для написания программы информация о них не требуется
  • 32. Инкапсуляция позволяет изменить реализацию класса без модификации основной части программы, если интерфейс остался прежним