ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Динамічні об'єкти 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); (Видалення динамічного об'єкта)

    .......

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


         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status