Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
выш.мат. методичка.DOC
Скачиваний:
30
Добавлен:
13.02.2015
Размер:
1.71 Mб
Скачать

11.5. Внешние устройства в качестве файлов

Связь с внешними устройствами в языке Паскаль осуществляется также через файловые переменные. В Turbo Pascal существует два типа внешних устройств: устройства операцион­ной системы и текстовые устройства.

Устройства операционной системы, с которыми осуществляется обмен ин­формацией, могут быть описаны как файлы со стандартными именами. Эти имена следующие:

СОМ - консоль (как правило, дисплей). С этим устройством стан­дартно связаны файловые переменные Input и Оutput.

LPT1, LPT2, LPT3 - печатающие устройства. Если в системе один принтер, он будет иметь имя LPT1. Если в программе используется стандартный модуль Рrinter (указан в разделе uses), можно использовать для вывода на принтер стандартную фай­ловую переменную Lst.

РRN - синоним LРТ1.

СОМ1, СОМ2 - имена двух последовательных портов.

АUХ - синоним СОМ1.

NUL - фиктивное внешнее устройство.

К текстовым устройствам относятся устройства, не поддерживаемые операци­онной системой или имеющие другие способы обращения. Например, устройство СRТ, поддерживаемое стандартным модулем Сrt. Оно эквивалентно СОN в операционной системе, но более быстродействующее и позволяет использовать разные цвета и окна.

С текстовым устройством нельзя связаться процедурой Assign. Для связи с ним служит специальная модификация этой процедуры, например для связи с устройством СRТ следует использовать процедуру АssignСrt в модуле Сrt.

12 Объектно-ориентированное программирование в turbo pascal 7.0

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

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

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

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

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

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

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

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

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

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

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

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

• возможность создания библиотеки объектов;

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

• возможность написания подпрограмм с различными наборами формальных параметров, до имеющих одно и то же имя, используя свойство полиморфизма;

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

• возможность разделения доступам различным объектам программы и т.д.

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