- •В языках программирования высокого уровня используется два типа подпрограмм: процедуры и функции
- •Var имя праметра: имя типа
- •10.3.1. Параметры-значения
- •№8. Явная и неявная рекурсия.
- •№9. Множества. Определение. Область применения
- •№10 И 11. Всё о модулях.
- •12 Бтлет
- •64К, зарезервированная в Borland Pascal для данных, может ока-
- •1. Открытые параметры
- •№25. Причины возникновения ооп.
- •№26. Наследование объектов
- •№ 27. Полиморфизм. Свойства.
- •№28.Методы.
- •Identifier" (Ошибка 4; Повторение идентификатора), если попытае-
- •№29. Облости вилимости в модели объектов Pascal
- •№30.Поведение методов объектов при наследовании
- •№31.Инкапсуляция. Свойства.
- •№32. Объекты. Поля и методы.
- •X,y : Word; {Координаты позиции на экране}
- •№33.Определение объекта.
№33.Определение объекта.
Основным понятием ООП и элементом программы является объект, сочетающий в себе как совокупность данных, так и действий над ними. Тип-объект в 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 (операция) не имеют какого либо физического воплощения - они указывают лишь на некоторые свойства других, реальных объектов, таких, как строки, элементы строк. Однако выделение этих общих свойств в отдельные объекты бывает удобно, т. к. позволяет затем не повторять их многократно при описании уже реальных объектов. Такие объекты называются абстрактными, и переменных таких типов в программе, как правило, не бывает.
