русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Область действия полей объекта и параметр SELF

Принципы ООП требуют, чтобы прямые обращения к полям объекта в тексте основной программы производились как можно реже, обращение к по­лям предпочтительно только из доступных им методов. Таким образом, в ос­новной программе должны быть только вызовы методов, изменяющих поля.

Так как данные и методы инкапсулированы в одном объекте, все данные (поля) объекта глобальны по отношению к любым его методам и могут в них использоваться в виде простого имени (не составного).Каждая переменная объектного типа имеет свои поля и использует методы, общие для всех пере­менных этого типа.

При обращении к методу ему передается особый системный идентифика­тор SELF (свой, внутренний), представляющий собой обобщенное имя кон­кретного экземпляра объекта. Внутри методов объекта действует неявный оператор WITH экземпляра (SELF). Это обеспечивает обработку данных именно этого конкретного экземпляра объектного типа. Для объектов допус­тим и явный With.

Так как область действия (domain) полей данных объекта распространя­ется на тела подпрограмм, реализующих методы данного объекта, имена фор­мальных параметров методов (если они есть) не должны совпадать ни с од­ним из имен полей данных этого объекта.

Компилятор автоматически обрабатывает параметр SELF, поэтому не стоит использовать его явно. Исключением является случай, когда возникает "кон­фликт" между идентификаторами в пределах методов. Пример такой "развяз­ки" приведен в листинге 2. В программе листинга 2 одинаковы имена эле­ментов записи и полей объекта.

Листинг 2.Развязка конфликта имен.

Uses Crt;

Type PosRec = Record { - объявление записи }

Line, Col : Word; { - имена ее элементов }

end; { - конец объявления записи }

ObjPos = OBJECT { - объявление объекта }

Line, Col : Word; { - совпали имена полей объекта и записи }

Procedure Init ( Роs : PosRec );

end; { - конец объявления объекта }

{ ----- Метод объекта ObjPos ------- }

Procedure ObjPos.Init ( Pos : PosRec );

Begin

With Pos do begin { - присоединение к формальному параметру }

{ поля > } Self.Line := Line;{ <- поля записи с With для}

{ объекта : } Self.Col := Col; { формального параметра }

end { - With }

End;

{ Переменные типа: }

Var VObj: ObjPos; { - объект }

VPosRec: PosRec; { - запись }

{ -------- Основная программа----------- }

Begin ClrScr;

VPosRec.Line := 2; { - инициализация полей записи } VPosRec.Col := 5;

Writeln('Поля записи: ', #10#13,

'VPosRec.Line =', VPosRec.Line, { - вывод полей записи }

' VPosRec.Col = ', VPosRec.Col );

Writeln('Неинициализированные поля объекта:', #10#13,

'VObj.Line =', VObj.Line, { - вывод полей объекта } ' VObj.Col = ', VObj.Col );

VObj.Init(VPosRec); { - инициализация полей объекта данными записи }

Writeln('Инициализированные поля объекта:', #10#13,

'VObj.Line = ', VObj.Line, ' VObj.Col = ',VObj.Col ); End.

Просмотров: 827


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.