Об’єднання в об’єкті коду та даних називається інкапсуляцією. При роботі з об’єктами необхідно створювати достатню кількість методів, які б забезпечували роботу з усіма полями даних, щоб не виникала необхідність звертатися до них безпосередньо. При цьому не обов’язково використовувати директиву PRIVATE, достатньо створити стільки методів, скільки необхідно для роботи з полями об’єкта.
Довизначимо наші об’єкти TStudent і TStudent1 так, щоб передбачити всеможливі операції з ними у вигляді методів.
Type
TStudent=OBJECT
Name:String[30];
Date:String[10];
Rate:Real;
Procedure Init(Nm,Dt:String; Rt:Real);
Function GetName:String;
Function GetDate:String;
Function GetRate:Real;
Procedure ShowName;
Procedure ShowDate;
Procedure ShowRate;
END;
TStudent1=OBJECT(TStudent)
Bal:Real;
Procedure Init(Nm,Dt:String; Rt,Bl:Real);
Function GetBal:Real;
Function GetSum:Real;
Procedure ShowBal;
Procedure ShowAll;
END;
Методи ShowName, ShowDate, ShowRateі ShowBalвиводять прізвище, дату народження, розмір стипендії і середній бал відповідно. Метод GetSumвикористовуєBalдля розрахунку суми стипедії від середнього балу. Метод ShowAllвиводить значення всіх полів одночасно.
Для екземпляру St1 типу TStudent1 можна використовувати набір методів для непрямої роботи з полями даних, наприклад:
WITH St1 DO BEGIN
Init(‘Ляшук С.Т.’,’10.02.1995’,700,4.5);
ShowAll;
END;
Доступ до полів об’єкту здійснюється лише методами цього об’єкту. Таке правило є не обов’язковим, а рекомендаційним.