русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

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


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Область дії методів і параметр Self


Дата додавання: 2014-04-22; переглядів: 949.


Зауважмо, що в жодному з попередніх прикладів конструкція

WITH обєкт DO …;

не зустрічається у явному вигляді. Поля даних об’єкта легко доступні за допомогою методів об’єкта. Хоча у вихідному коді поля даних об’єкта і тіла методів розділені, насправді вони сумісно використовують ту саму область дій. Саме тому один з методів TStudent може містити оператор

GetRate:=Rate;

без жодного кваліфікатора перед Rate. Можна сказати, що всередині методів об’єкта діє неявний оператор WITH. Наслідком цього є те, що формальні параметри методу, якщо такі є, не можуть співпадати за іменем ні з одним полем відповідного об’єкта.

Якщо об’єкт викликає метод, то виконується неявний оператор:

WITH Self DO метод;

що зв’язує об’єкт і його методи в одну область дій.

Неявний оператор WITH виконується шляхом передачі невидимого параметра методу кожного разу, коли цей метод викликається. Цей параметр називається Self і насправді він є 32-розрядним вказівником на екземпляр об’єкту, що здійснює виклик методу. Метод GetName, що стосується типу TStudent, приблизно еквівалентний опису

Procedure TStudent.GetName:String;

Begin

GetName:=Self.Name;

End;

хоча такий опис не зовсім коректний. Фактично, параметр Self є начебто невидимим полем об’єкту типу TStudent (чи будь-якого іншого об’єктного типу), доступ до якого здійснюється так само, як і до будь-якого іншого поля об’єкта.

Звичайно нема необхідності у використанні цього параметра, оскільки генерований Pascal-ем код обробляє його автоматично. Однак у деяких ситуаціях, коли, наприклад, об’єкти різних типів мають поля зі співпадаючими іменами або треба звернутися до об’єкту в цілому (взяти його адресу, порівняти його з іншим об’єктом цього ж типу), можна використовувати параметр Self явно. (Ми це будемо робити в Лабораторній роботі 1-2).

 

Підсумок

Об’єкт у розумінні мови Pascal – це така структура, компонентами якої є взаємозв’язані дані різних типів і процедури та функції, що ці дані використовують. Компоненти-дані називаються полями об’єкта, а компоненти-процедури і функції називаються методами. Поля даних повинні бути оголошені перед оголошенням методу. Якщо об’єкт викликає метод, то виконується неявний оператор:

WITH Self DO метод;

що дає змогу звертатися до полів об’єкта без додаткових кваліфікаторів.

 

Питання по темі

1. Компоненти-дані називаються ________ об’єкта, а компоненти-процедури і функції називаються _____________

2. Назвати ключове слово для позначення типу «об’єкт»

3. Як у загальному випадку звертатися до полів об’єкта?

4. Які складові частини програми можуть звертатися до полів об’єкта по імені

5. Який параметр зв’язує об’єкт і його методи в одну область дій?

 

 



<== попередня лекція | наступна лекція ==>
Визначення методів | Тема 2 Об’єктно-орієнтоване програмування в Pascal. Успадковування. Інкапсуляція


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн