amp; operator [] (int pos);
};
2.4 Реалізація класу TLineIterator
template lt; typename T gt; TLineIterator: public TListBasicIterator lt; T gt;
{: lt; T gt; * cur, * first; void nothing () {}: (); (const TList lt; T gt; amp; l); lt; T gt; amp; operator ++ (); amp; operator * (); lt; T gt; amp; operator ~ (); operator! ();
~ TLineIterator (void);
};
2.5 Реалізація класу TReverseIterator
template lt; typename T gt; TReverseIterator: TListBasicIterator lt; T gt;
{: lt; T gt; * cur, * first; void nothing () {} :( void); (const TList lt; T gt; amp; l);
~ TReverseIterator (void); lt; T gt; amp; operator ++ (); amp; operator * (); lt; T gt; amp; operator ~ (); operator! ();
};
2.6 Реалізація класу TListException
class TListException
{: * errmsg; errnum;: (); (char * m, int c); * GetMessage () const; GetCode () const;
~ TListException (); ostream amp; operator lt; lt; (ostream amp; os, const TListException amp; ex)
{ lt; lt; endl lt; lt; tCaught exception: lt; lt; ex.GetMessage () lt; lt; ( lt; lt; .GetCode () lt; lt; ) lt; lt; endl; os;
}
};
Повний вихідний код програми наведено у Додатку А.
семантика клас контейнер итератор
Глава 3. Результати
Для демонстрації роботи програми був створений список l типу TList lt; int gt ;, куди були додані 3 елемента. Потім був створений итератор прямого обходу, за допомогою якого елементи були виведені на екран. Після цього, ітератором зворотного обходу, значення кожного елементу списку було збільшено на одиницю. На закінчення ітератором масиву елементи були виведені на екран. Для перевірки на екран виводиться сам список, що показує, що ітератори можуть змінювати значення елементів списку, обходити список, але не змінювати положення внутрішнього покажчика в самому контейнері.
Результати роботи наведені на малюнку 2:
Малюнок 2 - Результати роботи
У ході роботи програми був створений контейнер для списку, наповнений елементами, після чого були створені три ітератора для роботи з цим контейнером, що й потрібно при постановці завдання.
ВИСНОВОК
В результаті виконання курсової роботи поставлена ??задача була вирішена. Були створені контейнер для списку і три ітератора для роботи з цим контейнером.
При виконанні роботи я познайомився і вивчив основи об'єктно-орієнтованого програмування, познайомився з таким поняттям об'єкта як - клас. Вивчив типи взаємодії між ними, вибрав необхідні для вирішення поставленого завдання.
Застосував отримані знання на практиці. Результат - працююча програма, яка вирішує поставлену задачу.
СПИСОК ЛІТЕРАТУРИ
1. Лафоре, Р Об'єктно-орієнтоване програмування в C ++.- 4-е вид.- М .: СПб .: Питер, 2010. - 923 с.
2. Лекція №3: Діаграма класів: крупним планом//INTUI
. Корабльов, В Самовчитель Visual C ++. NET/В. Корабльов.- СПб .: Пітер: BHV, 2009. - 527 с.
. Павловська, Т.А. C ++. Об'єктно-орієнтоване програмування: практикум: навч. посібник для вузів за спец. Інформатика та вирахував. техніка /Т.А. Павловська, Ю.А. Щупак.- СПб .: Питер, 2010. - 264 с.
. Об'єктне програмування//C ++ для початківців
ДОДАТОК (обов'язковий)
Повний код програми
Файл TList.h. Інтерфейсна частина
# include lt; iostream gt; namespace std; lt; typename T gt; Elem
{row; lt; T gt; * next;
}; lt; typename T gt; TListBasicIterator; 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 va...