WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Поля, властивості та методи Дельфі - Реферат

Поля, властивості та методи Дельфі - Реферат


РЕФЕРАТ
на тему:
"Поля, властивості та методи Дельфі"
1. Поняття поля, властивостей і методів Delphi
Поля класу є перемінними, оголошеними усередині класу. Вони призначені для збереження даних під час роботи екземпляра класу (об'єкта). Обмежень на тип полів у класі не передбачено. В описі класу поля повинні передувати методам і властивостям. Звичайно поля використовуються для забезпечення виконання операцій усередині класу.
Поля призначені для використання усередині класу. Однак клас повинен якимось чином взаємодіяти з іншими класами чи програмними елементами додатку. У переважній більшості випадків клас повинен виконати з деякими даними визначені дії і представити результат.
Для одержання і передачі даних у класі застосовуються властивості. Для оголошення властивостей у класі використовується зарезервоване слово property.
Властивості являють собою атрибути, які складають індивідуальність об'єкта і допомагають описати його. Наприклад, звичайна кнопка у вікні додатку має такі властивості, як колір, розміри, положення. Для екземпляра класу "кнопка" значення цих атрибутів задаються за допомогою властивостей - спеціальним перемінним, обумовленим ключовим словом property. Колір може задаватися властивістю Color, розміри - властивостями Width і Height і т.д.
Тому що властивість забезпечує обмін даними з зовнішнім середовищем, то для доступу до його значення використовуються спеціальні методи класу. Тому звичайно властивість визначається трьома елементами: полем і двома методами, що здійснюють його читання/запис:
type
TAnObject = class(TObject)
function GetColor: TSomeType;
procedure SetColor(ANewValue: TSomeType);
property AColor: TSomeType read GetColor write SetColor;
end;
У даному прикладі доступ до значення властивості AColor здійснюється через виклики методів GetColor і SetColor. Однак у звертанні до цих методів у явному виді немає необхідності: досить написати:
AnObject.AColor := AValue;
AVariable := AnObject.AColor;
і компілятор самостійно відтранслює звертання до властивості AColor у виклики методів Getcolor чи Setcolor. Tо є зовні властивість виглядає в точності як звичайне поле, але за всяким звертанням до нього можуть стояти потрібні вам дії. Наприклад, якщо у вас є об'єкт, що представляє собою квадрат на екрані, і його властивості "колір" ви привласнюєте значення "білий", те відбудеться негайне перемальовування, що приводить реальний колір на екрані у відповідність зі значенням властивості. Виконання цієї операції здійснюється методом, що зв'язаний з установкою значення властивості "колір".
У методах, що входять до складу властивостей, може здійснюватися перевірка установлюваної величини на влучення в припустимий діапазон значень і виклик інших процедур, що залежать від внесених змін. Якщо ж потреби в спеціальних процедурах читання і/чи запису ні, можна замість імен методів застосовувати імена полів. Розглянемо наступну конструкцію:
TPropObject = class(TObject)
FValue: TSomeType;
procedure DoSomething;
function Correct(AValue: Integer):boolean;
procedure SetValue(NewValue: Integer);
property AValue: Integer read FValue write SetValue;
end;
...
procedure TPropObject.SetValue(NewValue: Integer);
begin
if (NewValueoFValue) and Correct(NewValue) then EValue := NewValue;
DoSomething;
end;
У цьому прикладі читання значення властивості AValue означає просте читання поля rvalue. Зате при присвоєнні значення усередині SetValue викликається відразу два методи.
Якщо властивість повинна тільки читатися чи записуватися, у його описі може бути присутнім відповідний метод:
type
TAnObject = class(TObject)
property AProperty: TSomeType read GetValue;
end;
У цьому прикладі поза об'єктом значення властивості можна лише прочитати; спроба привласнити властивості AProperty значення викликає помилку компіляції.
Для присвоєння властивості значення за замовчуванням використовується ключове слово default:
property Visible: boolean read FVisible write SetVisible default True;
Це означає, що при запуску програми властивість буде встановлено компілятором у True.
Властивість може бути і векторною; у цьому випадку вона зовні виглядає як масив:
property APoints[Index : Integer]:TPoint read GetPoint write SetPoint;
Насправді в класі може і не бути відповідного поля - масиву. Нагадаємо, що вся обробка звертань до внутрішніх структур класу може бути замаскована.
Для векторної властивості необхідно описати не тільки тип елементів масиву, але також ім'я і тип індексу. Після ключових слів read і write у цьому випадку повинні стояти імена методів - використання тут полів масивів неприпустимо. Метод, який читає значення векторної властивості, повинен бути описаний як функція, що повертає значення того ж типу, що й елементи властивості, і маюча єдиний параметр того ж типу і з тим же ім'ям, що й індекс властивості:
function GetPoint(Index:Integer):TPoint;
Аналогічно, метод, який поміщає значення в таку властивість, повинен першим параметром мати індекс, а другим - перемінну потрібного типу (яка може бути передана як по посиланню, так і за значенням):
procedure SetPoint(Index:Integer; NewPoint:TPoint);
У векторних властивостей є ще одна важлива особливість. Деякі класи в Delphi (списки т-List, набори рядків TStrings) "побудовані" навколо основної векторної властивості. Основний метод такого класу дає доступ до деякого масиву, а всі інші методи є ніби допоміжними. Спеціально для полегшення роботи в цьому випадку векторна властивість може бути описана з ключовим словом default:
type
TMyObject = class;
property Strings[Index: Integer]: string read Get write Put; default;
end;
Якщо в об'єкта є така властивість, то можна його не згадувати, а ставити індекс у квадратних дужках відразу після імені об'єкта:
var AMyObject: TMyObject;
begin
...
AMyObject.Strings[1] := 'First'; {перший спосіб}
AMyObject[2] := 'Second'; (другий спосіб}
...
end.
Будьте уважні, застосовуючи зарезервоване слово default, для звичайних і векторних властивостей воно вживається в різних випадках і з різним синтаксисом.
Про роль властивостей у Delphi красномовно говорить наступний факт: у всіх наявних у розпорядженні
Loading...

 
 

Цікаве