Опис об’єктного типу - студопедія
Type <имя типа объекта>= object
У ObjectPascal існує спеціальне зарезервоване слово class для опису об'єктів, запозичене з С ++.
Type <имя типа объекта>= class
ObjectPascal підтримує обидві моделі опису об'єктів.
Директиви private, protected, public. Перераховані директиви призначені для обмеження доступу до елементів класу. Використання директив при описі класу необов'язково.
Секція private містить внутрішні елементи, звернення до яких можливо тільки в межах модуля, що містить опис класу.
Секція protected містить захищені елементи, які доступні в межах модуля, що містить визначення класу, і всередині класів-нащадків.
Секція public містить загальнодоступні елементи, до яких можливе звернення з будь-якої частини програми.
У загальному вигляді опис нового класу має наступний синтаксис:
Type <имя типа объекта>= class
Після того, як описані типи даних - класи - в розділі опису змінних необхідно описати екземпляри цих класів (тобто змінні описаних типів - об'єкти). У програмі звернення до екземплярів класу здійснюється по імені (як до звичайних змінних) із зазначенням або поля, до якого відбувається звернення, або методу, виклик якого виробляється:
Приклад. Вводиться об'єктний тип «предок», який має поле даних Name (ім'я) і може виконувати дві дії:
· Проголошувати: «Я - предок!»;
· Повідомляти своє ім'я.
Type tPredoc = object
Тексти підпрограм, що реалізують методи об'єкта, повинні приводитися в розділі опису процедур і функцій. Заголовки при описі реалізації методу повторюють заголовки, наведені в описі типу, але доповнюються ім'ям об'єкта. яке відділяється від імені процедури точкою. У нашому прикладі:
Усередині опису методів на поля і методи даного типу посилаються просто по імені. Так метод MyName використовує поле Name без явної вказівки його приналежності об'єкту так, якби виконувався неявний оператор with <переменная_типа_объект> do.
Під об'єктами розуміють і змінні об'єктного типу - їх називають екземплярами. Як будь-яка змінна, екземпляр має ім'я і тип: їх треба оголосити.
v1.Name:= 'Петров Микола Іванович';
Використання поля даних об'єкта v1 не відрізняється за своїм синтаксису від використання полів записів. Виклик методів екземпляра об'єкта означає, що вказаний метод викликається з даними об'єкта v1. В результаті на екран будуть виведені рядки
Я - Петров Микола Іванович
Аналогічно записів, до полів змінних об'єктного типу дозволяється звертатися як за допомогою уточнених ідентифікаторів, так і за допомогою оператора with.
Наприклад, в тексті програми замість операторів
v1.Name:= 'Петров Микола Іванович';
можливе використання оператора with такого виду
Name: = 'Петров Микола Іванович';
Більш того, застосування оператора with з об'єктними типами, також як і для записів не тільки можливо, але і рекомендується.