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

Реферат Реалізація концепції контейнерів і ітераторів на прикладі односпрямованого пов'язаного списку





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

Ще список має поля cur і first, що вказують на поточний і головний елементи списку.


Клас TReverseIterator (итератор зворотного обходу)

Даний клас має єдиний конструктор, який отримує на вхід константну посилання на контейнер списку і реалізовану функцію nothing, що показує можливість створення об'єктів даного класу.

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

Ще список має поля cur і first, що вказують на поточний і головний елементи списку.

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

Клас TListException (клас винятків)

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

Клас має поля errmsg і errnum типу char * і int відповідно, що носять інформацію про поточну виняткової ситуації (текст і код помилки), і методи GetMessage і GetCode для подальшої обробки помилки в залежності від ситуації. Ще в класі реалізована операція виведення інформації про помилку в потік.


.4 Визначення відносин між класами


Клас TBasicIterator є базовим для класів TLineIterator, TReverseIterator і TArrayIterator, оскільки кожен похідний клас є конкретним окремим випадком базового ітератора.

Також клас TBasicIterator є дружнім для класу TList, так як він повинен мати доступ до елементів контейнера. Тут буде застосовуватися агрегація з класом TList, оскільки обидва класу самостійні, але TBasicIterator містить поле типу TList.

Між класами TList і TListException використовується відносини використання: клас TList використовує клас TListException для роботи з винятковими ситуаціями.

На малюнку 1 наведена діаграма класів.


Рисунок 1 - Діаграма класів




Глава 2. Реалізація


Для вирішення поставленого завдання я використовував мову програмування C ++. Програма розроблена в середовищі Microsoft Visual Studio 2012, консольний додаток Win32. Операційна система Windows 7.

Програма являє собою сукупність об'єктних модулів, заголовних файлів і файлів з іхсодним кодом самої програми.

Кожен клас складається з двох файлів: інтерфейсної частини - «ClassName.h» і реалізаційною - «ClassName.cpp».


2.1 Реалізація класу TList


template lt; typename T gt; TList

{TListBasicIterator lt; T gt ;;: lt; T gt; * first; lt; T gt; * cur; lt; T gt; amp; CreateFirst (T val) ;: operator=(const TList lt; T gt; amp;); (const TList lt; T gt; amp;); isEmpty (); isEnd (); amp; Rewind (); amp; Set (T val); Get (); amp; Next (); amp; InsertAfterCurrent (T val); amp; AddLast (T val); amp; DeleteCurrent (); (void);

~ TList (void); ostream amp; operator lt; lt; (ostream amp; os, TList lt; T gt; amp; li)

{(li.isEmpty ())

{ lt; lt; Empty raquo ;; os;

}. Rewind (); (! li.isEnd ())

{ lt; lt; li.Get () lt; lt; raquo ;;. Next ();

}. Rewind (); os;

}

};


2.2 Реалізація класу TBasicIterator


class TListBasicIterator

{: void nothing ()=0;: lt; T gt; * basic_cur, * basic_first;: (); (const TList lt; T gt; amp; l);

~ TListBasicIterator (void);

};


2.3 Реалізація класу TArrayIterator


template lt; typename T gt; TArrayIterator: TListBasicIterator lt; T gt;

{: void nothing () {}; :( void);

~ TArrayIterator (void); (const TList lt; T gt; amp; l); Count (); ...


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





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

  • Реферат на тему: Інтегрований урок читання (1 клас), історії (3 клас)
  • Реферат на тему: Клас птахи, загальна характеристика класу
  • Реферат на тему: Об'єктна реалізація поліморфного контейнера на основі лінійного списку
  • Реферат на тему: Клас перевірки знань
  • Реферат на тему: Клас двійкового файлу, похідний від fstream