Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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





Дата публикования: 2015-02-18; Прочитано: 151 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...