Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Об'єктно-орієнтоване програмування

Реферат Об'єктно-орієнтоване програмування





Ім'я останнього вказується в круглих дужках після слова object. З методів спадкоємця можна викликати методи батька. Для створення спадкоємця не вимагається мати вихідний текст об'єкта батька. Об'єкт-батько може бути вже в складі оттранслировать модуля.

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

У нашому прикладі до об'єкта, пов'язаному з визначенням положення графічного елементу, просто додалося нове поле, що описує ознака видимості графічної точки, і кілька нових методів, пов'язаних з режимом відображення точки і її перетвореннями.


. Віртуальні методи


Успадкування дозволяє створювати ієрархічні, пов'язані відносинами підпорядкування, структури даних. Слід, однак, зауважити, що при використанні цієї можливості можуть виникнути проблеми. Припустимо, що в нашій графічній програмі необхідно визначити об'єкт Circle, який є нащадком іншого об'єкта Point:


Type=bject (point): Integer; Show; Hide; Expand (ExpandBy: Integer); Contact (ContactBy: Integer) ;;


Новий об'єкт Circle відповідає окружності. Оскільки властивості окружності відрізняються від властивостей точки, в об'єкті-спадкоємця доведеться змінювати процедури Show і Hide, які відображають коло і видаляють її зображення з екрану. Може виявитися, що метод Init (див. Попередній приклад) об'єкта Circle, успадкований від об'єкта Point, також використовує методи Show і Hide, надалі під час трансляції об'єкта Point використовує посилання на старі методи. Очевидно в об'єкті Circle вони працювати не будуть.

Можна, звичайно, спробувати «перекрити» метод Init. Щоб це зробити, нам доведеться повністю відтворити текст методу. Це ускладнить роботу, та й не завжди можливо, оскільки вихідного тексту програми може не виявитися під рукою (якщо об'єкт-батько вже знаходитися в оттранслировать модулі).

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

Щоб використовувати віртуальний метод, необхідно в описі об'єкта після заголовка методу додати ключове слово virtual. Заголовки віртуальних методів батька і спадкоємця повинні в точності збігатися. Ініціалізація примірника об'єкта, що має віртуальні методи, повинна виконуватися за допомогою спеціального методу - конструктора. Конструктор зазвичай присвоює полях об'єкта початкові значення та виконує інші дії з ініціалізації об'єкта. У заголовку методу-конструктора слово procedure замінюється словом constructor. Дії зворотні діям конструктора, виконує ще один спеціальний метод - деструктор. Він описується словом destructor.

Конструктор виконує дії з підготовки пізнього зв'язування. Ці дії полягають у створенні покажчика на таблицю віртуальних методів, яка в подальшому використовується для пошуку методів. Таблиця містить адреси усіх віртуальних методів. При виклику віртуального методу по його імені визначається адресу, а потім за цією адресою передається керування.

У кожного об'єктного типу є своя власна таблиця віртуальних методів, що дозволяє одному і тому ж оператору викликати різні процедури. Якщо є декілька екземплярів об'єктів одного типу, то недостатньо викликати конструктор для одного з них, а потім просто скопіювати цей екземпляр в усі інші. Кожен об'єкт повинен мати свій власний конструктор, який викликається для кожного екземпляра. В іншому випадку можливий збій у роботі програми.

Зауважимо, що конструктор або деструктор, можуть бути «порожніми», тобто не містити операторів. Весь необхідний код в цьому випадку створюється при трансляції ключових слів construct і destruct.


. Динамічне створення об'єктів


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


Назад | сторінка 3 з 4 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Аналіз методів впливу на привибійну зону пласта в умовах об'єкта АВ1 Са ...
  • Реферат на тему: Розрахунок забруднення водного об'єкта і атмосферного повітря. Вибухон ...
  • Реферат на тему: Поняття об'єкта і суб'єкта в управлінні соціальною роботою
  • Реферат на тему: Методи кластерізації: процедура Мак-кіна, метод К-методів, сітчасті методи
  • Реферат на тему: Точність (правильність і прецизійність) методів та результатів вимірювань. ...