- •Определение типа запись. Особенности хранения полей.
- •Определение процедуры. Основные особенности работы.
- •Определение функции. Особенности работы.
- •Параметры-значения
- •Параметры-константы
- •Параметры переменной.
- •Процедурные типы. Определение и область применения.
- •Явные и неявные рекурсии.
- •Множества. Определение и область применения.
- •Модули. Определение интерфейсной части. Особенности текста реализации.
- •Модули. Особенности использования. Видимость содержимого.
- •Определение файла. Общие процедуры и функции для работы с файлами.
- •Текстовые файлы. Процедуры и функции для работы с ними. Особенности.
- •Типизированные файлы. Процедуры и функции для работы с ними. Особенности.
- •Не типизированные файлы. Процедуры и функции для работы с ними. Особенности.
- •Указатели. Общее определение. Значение указателей. Классификация.
- •Типизированный указатель. Процедуры и функции для работы с ними.
- •Не типизированные указатели. Процедуры и функции для работы с ними.
- •Открытые массивы. Особенности работы.
- •Области видимости переменных, типов и констант.
- •Области видимости процедур и функций. Явное и неявное преобразование типов.
- •Алгоритмы поиска. Особенности реализации. Алгоритмы сортировки. Особенности реализации. Причины возникновения ооп. Основные особенности.
- •Наследование объектов.
- •Полиморфизм. Свойства.
- •Инкапсуляция. Свойства.
- •Виды методов. Особенности.
- •Области видимости моделей объектов в паскале.
- •Поведение методов объектов при наследовании.
- •Объекты. Поля и методы.
- •Определение объектов.
Определение объектов.
Основным понятием ООП и элементом программы является объект, сочетающий в себе как совокупность данных, так и действий над ними. Тип-объект в Turbo Pascal напоминает тип-запись, однако вместо зарезервированного слова record используется слово object, а кроме полей, представляющих данные, в нем перечислены и заголовки подпрограмм, называемых методами. При задании такого типа после зарезервированного слова object перечисляются все поля объекта и заголовки методов, после чего пишется слово end.
Так, в рассматриваемом примере используется тип tConnection (связь элементов):
type
tConnection = object
PredElem: Pointer;
NextElem: Pointer;
procedure PutPredElemCPredEl: Pointer);
procedure PutNextElem(NextEl: Pointer);
function GetPredElem: Pointer;
function GetNextElem: Pointer
end;
В этом типе PredElem и NextElem - указатели на предыдущий и последующий элементы в структуре (если соответствующего элемента нет, указатель имеет значение nil). Используются указатели типа Pointer, т. к. элементы могут быть различными: они могут быть и элементами строки, и строками. Далее идут заголовки двух процедур и двух функций, позволяющих либо задавать, либо получать значения указателей объекта.
Естественно, что затем все используемые методы должны быть описаны также, как это делается для подпрограмм в модулях. При этом допускается записывать сокращенный заголовок метода, однако перед ним следует через точку записать имя типа-объекта, к которому относится данная подпрограмма:
procedure tConnection.PutPredElem;
begin
PredElem:=PredEl
end;
Это нужно потому, что несколько разных методов, относящихся к разным объектам, могут иметь одно и то же имя, как и поля в разных типах-записях.
Некоторые объекты программы, особенно находящиеся в начале иерархического дерева, могут и не соответствовать каким-либо реальным объектам. Так, например, объекты типов tConnection (связь), tStructure (структура) и tOperation (операция) не имеют какого либо физического воплощения - они указывают лишь на некоторые свойства других, реальных объектов, таких, как строки, элементы строк. Однако выделение этих общих свойств в отдельные объекты бывает удобно, т. к. позволяет затем не повторять их многократно при описании уже реальных объектов. Такие объекты называются абстрактными, и переменных таких типов в программе, как правило, не бывает.
