Similar presentations:
история создания 1ч ООП
1. История создания ООП Базовые понятия ООП Основные принципы ООП
2.
Практически сразу после появления языковтретьего поколения (1967 г.) ведущие
специалисты в области программирования
выдвинули идею преобразования постулата
фон Неймана: «данные и программы
неразличимы в памяти машины». Их
цель заключалась в максимальном
сближении данных и программы. Решая
поставленную задачу, они столкнулись с
задачей, решить которую без
декомпозиции оказалось невозможно.
Усилия многих программистов и системных
аналитиков, направленные на
формализацию подхода, увенчались
успехом.
3.
• Декомпозиция — метод, которыйиспользует структуру задачи и позволяет
разбить решение общей большой задачи на
решение последовательности меньших
задач.
• Декомпозиция ООП происходит не по
алгоритмам, а по объектам,
использующимся при решении задачи.
Данная декомпозиция уменьшает размер
программных систем благодаря повторному
использованию общих механизмов.
4.
•Были разработаны три основополагающихпринципа того, что потом стало называться
объектно-ориентированным
программированием (ООП):
- наследование;
- инкапсуляция;
- полиморфизм.
•Результатом их первого применения стал
язык Simula -1
5. Первый объектно-ориентированный язык Simula
Язык Simula был создан в компьютерном центре в
Норвегии. Он предназначался для моделирования
ситуаций реального мира. Особенностью Simula
было то, что программа, написанная на языке, была
организована по объектам программирования.
Объекты имели инструкции, называемые
методами, и данные, которые назывались
переменными. Методы и данные определяли
поведение объекта.
В процессе моделирования объект вел себя согласно
своему стандартному поведению и, в случае
необходимости, изменял данные для отражения
влияния назначенного ему действия.
6.
• Идеи Simula оказали серьезное влияние наболее поздние языки, такие как Smalltalk,
варианты Lisp, Osject Pascal и C++.
• Как выяснилось, ООП оказалось пригодным
не только для моделирования (Simula) и
разработки графических приложений
(SmallTalk), но и для создания большинства
других приложений, а его приближенность к
человеческому мышлению и возможность
многократного использования кода сделали
его одной из наиболее бурно используемых
концепций в программировании.
7.
• Объектно-ориентированный подход помогаетсправиться с такими сложными проблемами,
как:
o уменьшение сложности программного
обеспечения;
o повышение надежности ПО;
o обеспечение возможности модификации
отдельных компонентов ПО без изменения
остальных его компонентов;
o обеспечение возможности повторного
использования отдельных компонентов ПО.
8. объектно-ориентированные языки программирования
• Объектно-ориентированноепрограммирование развилось в
доминирующую методологию
программирования в начале и середине 1990
годов, когда стали широко доступны
поддерживающие ее языки
программирования, такие как Visual FoxPro
3.0, C++, Delphi.
• Доминирование этой системы
поддерживалось ростом популярности
графических интерфейсов пользователя,
которые основывались на техниках ООП .
9.
• Инструментарии ООП повлияли на популярностьсобытийно-ориентированного программирования
• Возможности ООП добавлялись во многие языки
того времени, включая Ada, BASIC, Fortran, Pascal и
другие. Их добавление в языки, изначально не
разрабатывавшиеся для поддержки ООП часто
приводило к проблемам с совместимостью и
поддержкой кода.
• Позднее стали появляться языки, поддерживающие
как объектно-ориентированный подход, так и
процедурный вроде Python и Ruby. Самыми
коммерчески успешными объектноориентированными языками можно назвать Visual
Basic Net, C# и Java.
10. Базовые понятия ООП
11. События.
Во многих средах визуального программированияреализована характеристика объекта – событие.
Событиями в ООП называется возможность
обработки так называемых сообщений (или
событий), получаемых от операционной системы
Windows или самой программы.
Данный принцип характерен для всех
компонентов среды, которые обрабатывают
различные события, возникающие в процессе
выполнения программы.
12. События
Событие — это некоторое действие, котороеактивизирует стандартную реакцию
объекта.
Событием может рассматриваться, например,
щелчок по кнопке мыши, наведение курсора
мыши на пункт меню, открытие вкладки и т.п.
Очередность выполнения тех или иных
действий определяется событиями,
возникающими в системе, и реакцией на них
объектов.
13. Классы и объекты в ООП
Классы и объекты в ООП — различныепонятия. Понятие класса в ООП – это тип
данных (такой же как, например, float или
struct), объект – конкретный экземпляр
класса (его копия), хранящийся в памяти
компьютера как переменная соответствующего
типа.
14. Классы и объекты в ООП
• Класс - это шаблон, описание ещё несозданного объекта. Класс содержит данные,
которые описывают строение объекта и его
возможности, методы работы с ним.
• Объект — экземпляр класса. То, что
«рождено» по «чертежу», то есть по описанию
из класса. В качестве примера объекта и
класса можно привести технический чертёж
для изготовления детали — это класс.
Выточенная же на станке по размерам и
указаниям из чертежа деталь - объект.
15. Классы и объекты в ООП
• Класс является структурным типомданных. Класс включает описание полей
данных, а также процедур и функций,
которые работают с этими полями данных.
• Метод ООП – это функции применительно
к классам.
• Классы имеют поля, свойства, которые
похожи на поля, но имеют дополнительные
описатели, определяющие механизмы
записи и считывания данных и методы —
функции, которые направлены на
изменение полей и свойств класса.
16. Основные принципы ООП
ОСНОВНЫЕ ПРИНЦИПЫООП
17.
• Принципы объектно-ориентированногопрограммирования помимо обработки
событий – это инкапсуляция,
наследование, и полиморфизм,
абстракция.
• Они особенно полезны и необходимы
при разработке тиражируемых и
простых в сопровождении приложений.
• Объект объединяет в себе методы и
свойства, которые не могут
существовать отдельно от него,
объект копируется как единое целое.
18. Понятие абстракции в ООП
• Абстракция — способ выделения самых значимыххарактеристик объекта, при этом менее значимые
отбрасываются. В ООП абстракция - работа только со
значимыми характеристиками. Суть этого принципа
в том, чтобы отделить составные объекты,
состоящие из «меньших» объектов, от этих самых
объектов, то есть от их составляющих.
19. Инкапсуляция
Инкапсуляция — это механизм программирования,объединяющий вместе код и данные, которыми он
манипулирует, исключая как вмешательство извне,
так и неправильное использование данных.
В объектно-ориентированном языке данные и код
могут быть объединены в совершенно автономный
черный ящик. Внутри такого ящика находятся все
необходимые данные и код. Когда код и данные
связываются вместе подобным образом, создается
объект. Иными словами, объект — это элемент,
поддерживающий инкапсуляцию.
20. Инкапсуляция
• Инкапсуляция - принцип ООП, позволяющийсобрать объект в пределах одной структуры или
массива, убрав способ обработки данных и сами
данные от «чужих глаз».
• Это одновременно и облегчает конечному
пользователю работу с программой, и защищает
данные и само приложение от постороннего
вмешательства. Пользователь может работать со
всем функционалом через интерфейс, не
задумываясь над тем, как программа работает.
21. Инкапсуляция
• Инкапсуляцию применяют:когда нужно сохранить некоторый участок
кода без изменений со стороны
пользователя;
когда нужно ограничить доступ к коду -
в связи с уникальностью используемых
техник, которые автор хочет оставить «при
себе»;
когда изменение кода повлечёт за собой
неработоспособность программы или её
взлом.
22. Инкапсуляция. Класс.
Основной единицей инкапсуляции в C++ является класс,который определяет форму объекта. Он описывает данные, а
также код, который будет ими оперировать. В C++ описание
класса служит для построения объектов, которые являются
экземплярами класса. Следовательно, класс, по существу,
представляет собой ряд схематических описаний способа
построения объекта.
Код и данные, составляющие вместе класс, называют
членами. Данные, определяемые классом, называют
полями, или переменными экземпляра. А код,
оперирующий данными, содержится в функциях-членах,
самым типичным представителем которых является метод. В
C++ метод служит в качестве аналога подпрограммы. (К
числу других функций-членов относятся свойства, события и
конструкторы.) Таким образом, методы класса содержат код,
воздействующий на поля, определяемые этим классом.
23. Принцип наследования ООП и подклассы
• наследование — касается способностиязыка позволять строить новые определения
классов на основе определений
существующих классов.
• Абсолютно все объекты создаются на
основе классов, при этом они наследуют
свойства и методы этих классов. В свою
очередь классы могут создаваться на основе
других классов (родителей), тогда такие
классы называют подклассами (потомки).
Подклассы наследуют все свойства и методы
родительского класса.
24. Принцип наследования ООП и подклассы
Для подкласса или класса-потомка можно
определить новые, свои собственные,
свойства и методы, а также изменять
методы класса-родителя. Изменение
свойств и методов родительского класса
отслеживается в подклассах, созданных на
основе этого класса, а также в объектах,
созданных на основе подклассов.
• Благодаря механизму наследования один
объект становится отдельным
экземпляром более общего класса.
25. Наследование классов в ООП
• Наследование — способность в ООП построить новыйкласс на основе уже заданного. При этом функционал
может как полностью совпадать, так и отличаться.
• Существует множественное наследование, при
котором у класса-наследника может быть несколько
«родителей». При этом класс наследует методы всех
своих отцов и матерей, что часто приводит к ошибкам .
26. Полиморфизм ООП
В ООП полиморфизм характеризуется каквзаимозаменяемость объектов с одинаковым
интерфейсом. Это можно объяснить так: класспотомок наследует экземпляры методов классародителя, но выполнение этих методов может
происходить другим образом, соответствующим
специфике класса-потомка, то есть
модифицированным.
27. Полиморфизм ООП
• В объектно-ориентированномпрограммировании можно использовать
одни и те же имена методов для
выполнения разных действий. То есть
результат выполнения одного и того же
метода зависит от типа объекта, к которому
применяется данный метод.
28. Принцип полиморфизма
• Полиморфизм — способность объектов самимопределять, какие методы они должны применить в
зависимости от того, где именно в коде они находятся.
То есть, объект может изменяться в зависимости от
своего местоположения и действовать по-разному, что
позволяет не заводить лишних структур. Иначе говоря:
один интерфейс — множество решений.
29. Пример стек
Допустим, что в программе требуются три разных
типа стеков: один — для целых значений, другой
— для значений с плавающей точкой, третий —
для символьных значений.
Алгоритм, реализующий все эти стеки, остается
неизменным, несмотря на то, что в них
сохраняются разнотипные данные. В языке, не
являющемся объектно-ориентированным, для этой
цели пришлось бы создать три разных набора
стековых подпрограмм с разными именами.
Благодаря полиморфизму для реализации всех
трех типов стеков в C++ достаточно создать лишь
один общий набор подпрограмм. Зная, как
пользоваться одним стеком, можно воспользоваться
и остальными.
30.
• В более общем смысле понятие полиморфизманередко выражается следующим образом: "один
интерфейс — множество методов". Это
означает, что для группы взаимосвязанных
действий можно разработать общий интерфейс.
• Полиморфизм помогает упростить программу,
позволяя использовать один и тот же интерфейс
для описания общего класса действий.
• Выбрать конкретное действие (т.е. метод) в
каждом отдельном случае — это задача
компилятора. Программисту не нужно делать это
самому. Ему достаточно запомнить и правильно
использовать общий интерфейс.
programming