Одним з найважливіших принципів ООП є те, що програміст при розробці програми повинен думати про код і дані одночасно. Вони не повинні існувати окремо. Дані керують потоком коду, а код керує структурою і значеннями даних.Якщо код і дані є розділеними елементами, то завжди існує небезпека виклику правильної процедури з неправильними даними чи помилкової процедури з правильними даними. Контроль за правильністю виклику покладається на програміста. Pascal не проводить подібної перевірки, окрім перевірки типів.Об’єктний тип здійснює синхронізацію коду і даних шляхом спільної побудови їх описів. За правилами хорошого стилю програмування, доступ до полів об’єкта здійснюється лише через методи, що працюють з даними полями. Щоб одержати значення одного з полів об’єкта, необхідно викликати відповідний метод, який повертає значення потрібного поля. Щоб присвоїти полю значення, теж необхідно викликати метод, який призначить даному полю нове значення.Інколи при використанні об’єктів всередині модулів можуть зустрічатися частини описів об’єктів, які експортувати небажано, наприклад, в комерційних застосунках. Необхідно передбачити об’єкти, методи яких доступні, але безпосередній доступ до даних об’єкта заборонений. В Pascal-і з цією метою використовуються приховані (приватні) поля і методи.
Приховані поля і методи доступні тільки всередині того модуля, в якому описаний об’єкт. Інші частини такого об’єкту можна експортувати, але поля і методи, описані як приховані, були б недоступними.
Поля і методи, які записані безпосередньо після заголовку об’єктного типу чи директиви PUBLIC, не мають ніяких обмежень на область дій. На відміну від них, поля і методи, оголошені після директиви PRIVATE, вважаються приватними (прихованими) і обмежені використанням в межах модуля. Повний опис об’єкту буде виглядати так:
TYPE
NewObject=OBJECT(батьківський)
поля; [загальнодоступні];методи; [загальнодоступні];
PRIVATE
поля; [приватні];методи; [приватні];
PUBLIC
поля; [загальнодоступні];методи; [загальнодоступні];
END;
Поля і методи в оголошенні об’єктного типу можуть оголошуватися як скриті (private), або загальнодоступні(Public). Частину полів і методів об'єктних типів можна оголосити як приховані.
Синтаксис оголошення:
Туре
ObjectType = objectЗвичайні поля і методи
Private
Public
Приховані поля і методи
end;
Ідентифікатори полів і методів, оголошених як приховані, доступні (видимі) тільки в межах програми або модуля, в яких вони оголошені. Поза модулем з їх описом приховані поля і методи невідомі (недоступні). Сам об'єктний тип і його решта компонентів видима по звичайних правилах.
Приховані компоненти об'єктних типів аналогічні змінним розділу реалізації (implementation) модуля. Це дозволяє ізолювати (приховати) технічні подробиці реалізації об'єктів від програм-споживачів, сприяє більшій незалежності програмних одиниць і служить додатковим засобом контролю за використанням об'єктів.
Таким чином можна використати вище сказані директиви Private, Public.
Type
Dot= object
Private
a,b: integer;
Public
constructor Init (x, y: integer);
procedure Show; virtual;
Private
procedure Hide; virtual;
procedure Move (Dat, Db: integer);
Public
destructor Done
end;
В цьому прикалді в якості скритих обявлені поля a і b, а також методи Move і Hide. В той же час методи Init, Show і Done мають статус загальнодоступних.Поля і методи обєкта, оголошені після директиви Private, будуть доступні тільки в межах даної програми або модуля. Але якщо цей об’єкт міститься в підключеному до програми модулі, ідентифікатори скритих полів і методів будуть для програміста невидимі. При цьому сам об’єкт буде повністю відкритим для використання. Для чого це потрібно? Наприклад, якщо це комерційна програма, само-собою, що її автори обмежують доступ користувачів до деталей використання даної програми. В результаті програмою можна користуватися, але не можна модифікувати її.
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг(0.003 сек.)