Модули и объекты в языке Турбо Паскаль 7.0
ать курсор в произвольную позицию экрана, менять цвет
выводимых символов и окружающего их фона, создавать окна. Кроме того, в
модуль включены также процедуры «слепого» чтения клавиатуры и управления
звуком. Модуль GRAPH содержит обширный набор типов, констант, процедур и
функций для управления графическим режимом работы экрана. С помощью
подпрограмм, входящих в модуль GRAPH, можно создавать разнообразные
графические изображения и выводить на экран текстовые надписи стандартными
или разработанными программистом шрифтами. Подпрограммы модуля GRAPH после
соответствующей настройки могут поддерживать различные типы аппаратных
графических средств. Настройка на имеющиеся в распоряжении программиста
технические средства графики осуществляется специальными программами -
драйверами, которые не входят в библиотечный файл GRAPH.TPU, но
поставляются вместе с ним. Модуль DOS. В модуле собраны процедуры и
функции, открывающие доступ программам к средствам дисковой операционной
системы MS DOS. Модуль OVERLAY. Он необходим при разработке громоздких
программ с перекрытиями. Как уже говорилось, Турбо Паскаль обеспечивает
создание программ, длина которых ограничивается лишь доступной оперативной
памятью ПК. Для большинства IBM-совместимых ПК доступная программе память
составляет около 580 Кбайт (без инструментальных оболочек типа Norton
Commander и без самой системы Турбо Паскаль). Память такого размера
достаточна для большинства применений, тем не менее, использование программ
с перекрытиями снимает это ограничение. Два библиотечных модуля TURBO3 и
GRAPH3 введены для совместимости с ранней версией 3.0 системы Турбо
Паскаль.
2 Объекты
Базовым в объектно-ориентированном программировании является понятие
объекта. Объект имеет определённые свойства. Состояние объекта задаётся
значениями его признаков. Объект «знает», как решить определённые задачи,
то есть располагает методами решения. Программа, написанная с
использованием ООП, состоит из объектов, которые могут взаимодействовать
между собой.
Ранее отмечалось, что программная реализация объекта представляет
собой объединение данных и процедур их обработки. В Турбо Паскале имеется
тип object, который можно считать обобщением структурного типа record.
Переменные объектного типа называются экземплярами объекта. Здесь требуется
уточнение – экземпляр лишь формально можно назвать переменной. Его описание
даётся в предложении описания переменных, но в действительности экземпляр –
нечто большее, чем обычная переменная.
В отличии от типа «запись», объектный тип содержит не только поля,
описывающие данные, но также процедуры и функции, описания которых
содержатся в описании объекта. Эти процедуры и функции называются методами.
В описании объекта фактически содержатся лишь шаблоны обращений к методам,
которые необходимы компилятору для проверки соответствия количества
параметров и их типов при обращении к методам. Вот пример описания объекта:
type
Location = object
X, Y: Integer;
procedure Init (InitX, Inity: Integer);
function GetX: Integer;
function GetY: Integer;
end;
Здесь описывается объект, который может использоваться в дальнейшем,
скажем, в графическом режиме и который предназначен для определения
положения на экране произвольного графического элемента. Объект описывается
с помощью зарезервированных слов object…end, между которыми находятся
описания полей и методов. В нашем примере объект содержит два поля для
хранения значений графических координат, а также описания процедуры и двух
функций – это методы данного объекта. Процедура предназначена для задания
первоначального положения объекта, а функции – для считывания его
координат.
Зарезервированное слово private позволяет ограничить доступ к полям
объекта. В следующем примере доступ к переменным X и Y возможен только
через методы объектного типа Location:
type
Location = object
procedure Init (InitX, Inity: Integer);
function GetX: Integer;
function GetY: Integer;
private
X, Y: integer;
end;
В секции private могут находится и методы объекта.
Полное описание методов, то есть описание их реализации, должно
находится после описания объекта. Имена методов составные и складываются из
имени объекта и имени метода, разделённых точкой:
procedure Location. Init (InitX, Inity: Integer);
begin
X : = InitX;
Y : = InitY;
end;
fuction Location. GetX: Integer;
begin
GetX : = X;
end;
fuction Location. GetY: Integer;
begin
GetY : = Y;
end;
После того как объект описан, в программе можно использовать его
экземпляры, то есть переменные указанного объектного типа:
var
GrMarket : Location;
2.1 Основные принципы ООП
Элементы объектно-ориентированного программирования появились в
начале 70-х в языке моделирования Симула, затем получили своё развитие, и в
настоящее время ООП принадлежит к числу ведущих технологий
программирования. В Турбо Паскале поддержка этой технологии появилась,
начиная с версии 5.5 (1989 год).
Основная цель ООП, как и большинства других подходов к
программированию, - повышение эффективности разработки программ. Идеи ООП
оказались плодотворными и нашли применение не только в языках
программирования, но и в других областях Computer Science, например, в
области разработки операционных систем.
Появление объектно-ориентированного программирования было связанно с
тем наблюдением, что компьютерные программы представляют собой описание
действий, выполняемых над различными объектами. В роли последних могут
выступать, например, графические объекты, записи в базах данных или
совокупности числовых значений. В традиционных методах программирования
изменение данных или правил и методов их обработки часто приводило к
необходимости значительного изменения программ. Всякое существенное
изменение программы – это большая неприятность для программиста, так как
при этом увеличивается вероятность ошибок, вследствие чего возрастает
время, необходимое для «доводки» программы. Использование ООП позволяет
выйти из такой ситуации с минимальными потерями, сводя необходимую
модификацию программы к её расширению и дополнению. Сразу замечу, что ООП
не является панацеей от всех программистских бед, но его ценность как
передовой технологии программирования несомненна. Изучение идей и методов
объектно-ориентированного программирования – не очень простая задача,
однако освоение ООП может существенно упростить разработку и отладку
сложных программ.
Мы уже привыкли использовать в своих программах процедуры и функции
для программирования тех сложных действий по обработке данных, которые
приходится выполнять многократно. Использование подпрограмм в своё время
было важным шагом на пути к увеличению эффективности программирования.
Подпрограмма может иметь формальные параметры, которые при обращении к ней
заменяются фактическими параметрами. В этом случае есть опасность вызова
подпрограммы с неправильными данными, что может привести к сбою программы и
её аварийному завершению при выполнении. Поэтому естественным обобщением
традиционного подхода к программированию является объединение данных и
подпрограмм (процедур и функций), предназначенных для их обработки.
2.2 Инкапсуляция
В Турбо Паскале средства объектно-ориентированного программирования
связаны с тремя зарезервированными словами: OBJECT CONSTRUCTOR и DESTRUCTOR
и двумя стандартными директивами: PRIVATE и VIRTUAL.
Зарезервированное слово OBJECT используется для описания объекта.
Описание объекта должно помещаться в разделе описания типов, например:
type
Tpoint = object
X,Y: Integer; {Координаты точки}
Color:word; {Цвет точки)
Visible: Boolean; {Признак светимости}
Procedure Setlocation (NewX, NewY: integer);
{Задает новое положение, точки на экране}
Procedure SetCoforfNewColor: word); {Устанавливает цвет точки}
Procedure SetVislble(VIS: Boolean);
{Выводит или гасит точку)
Procedure GetLocatIon(var Xloc, YLoc:integer);
{Возвращает координаты точки}
Function GetColor: word;
{Возвращает цвет точки)
Function GetVislble: Boolean;
{Возвращает признак светимости точки}
end; {Конец описания объекта ТРOINT)
В этом примере описывается объект TPOINT, представляющий собой
данные и методы (процедуры и функции), необходимые для работы с
графическими точками на экране ПК. Заметим, что инкапсулированные объект
процедуры и фун
| | скачать работу |
Модули и объекты в языке Турбо Паскаль 7.0 |