Об’єкти як представники класу оголошуються в програмі в розділі var, наприклад:
var student: TPerson; professor: TPerson;
У Delphi об’єкт – це динамічна структура.
Змінна-об’єкт містить не дані, а посилання на дані об’єкта. Тому програміст повинен подбати про виділення пам’яті для цих даних.
Виділення пам’яті здійснюється за допомогою спеціального методу класу – конструктора, якому зазвичай привласнюють ім’я Create (створити). Для того щоб підкреслити особливу роль і поведінку конструктора, в описі класу замість слова procedure використовується слово constructor.
Нижче наведено опис класу TPerson, до складу якого введено конструктор:
TPerson = Class private fname: string [15]; faddress: string [35]; constructor Cireate; // конструктор public procedure show; // метол end;
Виділення пам’яті для даних об’єкта відбувається шляхом надання значення результату застосування методу-конструктора до типу (класу) об’єкта. Наприклад, після виконання інструкції
professor : = TPerson.Create;
виділяється необхідна пам’ять для даних об’єкта professor.
Крім виділення пам’яті, конструктор, як правило, вирішує завдання привласнення полях об’єкта початкових значень, т. е. здійснює ініціалізацію об’єкта. Нижче наведено приклад реалізації конструктора для об’єкта TPerson:
constructor TPerson.Create; begin fname : = ''; faddress : = ''; end;
Реалізація конструктора дещо незвична. По-перше, в тілі конструктора немає звичних інструкцій New, що забезпечують виділення динамічної пам’яті (всю необхідну роботу по виділенню пам’яті виконує компілятор). По-друге, формально конструктор НЕ повертає значення, хоча в програмі звернення до конструктора здійснюється як до методу-функції.
Після оголошення та ініціалізації об’єкт можна використовувати, наприклад, встановити значення поля об’єкта. Доступ до поля об’єкта здійснюється зазначенням імені об’єкта та імені поля, які відокремлюються один від одного крапкою. Хоча об’єкт є посиланням, правило доступу до даних за допомогою посилання, згідно з яким після імені змінної, що є посиланням, треба ставити значок ^, на об’єкти не поширюється.
Наприклад, для доступу до поля fname об’єкта professor замість professor * .fname треба писати
professor.fname
Очевидно, що такий спосіб доступу до полів об’єкта більш природний.
Якщо в програмі будь-якої об’єкт більше не використовується, то можна звільнити пам’ять, займану полями даного об’єкта. Для виконання цієї дії використовують метод-деструктор Free. Наприклад, для того, щоб звільнити пам’ять, займану полями об’єкта professor, достатньо записати
professor.Free;