Разделы презентаций


Программирование на ЭВМ Лекция 9. Основы объектно-ориентированного

Содержание

Абстрактные типы данных Понятие абстрактных типов данных является ключевым в программировании. Абстракция подразумевает разделение и независимое рассмотрение интерфейса и реализации. Пример: телевизор. Можно представить сам телевизор как объект, а средство управления

Слайды и текст этой презентации

Слайд 1Программирование на ЭВМ Лекция 9. Основы объектно-ориентированного программирования
Доцент, к. т. н.

Исаев А. В.
avisz@yandex.ru
Ауд. 7 или 234

Программирование  на ЭВМ Лекция 9. Основы объектно-ориентированного программированияДоцент, к. т. н. Исаев А. В.avisz@yandex.ruАуд. 7 или

Слайд 2Абстрактные типы данных
Понятие абстрактных типов данных является ключевым в

программировании. Абстракция подразумевает разделение и независимое рассмотрение интерфейса и реализации.



Пример: телевизор. Можно представить сам телевизор как объект, а средство управления (пульт) — интерфейс с пользователем. Чем совершеннее интерфейс, тем удобнее телевизор в использовании. Пользователь объекта не обязан знать о процессах, происходящих внутри него, и вообще о его устройстве — об этом знают специалисты.

Другими словами, пользователь объекта (т. е. программист) обращается к свойствам объекта (программного модуля), которыми являются интерфейс и реализация.
Основная идея абстракции в программировании как раз и заключается в отделении интерфейса от реализации.

Абстрактные типы данных Понятие абстрактных типов данных является ключевым в программировании. Абстракция подразумевает разделение и независимое рассмотрение

Слайд 3Абстрактные типы данных
По аналогии с примером телевизора: вмешательство неквалифицированного

человека в устройство объекта (попытка починить его своими силами) практически

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


