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

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





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

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

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


.2 Проектування абстракції даних


У задачі зручно визначити 6 об'єктів - класів. Нехай клас контейнера списку іменується TList, клас базового ітератора - TListBasicIterator, класи-спадкоємці базового ітератора - TArrayIterator, TLineIterator, TReverseIterator, а клас винятків - TListException. Крім того реалізується структура Elem, що представляє конкретний елемент списку і має поле row, яке носить смисловий характер, і поле next, яке є покажчиком на наступний елемент.

Клас TList має поля first і cur, які є покажчиками на початковий і поточний елементи списку відповідно, оскільки список характеризується головним елементом і покажчиком, переміщається по списку.

Клас TListBasicIterator містить поля basic_cur і basic_first, що є покажчиками на поточний і початковий елементи відповідно. Даний клас дозволяє працювати з елементами контейнера, не впливаючи на елементи і покажчики контейнера.

Клас TArrayIterator не має полів, а тільки методи, що реалізують індексування елементів і підрахунку довжини списку.

Клас TLineIterator має поля first і cur, які є покажчиками на початковий і поточний елементи списку відповідно. Цей клас реалізує операції для роботи з контейнером як із списком.

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

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


1.3 Визначення семантики класів


Клас TList (контейнер для списку)

TList містить поля first і cur, що є покажчиками на перший і поточний елементи відповідно.

Даний клас містить також приватний метод CreateFirst, що створює перший елемент списку. Також клас має методи для роботи зі списком: isEmpty (перевірка списку на порожнечу), isEnd (перевірка досягнення покажчиком кінця списку), Rewind (встановлення покажчика у вихідне положення), Set (установка нового значення поточного елемента списку), Get (одержання значення поточного елементу списку), Next (зміщення покажчика на наступний елемент), InsertAfterCurrent (вставка елемента після поточного), AddLast (вставка елемента в кінець) і DeleteCurrent (видалення елемента з поточної позиції).

Крім того, реалізуються оператори виведення списку в потік і присвоювання, деструктора і конструкторів.

Клас TBasicIterator (базовий итератор)

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

Також клас має поля basic_cur і basic_first, що вказують на поточний і останній елементи списку відповідно. Поле basic_first вказує на той же елемент, що і поле first класу TList, однак basic_cur не збігається з покажчиком cur класу TList, що показує незалежність ітератора від контейнера.

Клас TArrayIterator (ітератор масиву)

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

Крім того, реалізується оператор індексування елементів і метод Count для підрахунку числа елементів списку. Дані методи дозволяють працювати зі списком як з масивом.

Клас TLineIterator (итератор прямого обходу)

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

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


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





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

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