Информатика на пять О нас
 Добавить в избранное
5byte.ru
 Теория
 8 класс
 9 класс
 10 класс
 11 класс
Задания
 8 класс
 9 класс
 10 класс
 11 класс
Книги
Тесты
ЕГЭ
Turbo Pascal 7
 Описание
 Задачи
HTML
Рефераты

14. Объектно-ориентированное программирование в Turbo Pascal 7

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

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

Введение нового типа данных потребовало пересмотреть некоторые концепции языка Паскаль: ввести новые понятия, как, например, инкапсуляция, наследование, полиморфизм и виртуальность, новые зарезервированные слова (constructor, destructor, inherited, object, private, public, virtual), изменить уже существующие подпрограммы (подпрограммы New и Dispose).

ООП характеризуется тремя основными свойствами: инкапсуляция (encapsulation), наследование (inheritance) и полиморфизм (polymorphism).

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

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

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

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

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

ООП обладает рядом преимуществ при создании больших программ. В частности, к ним можно отнести:

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

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





 У Вас есть материал пишите нам
 
    Copyright © 2008    
Rambler's Top100