Абстрактные типы данных По аналогии с примером телевизора: вмешательство неквалифицированного человека в устройство объекта (попытка починить его

Слайд 4Абстрактные типы данных
Абстракция данных предполагает определение и рассмотрение абстрактных типов

данных или, что то же самое, новых типов данных, введенных

пользователем .

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

Абстрактные типы данныхАбстракция данных предполагает определение и рассмотрение абстрактных типов данных или, что то же самое, новых

Слайд 5Характеристики объектов
Можно сказать, что реальные объекты окружающего мира обладают тремя

базовыми характеристиками:
Имеют набор свойств,
Способны разными методами изменять эти

свойства,
Реагировать на события, возникающие как в окружающем мире, так и внутри самого объекта.
Именно в таком виде в языках программирования и реализовано понятие объекта, как совокупности свойств (структур данных, характерных для этого объекта), методов их обработки (подпрограмм изменения свойств) и событий, на которые данный объект может реагировать и которые приводят, как правило, к изменению свойств объекта.
Характеристики объектовМожно сказать, что реальные объекты окружающего мира обладают тремя базовыми характеристиками: Имеют набор свойств, Способны разными

Слайд 6Базовые элементы объектно-ориентированной программы
Базовыми элементами объектно-ориентированной программы являются объекты и

классы.



Базовые элементы объектно-ориентированной программыБазовыми элементами объектно-ориентированной программы являются объекты и классы.

Слайд 7Объекты
Объект — это часть окружающей нас реальности, т. е. он

существует во времени и в пространстве (впервые понятие объекта в

программировании введено в языке Simula ).
Объект можно представить как что-то ощущаемое или воображаемое и имеющее хорошо определенное поведение. Таким образом, объект можно либо увидеть, либо потрогать, либо, по крайней мере, знать, что он есть — например, представлен в виде информации, хранимой в памяти компьютера.

«Объект – осязаемая сущность, которая четко проявляет свое поведение» (Гради Буч)

ОбъектыОбъект — это часть окружающей нас реальности, т. е. он существует во времени и в пространстве (впервые

Слайд 8Классы. Экземпляры класса

Класс — это множество объектов, имеющих общую структуру

и общее поведение.
Класс — описание (абстракция), которое показывает, как

построить существующую во времени и пространстве переменную этого класса, называемую объектом. Смысл предложений «описание переменных класса» и «описание объектов класса» один и тот же.

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


Классы. Экземпляры классаКласс — это множество объектов, имеющих общую структуру и общее поведение. Класс — описание (абстракция),

Слайд 9Другими словами
Объект — это сущность, которая имеет состояние, поведение

и имя (средство однозначной идентификации).

Структура и поведение объектов описаны

в классах, переменными которых они являются .

Другими словами Объект — это сущность, которая имеет состояние, поведение и имя (средство однозначной идентификации). Структура и

Слайд 10Состояние, поведение и идентификация объекта
Состояние объекта объединяет все его поля

данных (статический компонент, т. е. неизменный) и текущие значения каждого

из этих полей (динамический компонент, т. е. изменяющийся).

Поведение выражает динамику изменения состояний объекта и его реакцию на поступающие сообщения, т.е. как объект изменяет свои состояния и взаимодействует с другими объектами.

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

Состояние, поведение и идентификация объектаСостояние объекта объединяет все его поля данных (статический компонент, т. е. неизменный) и

Слайд 11Сообщения
Ранее уже говорилось, что процедурный (а также и модульный) подход

позволяет строить программы, состоящие из набора процедур (подпрограмм), реализующих заданные

алгоритмы.
С другой стороны, объектно-ориентированный подход представляет программы в виде набора объектов, взаимодействующих между собой. Взаимодействие объектов осуществляется через сообщения.
Предположим, что объектом является окружность. Тогда сообщение, посланное этому объекту, может быть следующим: «нарисуй себя». Когда мы говорим, что объекту передается сообщение, то на самом деле мы вызываем некоторую функцию этого объекта. В данном примере мы вызовем функцию, которая будет рисовать окружность на экране дисплея.

СообщенияРанее уже говорилось, что процедурный (а также и модульный) подход позволяет строить программы, состоящие из набора процедур

Слайд 12Объектно-ориентированная методология
Объектно-ориентированная методология так же, как и структурная методология, была

создана с целью дисциплинировать процесс разработки больших программных комплексов и

тем самым снизить их сложность и стоимость.

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

Объектно-ориентированная методологияОбъектно-ориентированная методология так же, как и структурная методология, была создана с целью дисциплинировать процесс разработки больших

Слайд 13Базовые понятия ООП
Объект – совокупность свойств (параметров) определенных сущностей и

методов их обработки (программных средств). Объект содержит инструкции (программный код),

определяющий действия, которые может выполнять объект, и обрабатываемые данные;
Свойство объекта — характеристика объекта, его параметр;
Метод обработки — программа действий над объектом или его свойствами;
Событие — изменение состояния объекта;
Класс объектов — совокупность объектов, характеризующихся общностью применяемых методов обработки или свойств.
Базовые понятия ООПОбъект – совокупность свойств (параметров) определенных сущностей и методов их обработки (программных средств). Объект содержит

Слайд 14Базовые понятия ООП
Можно дать обобщающее определение: объект ООП— это совокупность

переменных состояния и связанных с ними методов (операций). Методы определяют,

как объект взаимодействует с окружающим миром.

Под методами объекта понимают процедуры и функции, объявление которых включено в описание объекта и которые выполняют действия.
Возможность управлять состояниями объекта посредством вызова методов в итоге и определяет поведение объекта.
Совокупность методов часто называют интерфейсом объекта.
Базовые понятия ООПМожно дать обобщающее определение: объект ООП— это совокупность переменных состояния и связанных с ними методов

Слайд 15ООП — это моделирование объектов посредством иерархически связанных классов. Малозначащие

детали объекта скрыты от нас, и если мы даем команду,

например, переместить объект, то он «знает», как он это делает.
Переход от традиционного программирования к ООП на начальном этапе характерен тем, что под объектами в программе подразумеваются конкретные физические объекты. В этом случае легче дается понимание различных действий над ними.
В качестве примера можно выбрать простые графические фигуры, поскольку каждая фигура представляет реальный объект на экране. Его всегда можно отобразить и тем самым проверить моделируемые действия над объектом в явном виде. После того как определены простейшие графические объекты, достаточно легко можно формировать более сложные на основе уже имеющихся.
В ООП такому сложному графическому объекту соответствует список примитивных объектов, к которому применимы все те же действия, что и к составляющим его элементам: отображение, стирание с экрана, перемещение в заданном направлении, поворот, масштабирование и т. д.
ООП — это моделирование объектов посредством иерархически связанных классов. Малозначащие детали объекта скрыты от нас, и если

Слайд 16Три основополагающие концепции ООП
Наследование;
Полиморфизм;
Инкапсуляция (пакетирование).

Три основополагающие концепции ООПНаследование;Полиморфизм;Инкапсуляция (пакетирование).

Слайд 17Наследование
Важнейшая характеристика класса — возможность создания на его основе новых

классов с наследованием всех его свойств и методов и добавлением

собственных.
Класс, не имеющий предшественника, называется базовым.

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

НаследованиеВажнейшая характеристика класса — возможность создания на его основе новых классов с наследованием всех его свойств и

Слайд 18Наследование
Таким образом, наследование – это процесс, посредством которого один объект

может приобретать свойства другого. Точнее, объект может наследовать основные свойства

другого объекта и добавлять к ним черты, характерные только для него.
Наследование позволяет поддерживать концепцию иерархии классов.
Например, представим себе описание жилого дома. Дом – это часть общего класса, называемого строением. С другой стороны, строение – это часть более общего класса – конструкции, который является частью ещё более общего класса объектов, который можно назвать созданием рук человека. В каждом случае порождённый класс наследует все, связанные с родителем, качества и добавляет к ним свои собственные определяющие характеристики.
Без использования иерархии классов, для каждого объекта пришлось бы задать все характеристики, которые бы исчерпывающи его определяли. Однако при использовании наследования можно описать объект путём определения того общего класса (или классов), к которому он относится, с теми специальными чертами, которые делают объект уникальным.

НаследованиеТаким образом, наследование – это процесс, посредством которого один объект может приобретать свойства другого. Точнее, объект может

Слайд 19Наследование
Каждый потомок несет в себе характеристики своего предка (содержит те

же данные и методы), а также обладает собственными характеристиками. При

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

НаследованиеКаждый потомок несет в себе характеристики своего предка (содержит те же данные и методы), а также обладает

Слайд 20Наследование
Классы могут быть связаны друг с другом различными отношениями. Одним

из основных таких отношений является отношение класс – подкласс, известный

в объектно-ориентированном программировании как наследование.
Например, класс автомобилей Audi 6 является подклассом легковых автомобилей, который в свою очередь входит в более крупный класс автомобилей, а последний является подклассом класса транспортных средств, который помимо автомобилей включает в себя самолеты, корабли поезда и т. д.
Примером подобных отношений, являются системы классификации в ботанике и зоологии. Отношением, обратным наследованию, является обобщение или генерализация. Она указывает, что некий класс, является более общим (обобщенным) классом другого класса. Класс транспортных средств, к примеру, является генерализацией классов автомобилей, самолетов и кораблей.
НаследованиеКлассы могут быть связаны друг с другом различными отношениями. Одним из основных таких отношений является отношение класс

Слайд 21Наследование
И структурная, и объектно-ориентированная методологии преследуют цель построения иерархического дерева

взаимосвязей между объектами (подзадачами).
Но если структурная иерархия строится по

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

структурная иерархия

объектно-ориентированная иерархия

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

Слайд 22Наследование
По Гради Бучу, «наследование — это такое отношение между объектами,

когда один объект повторяет структуру и поведение другого».

Принцип наследования

действует в жизни повсеместно и повседневно. Млекопитающие и птицы наследуют признаки живых организмов, в отличие от растений; орел и ворон наследуют общее свойство для птиц – умение летать. С другой стороны, львы, тигры, леопарды наследуют «структуру» и поведение, характерное для представителей отряда кошачьих и т.д.

Типы верхних уровней объектно-ориентированной иерархии, как правило, не имеют конкретных экземпляров объектов. Не существует, например, конкретного живого организма, который бы сам по себе назывался «млекопитающее» или «птица». Такие типы называют абстрактными, как уже говорилось ранее.
НаследованиеПо Гради Бучу, «наследование — это такое отношение между объектами, когда один объект повторяет структуру и поведение

Слайд 23Наследование
Наследование позволяет использовать библиотеки классов и развивать их (совершенствовать и

модифицировать) в конкретной программе.
Наследование позволяет создавать новые объекты, изменяя

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

Принцип наследования решает проблему модификации свойств объекта и придает ООП в целом исключительную гибкость. При работе с объектами программист обычно подбирает объект, наиболее близкий по своим свойствам для решения конкретной задачи, и создает одного или нескольких потомков от него, которые «умеют» делать то, что не реализовано в родителе.

Последовательное проведение в жизнь принципа «наследуй и изменяй» хорошо согласуется с поэтапным подходом к разработке крупных программных проектов и во многом стимулирует такой подход.
НаследованиеНаследование позволяет использовать библиотеки классов и развивать их (совершенствовать и модифицировать) в конкретной программе. Наследование позволяет создавать

Слайд 24Типы можно выстроить в иерархию. Объект может наследовать компоненты из

другого объектного типа. Наследующий объект — это потомок. Объект, которому

наследуют — предок.
Важно: наследование относится только к типам, но не к экземплярам объектов.
Если введен объектный тип (предок, родительский), а его надо дополнить полями или методами, то вводится новый тип, объявляется наследником (потомком, дочерним типом) первого и описываются только новые поля и методы. Потомок содержит все поля типа предка.
Поля и методы предка доступны потомку без специальных указаний. Если в описании потомка повторяются имена полей или методов предка, то новые описания переопределяют поля и методы предка.
Типы можно выстроить в иерархию. Объект может наследовать компоненты из другого объектного типа. Наследующий объект — это

Слайд 25Наследование
ООП всегда начинается с базового класса. Это шаблон для базового

объекта. Следующим этапом является определение нового класса, который называется производным

и является расширением базового.

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

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

Слайд 26Наследование
Процесс наследования может быть продолжен. Класс, который произведен от базового,

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

ОО программы создают иерархию классов.

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

Слайд 27Полиморфизм
Полиморфизм (от греч. πολὺ- — много, и μορφή — форма):

– это свойство, которое позволяет одно и то же имя

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



ПолиморфизмПолиморфизм (от греч. πολὺ- — много, и μορφή — форма): – это свойство, которое позволяет одно и

Слайд 28Полиморфизм
При наследовании одни методы класса могут замещаться другими. Так, класс

транспортных средств будет обладать обобщенным методом движения. В классах-потомках этот

метод будет конкретизирован: автомобиль будет ездить, самолет – летать, корабль – плавать. Такое изменение семантики метода и называется полиморфизмом.
Полиморфизм – это выполнение методом с одним и тем же именем различных действий в зависимости от контекста, в частности, от принадлежности тому или другому классу.
ПолиморфизмПри наследовании одни методы класса могут замещаться другими. Так, класс транспортных средств будет обладать обобщенным методом движения.

Слайд 29Пример
Полиморфизм означает что для различных родственных объектов можно задать единый

класс действий (например, перемещение по экрану любой геометрической фигуры). Затем

для каждого конкретного объекта составляется своя подпрограмма, выполняющая это действие непосредственно для данного объекта (естественно, что перемещение по экрану точки отличается от перемещения отрезка, а перемещение отрезка, в свою очередь, отличается от перемещения многоугольника и т. д.), причем все эти подпрограммы могут иметь одно и то же имя. Когда потребуется перемещать конкретную фигуру, будет выбрана из всего класса соответствующая подпрограмма.

ПримерПолиморфизм означает что для различных родственных объектов можно задать единый класс действий (например, перемещение по экрану любой

Слайд 30Другой пример
Полиморфизм – это свойство родственных объектов (т.е. объектов, имеющих

одного общего родителя) решать схожие по смыслу проблемы разными способами.

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


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

Слайд 31Полиморфизм
В рамках ООП поведенческие свойства объекта определяются набором входящих в

него методов, программист только указывает, какому объекту какое из присущих

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


ПолиморфизмВ рамках ООП поведенческие свойства объекта определяются набором входящих в него методов, программист только указывает, какому объекту

Слайд 32Полиморфизм
Преимуществом полиморфизма является то, что он помогает снижать сложность программ,

разрешая использование того же интерфейса для задания единого класса действий.

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

ПолиморфизмПреимуществом полиморфизма является то, что он помогает снижать сложность программ, разрешая использование того же интерфейса для задания

Слайд 33Инкапсуляция
Инкапсуляция (пакетирование) предполагает соединение в одном объекте данных и функций/процедур,

которые манипулируют этими данными. Доступ к некоторым данным внутри объекта

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

ИнкапсуляцияИнкапсуляция (пакетирование) предполагает соединение в одном объекте данных и функций/процедур, которые манипулируют этими данными. Доступ к некоторым

Слайд 34Инкапсуляция
Инкапсуляция (пакетирование) – это механизм, который объединяет данные и код,

манипулирующий этими данными, а также защищает и то, и другое

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

Слайд 35Инкапсуляция
В рамках ООП, как уже говорилось, данные называются полями объекта,

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

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

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

Слайд 36Инкапсуляция
Помимо атрибутов (т. е. свойств) объекты обладают некоторыми функциональными возможностями,

которые в объектно-ориентированном программировании (ООП) называют операциями или методами. Так

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

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

Слайд 37Инкапсуляция
Инкапсуляция скрывает детали реализации объекта.

ИнкапсуляцияИнкапсуляция скрывает детали реализации объекта.

Слайд 38Преимущества ООП
ООП обладает рядом преимуществ при создании больших программ, в

частности:
использование более естественных с точки зрения повседневной практики понятий,

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

Слайд 39Недостатки ООП
Однако следует иметь в виду, что ООП обладает и

рядом недостатков и эффективно не во всех случаях. Как правило,

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

Слайд 40Реализация объекта в Pascal
В Паскале объект очень похож на запись,

которая является соединением нескольких взаимосвязанных элементов данных под одним именем.


Тип и характер данных определяют свойства объекта.
С другой стороны, объект имеет свое поведение, определяемое процедурами и функциями этого объекта.
Реализация объекта в PascalВ Паскале объект очень похож на запись, которая является соединением нескольких взаимосвязанных элементов данных

Слайд 41Описание объектного типа
Класс или объект – это структура данных, которая

содержит поля и методы. Как всякая структура данных она начинается

зарезервированным словом и закрывается оператором end.
Формальный синтаксис не сложен:

Type <имя типа объекта>= object
<поле>;
<поле>;

<метод>;
<метод>;
end;
Описание объектного типаКласс или объект – это структура данных, которая содержит поля и методы. Как всякая структура

Слайд 42Описание объектного типа (2-й способ)
В Pascal существует специальное зарезервированное слово

class для описания объектов, заимствованное из С++.
Type

типа объекта>= class
<поле>;
….
<метод>;
<метод>;
end;
Современные реализации Pascal поддерживают обе модели описания объектов.
Описание объектного типа  (2-й способ)В Pascal существует специальное зарезервированное слово class для описания объектов, заимствованное из

Слайд 43Поля объектов есть полная аналогия с записями полей. Методы –

процедуры и функции, обрабатывающие поля объектов. Пример:
type
Car = object
Color: string;
Volume:

real;
Smax: real;
Procedure Start;
Procedure Stop;
End;
Поля объектов есть полная аналогия с записями полей. Методы – процедуры и функции, обрабатывающие поля объектов. Пример:typeCar

Слайд 44Названия объектов начинаются с заглавной буквы, что соответствует соглашению языка

Pascal. Далее объявляется переменная указанного типа:
Var
Citroen: Car;


Обращение к полям и

методам аналогична обращению к полям записи:
Citroen.Color:= ‘Black’;
Citroen.Volume:= 1.6;
Citroen.Start;
Citroen.Stop;
Названия объектов начинаются с заглавной буквы, что соответствует соглашению языка Pascal. Далее объявляется переменная указанного типа:Var	Citroen: Car;Обращение

Слайд 45Динамическое создание объекта:
Var
Citroen: ^Car;
Begin
New (Citroen);
Citroen^.Color:= ‘Black’;
Citroen^.Start;
Citroen^.Stop;
End;

Динамическое создание объекта:Var Citroen: ^Car;BeginNew (Citroen);Citroen^.Color:= ‘Black’;Citroen^.Start;Citroen^.Stop;End;

Слайд 46Как упоминалось, производный тип наследует все свойства родительского типа. Для

создания производных типов используется следующая конструкция:
Type
Sedan = object(Car)

End;

Как упоминалось, производный тип наследует все свойства родительского типа. Для создания производных типов используется следующая конструкция:Type 	Sedan

Слайд 47В языке Pascal, допускается обратная совместимость объектных типов. Например, если

объявлена процедура WriteInfo(c: car), то в нее можно передать переменную

типа Sedan или Car. Если объявлена процедура WriteInfo (c: Sedan), то в нее может быть передана переменная типа Sedan, или переменная производная от него.

В языке Pascal, допускается обратная совместимость объектных типов. Например, если объявлена процедура WriteInfo(c: car), то в нее

Слайд 48Примеры реализации методов
Реализация объекта происходит вне объявления объекта. В объекте

находится лишь «проекция» переменной. Например:
Type Car = class
Fuel, doors: longint;
Color:

string;
procedure newcolor (s: string);
end;

procedure Car.newcolor(s: string);
begin
color:= s;
end;

Var
c: car;
begin
c.newcolor ('Белый');
end.

Примеры реализации методовРеализация объекта происходит вне объявления объекта. В объекте находится лишь «проекция» переменной. Например:Type Car =

Слайд 49В производных типах можно переопределять методы, унаследованные от родительского типа.

Переопределять – значит использовать метод с одним и тем же

названием, но с различной реализацией.

Procedure Car.newcolor (s: string);
Procedure Sedan.newcolor (s: string);


Все методы в вышеописанных примерах называются статическими. Это означает, если в производном типе не переопределен метод, то он будет работать с данными родительского типа.
При вызове не переопределённого статического метода на самом деле вызывается метод, который может не иметь доступа к некоторым данным вызывающего объекта, т.к. ссылки на статические методы определяются во время компиляции программы, и компилятор относит их к определенному типу.
Решением этой проблемы является использование виртуальных методов, ссылки на которые определяются во время выполнения программы, благодаря чему метод сопоставляется именно с типом вызывающего объекта.
Procedure Start: virtual;
В производных типах можно переопределять методы, унаследованные от родительского типа. Переопределять – значит использовать метод с одним

Слайд 50Спасибо за внимание!

Спасибо за внимание!

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика