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

     

     

     

     

     

         
     
    Додавання до Класу
         

     

    Інформатика, програмування

    Додавання до Класу

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

    Для похідного класу можна визначити характеристики та функції додатково до тих, які успадковуються з його базового класу. Це дає альтернативну стратегію забезпечити кошти пов'язаного списку. Зауважте, коли в той slist, який визначався вище, міститься елемент, то створюється slink, що містить два покажчика. На їхнє створення витрачається час, але ж без одного з покажчиків можна обійтися, за умови, що потрібно тільки щоб об'єкт міг перебувати в одному списку. Так що вказівник next на наступний можна помістити в сам об'єкт, замість того, щоб вміщувати його в окремий об'єкт slink. Ідея полягає в тому, щоб створити клас olink з єдиним полем next, і клас olist, який може обробляти покажчиками на такі ланки olink. Тоді olist зможе маніпулювати об'єктами будь-якого класу, похідного від olink. Буква "o" у назвах варто для того, щоб нагадувати вам, що об'єкт може перебувати одночасно лише в одному списку olist:

    struct olink (

    olink * next;

    );

    Клас olist дуже нагадує клас slist. Відмінність полягає в тому, що користувач класу olist маніпулює об'єктами класу olink безпосередньо:

    class olist (

    olink * last;

    public:

    void insert (olink * p);

    void append (olink * p);

    olink * get ();

    // ...

    );

    Ми можемо вивести з класу olink клас name:

    class name: public olink (

    // ...

    );

    Тепер легко зробити список, який можна використовувати без накладних витрат часу на розміщення або пам'яті.

    Об'єкти, помещаеми в olist, втрачають свій тип. Це означає, що компілятор знає тільки те, що вони olink "і. Правильний тип можна відновити за допомогою явного перетворення типу об'єктів, вийнятих з olist.

    Наприклад:

    void f ()

    (

    olist ll;

    name nn;

    ll.insert (& nn); //Тип & nn втрачено

    name * pn = (name *) ll.get ();// і відновлений

    )

    Інший спосіб: тип можна відновити, вивівши ще один клас з olist для обробки перетворення типу:

    class olist: public olist (

    // ...

    name * get () ( return (name *) olist:: get ();)

    );

    Назва name може одночасно перебувати лише в одному olist. Для імен це може бути і не підходить, але в класах, для яких це підійде повністю, не бракує. Наприклад, клас фігур shape використовує для підтримки списку всіх фігур саме цей метод. Зверніть увагу, що можна було б визначити slist як похідний від olist, поєднуючи таким чином обидва поняття. Проте використання базових і похідних класів на такому мікроскопічному рівні може дуже сильно спотворити код.

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.realcoding.net

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

     

     

     

     

     

     

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