Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метадичка по Информатике и Программированию.doc
Скачиваний:
10
Добавлен:
28.03.2015
Размер:
205.82 Кб
Скачать

5 Объектно-ориентированная модель turbo pascal

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

5.1 Основные концепции ооп

5.1.1 Абстрактные типы данных. Инкапсуляция

Одной из основных особенностей ООП является поддержка абстрактных типов данных (АТД), которые определяют множество подобных объектов и связанные с ними наборы операторов.

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

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

5.1.2 Классы

Языковыми конструкциями для определения АТД в большинстве языков программирования являются классы.

В то время как объект определяет конкретную сущность, определённую во времени и пространстве, класс определяет лишь абстракцию (выжимку из объекта).

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

5.1.3 Наследование

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

5.1.4 Полиморфизм. Раннее и позднее связывание

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

В Turbo Pascal полиморфизм достигается не только описанным выше механизмом наследования и перекрытием методов родителя, но и их виртуализацией, позволяющей родительским методам обращаться к методам потомков.

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

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