загрузка...
загрузка...
На головну

Delphi Pascal (DP)

  1. A) Compare BASIC and PASCAL; b) Speak on the difference in BASIC and PASCAL structures.
  2. Знайомство з середовища DELPHI
  3. Компонентна модель Borland Delphi
  4. Методичні посібник з вивчення алгометріческого мови pascal
  5. Мова програмування Delphi та середовище розробки Turbo Delphi 2006 1 сторінка
  6. Мова програмування Delphi та середовище розробки Turbo Delphi 2006 2 сторінка

Тема класу включає ім'я класу і директиву classі оголошується в розділі опису типів наступним чином:

typeІмяКласса= class

після директиви classвідразу починається тіло класу, що містить в довільному порядку перелік властивостей і заголовки методів. Порядок проходження директив public и private і їх кількість не мають значення. Кожна директива відноситься до всіх наступних елементів класу до появи іншої директиви.

Конструктори задаються за допомогою директиви constructor. Клас може мати будь-яку кількість конструкторів. Різні конструктори по-різному можуть ініціювати створювані об'єкти. На практиці часто використовуються класи з двома конструкторами: перший встановлює властивості створюваного об'єкта в значення за замовчуванням, другий - в значення, передані через вхідні параметри конструктора. Конструкторам можна давати будь-які імена. Стандартним ім'ям є Create. Всі однойменні (перевантажені) методи повинні мати в заголовку директиву overload. Деструкція в класі один, позначається директивою destructor і має ім'я Destroy.

Set-методи оформляються як процедури, які беруть необхідні вхідні параметри. Get-методи оформляються як функції, які повертають значення запитуваної властивості. Програмна реалізація методів зазвичай виноситься за рамки класу. При цьому заголовок методу обов'язково повинен містити ім'я класу і через точку - ім'я методу:

procedure ІмяКласса. ІмяМетода (параметри);

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

Властивості класу оголошуються за допомогою комбінації директив classvar (Тільки для версії Delphi 2005/2006), а методи класу - за допомогою однієї директиви class.

Як приклад розглянемо опис класу кіл, оформивши для цього окремий програмний модуль:

Unit Circle; // Заголовок модуля

interface// Відкритий розділ модуля

type

TCircle = class // Заголовок класу

private // Закриті властивості

x, y: integer; // Координати центру

r: integer; // Радіус кола

public // Відкриті методи

constructorCreate; overload;

constructor Create (ax, ay, ar: integer); overload;

destructor Destroy;

function GetX: integer;

function GetY: integer;

function GetR: integer;

function Length: real; // Підрахунок довжини окружності

procedure SetXY (ax, ay: integer);

procedure SetR (ar: integer);

procedure MoveTo (ax, ay: integer); // Метод переміщення

procedure Show; // Метод промальовування окружності

end; // Кінець опису класу

implementation// Закритий розділ модуля

// Для простоти реалізація деяких очевидних методів пропущена

constructor TCircle.Create; // Реалізація конструктора

begin

x: = 0; y: = 0; r: = 0;

end;

constructor TCircle.Create (ax, ay, ar: integer); // Інша реалізація

begin

x: = ax; y: = ay; r: = ar;

end;

function TCircle.GetX: integer;

begin

result: = x; // Result - внутрішня змінна мови DP

end;

function TCircle.Length: real;

begin

result: = 6.28 * r;

end;

procedure TCircle.MoveTo (ax, ay: integer);

begin

«Якщо окружність намальована, то стерти її»;

x: = ax; y: = ay;

// А інакше - можна викликати метод SetXY (ax, ay);

Show;

end;

procedure TCircle.Show;

begin

«Відображення кола»;

end;

end;

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

2. Мова C ++

Тема класу включає ім'я класу і директиву class. Всі конструктори класу мають одне і те ж ім'я, що збігається з ім'ям класу. Деструкція тільки один, його ім'я також збігається з ім'ям класу, але перед ім'ям ставиться символ ~ (тильда, хвиляста риса). директиви public и private використовуються так само, як і в мові DP. Програмну реалізацію методів можна або винести за межі класу, або вставити відразу за заголовком методу. Для винесеною реалізації в заголовку обов'язково треба спочатку вказати ім'я класу. Класові (статичні) властивості і методи оголошуються за допомогою директиви static.

Приклад для класу кіл (деякі методи пропущені):

class Circle

{ private:

int x; int y; int r;

public:

Circle (); // Конструктор без параметрів

Circle (int ax, int ay, int ar); // Конструктор з трьома параметрами

Circle (int, int); // Конструктор з двома параметрами

int GetX () { return x}; // Вбудована реалізація методу

void SetXY (int ax, int ay) {x = ax; y = ay}; // аналогічно

void MoveTo (int ax, int ay); // Реалізація винесена за тіло класу

void Show (); // аналогічно

~ Circle (); // деструктор

}; // Кінець тіла класу

Програмна реалізація деяких методів за межами класу:

Circle :: Circle () // реалізація конструктора без параметрів

{X = 0; y = 0; r = 0};

Circle :: MoveTo (int ax, int ay) // реалізація методу переміщення

{ «Стерти»; SetXY (ax, ay); Show (); };

3. Мови Java і С #

Опис класу схоже на С ++ за декількома відмінностями:

· кожен елемент класу має свою власну директиву public або private;

· Всі реальні (тобто не абстрактні) методи обов'язково повинні бути програмно реалізовані всередині класу відразу за своїм заголовком, тобто Усе методи повністю визначаються в тілі класу;

· деструктори не використовуються, тому в мову Java і платформу .NET вбудований механізм «збірки сміття», тобто звільнення пам'яті з-під невикористовуваних об'єктів проводиться автоматично лише при нестачі пам'яті.

Приклад опису класу кіл (деякі методи пропущені):

class Circle

{ private int x;

private int y;

private int r;

public Circle () {x = 0; y = 0; r = 100;}

public Circle (int ax, int ay, int ar) {x = ax; y = ay; r = ar;}

public int GetX () {return x;}

publicvoid MoveTo (int ax, int ay)

{ «Стерти»; SetXY (ax, ay); Show (); }

}; // Кінець опису класу




Принцип поліморфізму і його прояви | Вступ | Історія розвитку об'єктної технології | Поняття про об'єкти | практичні завдання | Завдання 2. Самостійно придумати і описати на різних мовах 2-3 класу для об'єктів різної природи. | Приклади тестових завдань | Основні типи взаємодії | Агрегація і композиція | Узагальнення і спадкування |

загрузка...
© um.co.ua - учбові матеріали та реферати