Тема 1.2 Основные принципы ООП. Инкапсуляция. Наследование. Полиморфизм.



 

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

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

Прежде чем давать определение понятию объект, рассмотрим, что такое класс.

Класс – это определяемый пользователем тип, который включает в себя данные разных типов и операции над ними.

Объект – это экземпляр какого-либо класса.

Таким образом, класс – это описание, а объект – это то, что создано в соответствии с этим описанием. До создания объектно-ориентированных языков программирования, данные и операции над этими данными рассматривали как отдельные элементы. Что такое объект, достаточно просто можно понять, если вспомнить работу с записями. Записи состоят из полей, которые содержат данные разных типов (каждое поле записи имеет собственный тип данных).

Объекты – это тоже хранилища разных типов данных. Данные объекты называются полями (fields) и аналогичны полям записи. Но объекты в отличие от записей, содержат еще процедуры и функции, которые применимы к полям данного объекта. Эти процедуры и функции называются методами (methods). Изменять поля объекта можно при помощи свойств (properties) объекта. Каждое свойство объекта в Delphi представляет собой поле и методы, которые позволяют считывать значение поля и задавать его (так называемые методы доступа). Свойства можно изменять в процессе разработки приложения с помощью инспектора объектов.   

Существует 3 основных принципа объектно-ориентированного программирования — инкапсуляция, наследование и полиморфизм.

Объект — это сложная конструкция, свойства и поведение составных частей которой находятся во взаимодействии.

Объект – это совокупность свойств и методов, а так же событий на которые он может реагировать.

Инкапсуляция – объединение в единое целое данных и алгоритмов обработки этих данных. Данные – поля объекта, а алгоритмы – объектные методы.

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

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

TNewObject = class(TOldObject);

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

Унаследованные от класса-предка поля и методы доступны в дочернем классе; если имеет место совпадение имен методов, то говорят, что они перекрываются.

Поведение методов при наследовании, без преувеличения, является краеугольным камнем объектно- ориентированного программирования. В зависимости от того, какие действия происходят при вызове, методы делятся на три группы. В первую группу отнесем статические методы, во вторую — виртуальные (virtual) и динамические (dynamic) и, наконец, в третью — появившиеся только в Delphi 4 — перегружаемые (overload) методы.

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

Полиморфизм – это свойство родственных объектов (то есть объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами. В рамках Object Pascal поведенческие свойства класса определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках класса, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть его в потомке, т. е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющих разную алгоритмическую основу и, следовательно, придающих объектам разные свойства. Это и называется полиморфизмом объектов.

 


Дата добавления: 2018-08-06; просмотров: 539; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!