Студопедия

КАТЕГОРИИ:


Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.