КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Объекты
Объект можно рассматривать как конструкцию, описывающую абстрактные структуры данных в программе. Введение объектов в язык программирования означает достаточно радикальные изменения в самом подходе к программированию. Объект – это структура, включающая в себя взаимосвязанные данные различных типов и использующие эти данные процедуры и функции. Схематично объект можно представить так ------------------> С формальной точки зрения объект напоминает записный тип (record). Type T=record данные end; Пример описания объекта: Type TO=object Field1: тип; Field2:тип; … procedure Proc1(p1,p2:тип); function Fnc1: real; end; ------------------------ {тела процедур и ф-ций выносятся из объектного типа} procedure TO.Proc1(p1,p2:тип); begin … end; function TO.Fnc1: real; begin … end; Процедуры и функции объекта могут работать только с внутренними данными объекта. Объект хорошо приспособлен для абстрактного представления данных. Методы объекта получают при вызове неявный параметр self (это ссылка на объект), через который удаётся адресоваться к внутренним данным объекта. Параметр self в проблемных ситуациях (конфликт имён) может использоваться явно. Наличие этого параметра отличает такие процедуры и ф-ции от обычных. … var {статический объект} MyObject: TO; … MyObject.Proc1(p1,…); a:=MyObject.Fcn1; Объект может быть как статическим так и динамическим: var {динамический объект} MyObject: TO; MyDynaObj: ^TO; … New(MyDynaObj); {создание экземпляра объекта} MyDynaObj^.Proc1(p1,…); {работа с экземпляром объекта} Dispose(MyDynaObj); {удаление экземпляра объекта} Пример описания объекта и его использование: program ObjTest; const StackSize = 100; type NameStr = string[15]; Student = record Name: NameStr; Mark: integer; end; Stack = object {начало описания объекта типа Stack} List: array[1..StackSize] of Student;
SP: integer; procedure Init; procedure Push(NM: NameStr; M: integer); procedure Pop(var NM: NameStr; var M: integer); function Empy: boolean end; {Описание:} procedure Stack.Init; begin SP:= 1; end; procedure Stack.Push; begin … end; procedure Stack.Empty: boolean; begin … end; procedure Stack.Pop; begin … end;
{Использование:} var StackVar: Stack; {экземпляр класса Stack в терминах ООП} begin … StackVar.Init; … StackVar.Push(‘Иванов’,5); … end; Объявление объекта в модуле: Модуль является идеальным хранилищем объекта. Такой подход принят в Object Pascal. Пример объявления объекта Stack в модуле: unit ObjStack; interface const StackSize = 100; type NameStr: string[15]; Student = record; … end; Stack = Object … end; implementation procedure Stack.Init; begin SP:= 1; end; … end;
Дата добавления: 2014-01-07; Просмотров: 284; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |