Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Динамические об'єкти TurboPacal

РефератДопомога в написанніДізнатися вартістьмоєї роботи

За необхідності деструктор, як будь-який інший метод об'єкта (крім конструктора!), можна назвати виртуальным. New (Pline, PLine^.Init); викликає повідомлення про ошибке. Dispose (PLine, Done); {Видалення динамічного объекта}. New (PLine, Init); {Розміщення динамічного объекта}. Динамічні объекты. PLine := New (TLine); или. PLine := New (TLine, Init): TLine = object (Point). Destructor Done; end… Читати ще >

Динамические об'єкти TurboPacal (реферат, курсова, диплом, контрольна)

ДИНАМІЧНІ ОБЪЕКТЫ.

Об'єктні перемінні вo що свідчить подібні звичайним змінним Турбо Паскаля, зокрема, їх можна безкоштовно розміщувати у динамічної пам’яті. Турбо Паскаль містить кошти, які полегшують розміщення об'єктних змінних в багатьох та його видалення з її, наприклад: var.

Pline: ^Tline;

New (Pline, Init):

У цьому вся прикладі розміщення об'єктної перемінної (її у вказує PLINE) купи супроводжується одночасним зверненням до конструктору TLINE. INIT для ініціалізації об'єкту і зв’язування віртуальних методів з новоствореної перемінної: у процедурі NEW допускається як друге параметра вказувати звернення до конструктору.

Понад те, процедуру NEW можна викликати й як функцію — у разі вона повертає значення типу POINTER, указывающее на динамічно розподілений объект:

PLine := New (TLine); или.

PLine := New (TLine, Init):

Зверніть увагу: першим параметром процедурі New передається покажчик на динамічно що розподіляється об'єкт, тоді як першим параметром функції NEW — тип распределяемого об'єкта. І те, в іншому разі за другому параметра звернення допускається використовувати виклик конструктора, проте ім'я конструктора може бути складовимлибонь у момент звернення динамічний об'єкт ще створено. Наприклад, оператор

New (Pline, PLine^.Init); викликає повідомлення про ошибке.

При зверненні до NEW з одночасним викликом конструктора динамічна пам’ять резервируемая з допомогою спеціального програмного коду, входить у будь-який конструктор і викликаний на початок роботи виконуваної частини конструктора (до begin). У цьому динамічна пам’ять може бути вичерпаною. І тут стандартна функція обробки помилок адміністратора купи видає значення 0, що викликає аварійне завершення програми з кодом помилки 203. Якщо використовується нестандартна функція обробки помилок, і цю функцію повертає 1, конструктор пропускає оператори після begin і повертає NIL. Отже гарантується, що виконувані оператори конструктора працюватимуть лише за умови нормального розподілу динамічної пам’яті. Однак у тілі конструктора може бути новий динамічний об'єкт, у ньому — свій перший і т.д. Турбо Паскаль допускає довільну глибину вкладеності конструкторів. Коли якомусь рівні то бракуватиме динамічної пам’яті, необхідно ліквідувати весь ланцюжок успішно розподілених об'єктів. Щоб війни операція стала можливої, в Турбо Паскаль введена стандартна процедура без параметрів FAIL, яка може викликатися тільки з конструктори і що звільняє вже виділену конструктором пам’ять, завершує роботи й повертає NIL.

Для видалення динамічного об'єкта з купи використовується особливий метод — деструктор, описуваний з допомогою зарезервованого слова DESTRUCTOR. У цьому методі можна передбачити всі дії, пов’язані з ліквідацією динамічного об'єкта (тобто. перемінної об'єктного типу, розміщеної в динамічної пам’яті), наприклад, здійснити потрібну корекцію списку динамічних об'єктів. Звернення до деструктору вказується другим параметром при виклик процедури DISPOSE, например:

… type.

TLine = object (Point).

Constructor Init;

Destructor Done; end;

New (PLine, Init); {Розміщення динамічного объекта}.

Dispose (PLine, Done); {Видалення динамічного объекта}.

За необхідності деструктор, як будь-який інший метод об'єкта (крім конструктора!), можна назвати виртуальным.

Показати весь текст
Заповнити форму поточною роботою