Властивості об'єктів в delphi - life-prog

У Object Pascal обмеження доступу до полів об'єкта реалізується за допомогою властивостей об'єкта. Властивість об'єкта характеризується полем, що зберігає значенням властивості, і двома методами, що забезпечують доступ до поля властивості. Метод установки значення властивості називається методом запису властивості (write), метод отримання значення властивості називається методом читання властивості (read).

В описі класу перед ім'ям властивості записують слово property (властивість). Після імені властивості вказується його тип, потім імена методів, що забезпечують доступ до значення властивості. Після слова read вказується ім'я методу, що забезпечує читання властивості, після слова write - ім'я методу запису властивості. Наступний приклад містить опис класу з двома властивостями - Name і Oklad.

Tperson = class
private
fname: string;
foklad: integer;
Constructor Create (name: string; oklad: integer);
Procedure show;
Function GetName. string;
Function GetOklad. integer;
Procedure SetOklad (NewOklad: integer);
public
Property Name: string
read GetName;
Property Oklad: integer
read GetOklad
write SetOklad;
end;

У програмі для завдання властивості не обов'язково записувати інструкцію застосування до об'єкта методу установки значення властивості, можна записати звичайну інструкцію присвоювання значення властивості. Наприклад, щоб привласнити значення властивості Oklad об'єкта sotrudnik досить написати

Компілятор перетранслірует наведену інструкцію в інструкцію виклику методу

Зовні використання властивостей у програмі нічим не відрізняється від використання полів об'єкта. Разом з тим між властивістю і полем об'єкта існує принципова відмінність: при привласненні і читанні значення властивості автоматично викликається процедура, яка виконує деякі дії.

У програмі на методи властивості можна покласти деякі додаткові завдання. Наприклад, за допомогою методу можна перевірити коректність привласнюються властивості значень, встановити значення інших, логічно пов'язаних з властивістю, полів, викликати допоміжну процедуру.

Оформлення даних об'єкта як властивості дозволяє обмежити доступ до полів, що зберігають значення властивостей об'єкта, наприклад, можна вирішити тільки читання. Щоб інструкції програми не могли змінити значення властивості, потрібно вказати тільки ім'я методу читання. Спроба привласнити значення властивості, призначеному тільки для читання, викличе помилку при компіляції. У наведеному вище описі класу властивість Name є тільки для читання, а властивість Oklad - для читання і запису.

Встановити значення властивості, захищеного від запису, можна під час ініціалізації об'єкта.

Схожі статті