Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Властивості класів,,,.docx
Скачиваний:
5
Добавлен:
26.10.2018
Размер:
252.91 Кб
Скачать

3.6.1.1 Оголошення компонентних класів

Випереджаючі оголошення класів Бібліотеки Візуальних Компонентів VCL, що входить до складу C++Builder, використовують модифікатор _declspec:

_declspec (<специфікатор>)

Це ключове слово може з'являтися в будь-якому місці переліку оголошень, а не тільки безпосередньо перед оголошенням, що модифікується, причому специфікатор приймає одне з наступних значень:

delphiclass використовується для випереджаючого оголошення прямих або непрямих похідних від VCL класу TObject. Він визначає правила сумісності VCL при зверненні з RTTI, конструкторами, деструкцією і виключеннями.

delphireturn використовується для випереджаючого оголошення прямих або непрямих похідних від VCL класів Currency, AnsiString, Variant, TDateTime і Set. Він визначає правила сумісності VCL при поводженні з параметрами і повертаними значеннями функцій-членів.

pascalimplementation вказує, що компонентний клас реалізований на Об'єктному Паскалі.

VCL клас має наступні обмеження:

• Заборонено спадкоємство віртуальних базових класів.

• Компонентні класи самі не можуть служити базовими класами для спадкоємства.

• Компонентні об'єкти створюються в динамічній пам'яті за допомогою оператораnew.

3.6.1.2 Оголошення властивостей

C++Buiider використовує модифікатор _property для ідентифікації властивостей компонентних класів. Синтаксис опису властивості має вигляд:

property <тип властивості> <ім'я властивості> = {<список атрибутів>} ;

де список атрибутів містить перерахування наступних атрибутів властивості:

write = < член даних або метод запису > визначає спосіб привласнення значення членові даних;

read = < член даних або метод читання > визначає спосіб набуття значення члена даних;

default = < булева константа > вирішує або забороняє збереження значення властивості за умовчанням у файлі форми з розширенням .dim;

stored = < булева константа або функція > визначає спосіб збереження значення властивості у файлі форми з розширенням .dfm.

C++Buiider використовує модифікатор _published для специфікації тих властивостей компонентів, які відображатимуться Інспектором об'єктів на стадії проектування додатку. Якщо розробник компонентів бажає вирішити модифікацію значення деякої властивості, воно не оголошується як _published. Правила видимості, визначені цим ключовим словом, не відрізняються від правил видимості членів даних, методів і властивостей, оголошених як public. Єдина відмінність виявляється в тому, що під час роботи програми Інспекторові об'єктів передається інформація RTTI.

3.6.1.3 Оголошення обробників подій

C++Buiider використовує модифікатор _closure для оголошення функції обробників подій:

<тип> (_closure * <name>) (<список параметрів>)

Це ключове слово визначає покажчик функції з ім'ям name. На відміну від 4-байтового адресного покажчика звичайної функції (який передається в кодові регістри CS:IP) 8-байтовий _closure передає ще і прихований параметр (непостійний покажчик this на екземпляр поточного класу).

Введення 8-байтових покажчиків робить можливим не тільки викликати деяку функцію певного класу, але і звертатися до функції в певному екземплярі цього класу. Ця здатність була запозичена з Об'єктного Паскаля, а _closure виявився життєво необхідним для реалізації механізму подій в Бібліотеці Візуальних Компонентів.