Лекция: Проектирование абстракции данных

 

В задаче удобно определить 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 соответственно, носящими информацию о текущей исключительной ситуации (текст и код ошибки).

 

еще рефераты
Еще работы по информатике