Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАМУВАННЯ ТА АЛГОРИТМІЧНІ МОВИ.doc
Скачиваний:
23
Добавлен:
28.10.2018
Размер:
543.74 Кб
Скачать
  1. Класи загального призначення.

Клас - це тип даних, визначений користувачем. Те, що в Delphi є множина визначених класів, не суперечить цьому визначенню - адже розробники Delphi теж користувачі Object Pascal. Клас повинен бути оголошений до того, як буде оголошена хоча б одна змінна цього класу, тобто клас не може оголошуватись усередині оголошення змінної. Клас повинен оголошуватись з областю видимості - програма або модуль. Синтаксис оголошення класу такий

Туре <ім'я класу> = Class (<ім'я класу - батька>)

public {доступно всім}

<поля, методи, властивості, події>

published {видні в Інспекторі Об'єктів і змінювані}

<поля, властивості>

protected {доступ тільки нащадкам}

<поля, методи, властивості, події>

private {тільки в модулі}

<поля, методи, властивості, події>

Ім'я класу може бути будь-яким допустимим ідентифікатором. Але прийнято ідентифікатори більшості класів починати із символу "Т". Ім'я класу-батька може не вказуватися. Тоді передбачається, що даний клас є безпосереднім нащадком TObject - найбільш загального з визначених класів. Таким чином, еквівалентні такі оголошення:

Type TmyClass = class

. . .

end;

Type TmyClass = class (TObject)

. . .

end;

Клас успадковує поля, методи, властивості, події від своїх предків і може скасовувати якісь із цих елементів класу або вводити нові. Доступ до елементів класу визначається тим, у якому розділі вони оголошені. Якщо ви потребуєте спеціального захисту об'єкта або його частини, то для цього необхідно помістити його в окремий модуль.

З одного боку, Delphi, будучи візуальним середовищем розробки додатків, орієнтований на тих програмістів, що із готових компонент "збирають" конкретні додатки для кінцевих користувачів. З іншого боку, будучи розширюваним об'єктно-орієнтованим інструментом, цей продукт становить інтерес і для спеціалістів, що займаються нарощуванням функціональних можливостей вже існуючих програмних бібліотек. Тому, виглядає абсолютно логічною поява в Object Pascal нових розділів в описі класів - published і protected. Разом із раніше введеними розділами (public і private) вони надають повний контроль над можливостями використання і "безболісної" (у значенні запобігання фатальних із погляду ідеології помилок) модифікації компонентів Visual Component Library (VCL - бібліотека класів Delphi).

Розділ public (відкритий, доступні) призначений для оголошень, що доступні для зовнішнього використання. Секція public не накладає обмежень на область видимості в ній полів, методів і властивостей-їх можна викликати в будь-якому іншому модулі програми. Це відкритий інтерфейс класу.

Розділ published (що публікується, декларовані) містить відкриті властивості, що з'являються в процесі проектування на сторінці властивостей Інспектора Об'єктів і котрі користувач може впроваджувати в процесі проектування. Секція published так само не обмежує область видимості, проте в ній перераховуються властивості, що повинні бути доступні не тільки на етапі виконання, але і на етапі конструювання програми (тобто у вікні Інспектора Об'єктів). Секція published використовується тільки при розробці компонентів. Зазначимо, що за замовченням (без оголошення) секція вважається оголошеною як published. Така секція розташовується на самому початку оголошення класу будь-якої форми і продовжується до першої оголошеної секції. У неї середовище Delphi поміщає опис вставлених у форму компонентів. Програмісту не варто поміщати в неї власні елементи опису класу або видаляти з неї елементи, вставлені середовищем.

Розділ private (закритий, особисті) містить оголошення полів, процедур і функцій, використовуваних тільки усередині даного класу. Секція private звужує область видимості до мінімуму: особисті елементи опису доступні тільки усередині методів даного класу і підпрограмах, що знаходяться в тому ж модулі, де описаний клас. Елемент, оголошений у секції private, стає недоступним навіть найближчим нащадкам класу, якщо вони розміщаються в інших модулях.

Розділ protected (захищений) містить оголошення, доступні тільки для нащадків класу. Як і у випадку закритих елементів, можна сховати деталі реалізації захищених елементів від кінцевого користувача. Проте, на відміну від закритих, захищені елементи залишаються доступні для програмістів, що захочуть робити від цього класу похідні об'єкти, причому не потрібно, щоб похідні об'єкти оголошувалися в цьому ж модулі.

В Object Pascal дозволяється скільки завгодно разів оголошувати будь-яку секцію, причому порядок секцій не має значення. Будь-яка секція може бути порожньою.

29