Uploaded by tati_10000

Базовые понятия ООП

advertisement
Базовые понятия ООП. Основные принципы ООП.
План лекции
1.
Концепция ООП
2.
Принципы ООП
3.
Элементы ООП
4.
История
Объе́ктно-ориенти́рованное программи́рование (ООП) — методология
программирования, основанная на представлении программы в виде совокупности
объектов, каждый из которых является экземпляром определенного класса[1], а классы
образуют иерархию наследования
Необходимо обратить внимание на следующие важные части этого
определения: 1) объектно-ориентированное программирование использует в качестве
основных логических конструктивных элементов объекты, а не алгоритмы; 2) каждый
объект является экземпляром определенного класса; 3) классы образуют иерархии.
Программа считается объектно-ориентированной, только если выполнены все три
указанных требования. В частности, программирование, не использующее
наследование, называется не объектно-ориентированным, а программированием с
помощью абстрактных типов данных
Концепция объектно-ориентированного программирования
Концепцию ООП характеризует следующее:
1.
В качестве строительных блоков разрабатываемых приложений
используются объекты.
2.
Каждому классу соответствует некоторый объектный тип, представляющий
собой совокупность элементов данных и методов (для операций над данными),
скомпонованных вместе для удобства использования.
3.
Каждый объект – переменная, являющаяся представителем (экземпляром)
определённого класса.
4.
Классы связаны друг с другом соотношениями, с помощью которых
объекты могут расширяться; при этом описания существующих объектов могут
многократно использоваться при описании новых объектов.
5.
Представителями класса могут быть представители, как непосредственного
класса, так и любого класса предка.
Концепция ООП базируется на трёх основных принципах:

инкапсуляция;

полиморфизм;

наследование.
Инкапсуляция
Инкапсуляция – объединение данных и действий над ними в одном объектном
типе.
Наследование
Наследование – это способность одного класса использовать характеристики
(описание) другого. Наследование устанавливает между двумя классами отношение
«предок – потомок». Предок – это класс, предоставляющий свои возможности и
характеристики (описание) другим классам через механизм наследования. Класс,
который использует характеристики класса посредством наследования, называется
потомком. Непосредственный предок, от которого происходит данный класс,
называется родителем.
В Object Pascal используется модель простого наследования, т.е. класс-потомок
может иметь только одного родителя, класс-предок может иметь несколько потомков.
Полиморфизм
Полиморфизм – это возможность определения единого по имени действия (метода
в виде процедуры или функции), применимого ко всем объектам иерархии
наследования, т.е. возможность иметь несколько методов с одним и тем же именем для
различных объектов одной иерархии. Это средство для развития объектов в потомках.
Оно реализуется тем, что объект-потомок может добавлять и переопределять методы,
т.е. заменять методы предка на новые с теми же именами.
Класс
Класс является описываемой на языке терминологии исходного кода моделью ещё
не существующей сущности (объекта). Фактически он описывает устройство объекта,
являясь своего рода чертежом. Говорят, что объект — это экземпляр класса. При этом
в некоторых исполняющих системах класс также может представляться некоторым
объектом при выполнении программы посредством динамической идентификации типа
данных. Обычно классы разрабатывают таким образом, чтобы их объекты
соответствовали объектам предметной области.
Объект
Сущность в адресном пространстве вычислительной системы, появляющаяся
при создании экземпляра класса (например, после запуска
результатов компиляции исвязывания исходного кода на выполнение)
История
ООП возникло в результате развития идеологии процедурного
программирования, где данные и подпрограммы (процедуры, функции) их обработки
формально не связаны. Для дальнейшего развития объектно-ориентированного
программирования часто большое значение имеют понятия события (так
называемое событийно-ориентированное программирование) и компонента
(компонентное программирование, КОП).
Взаимодействие объектов происходит посредством сообщений. Результатом
дальнейшего развития ООП, по-видимому, будет агентно-ориентированое
программирование, где агенты — независимые части кода на уровне выполнения.
Взаимодействие агентов происходит посредством изменения среды, в которой они
находятся.
Языковые конструкции, конструктивно не относящиеся непосредственно к
объектам, но сопутствующие им для их безопасной (исключительные ситуации,
проверки) и эффективной работы, инкапсулируются от них в аспекты (в аспектноориентированном программировании). Субъектно-ориентированное
программирование расширяет понятие объекта посредством обеспечения более
унифицированного и независимого взаимодействия объектов. Может являться
переходной стадией между ООП и агентным программированием в части
самостоятельного их взаимодействия.
Первым языком программирования, в котором были предложены основные
понятия, впоследствии сложившиеся в парадигму, была Симула, но термин «объектная
ориентированность» не использовался в контексте использования этого языка. Взгляд
на программирование «под новым углом» (отличным от процедурного)
предложили Алан Кэй и Дэн Ингаллс в языке Smalltalk. Здесь понятие класса стало
основообразующей идеей для всех остальных конструкций языка (то есть класс в
Смолтоке является примитивом, посредством которого описаны более сложные
конструкции).
Наиболее распространённые в промышленности языки (С++, Delphi, C#, Java и
др.) воплощают объектную модель Симулы. Примерами языков, опирающихся на
модель Смолтока, являются Python, Ruby.
Контрольные вопросы
1.
Концепция ООП
2.
Принципы ООП
3.
Элементы ООП
4. История
Download