русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Федеральное агентство морского и речного транспорта


Дата додавання: 2014-11-28; переглядів: 736.


TCar = class(TObject)

procedure Move; dynamic;

end;

Різниця між віртуальними і динамічними методами полягає тільки в деталях програмної реалізації. Віртуальні методи оптимізовані для максимальної швидкодії, динамічні - для максимальної економії пам'яті (створення компактного коду).

  1. Структура опису класу.

Клас являє собою певний тип запису, який вміщає такі елементи, як поля, властивості і методи. Поля класу є аналогічні полям запису і служать для збереження інформації про об’єкт. Методами називаються процедури і функції, призначені для обробки полів. Властивості можна використовувати як поля, наприклад, за допомогою оператора присвоювання, або всередині класу доступ до властивостей виконують методи класу.

Опис класу має наступну структуру:

type <ім’я класу>=class(<ім’я ,батьківського класу>)

private <приватні описи>;

protected <захищені описи>;

public <загальнодоступні описи>;

published <опубліковані описи>;

end;

У приведеній структурі описами є об’явлення властивостей, методів та подій.

Приклад, опису класу:

type TColorCircle=class(TCircle);

FLeft, FTop, FRight, FBottom: Integer;

FColor: TColor;

end;

Тут клас TColorCircle створюється на основі батьківського класу TCircle. В порівнянні з батьківським, новий клас додатково містить чотири поля типу Integer і одне поле типу TColor.

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

Розділи private та protected містять захищені описи, що доступні всередині модуля, в якому вони знаходяться. Описи з розділу protected, крім того, є доступними для породжених класів за межами названого модуля.

Розділ public містить загальнодоступні описи, які видно у будь-якому місці програми, де є доступним даний клас.

Розділ published містить опубліковані описи, які на додаток до загальнодоступних описів породжують динамічну (тобто під час виконання програми) інформацію про тип (Run-Time Type Information, RTTI). За цією інформацією при виконанні програми відбувається перевірка на приналежність елементів об’єкта тому чи іншому класу. Одним з призначень розділу published є забезпечення доступу до властивостей об’єкта при розробці програми. В Інспекторі об’єктів видно ті властивості, які є опублікованими. Специфікатор published встановлюється по замовчуванню.

Об’єкти як екземпляри класу об’являються у програмі в розділі var як звичайні змінні. А для звертання до конкретного елемента об’єкта (до поля, властивості чи методу), як і у випадку запису, вказується ім’я об’єкта та ім’я елемента, розділені крапкою, тобто ім’я елемента є складеним. Наприклад,

var CCircle1: TColorCircle;

begin CCircle1.FLeft:=5;

CCircle1.FTop:=1

end;

  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 дозволяється скільки завгодно разів оголошувати будь-яку секцію, причому порядок секцій не має значення. Будь-яка секція може бути порожньою.

 

Федеральное агентство морского и речного транспорта

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Государственный университет морского и речного флота


<== попередня лекція | наступна лекція ==>
Віртуальні і динамічні методи | ЗАВДАННЯ ДО ВИКОНАННЯ КП


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн