Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Топ:
Марксистская теория происхождения государства: По мнению Маркса и Энгельса, в основе развития общества, происходящих в нем изменений лежит...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Интересное:
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Дисциплины:
2020-04-01 | 93 |
5.00
из
|
Заказать работу |
|
|
Данный класс имеет единственный конструктор, получающий на вход константную ссылку на контейнер списка, и виртуальную функцию nothing, показывающую, что данный класс является абстрактным и не должен иметь созданных объектов в программе.
Также класс имеет поля basic_cur и basic_first, указывающие на текущий и последний элементы списка соответственно. Поле basic_first указывает на тот же элемент, что и поле first класса TList, однако basic_cur не совпадает с указателем cur класса TList, что показывает независимость итератора от контейнера.
Класс TArrayIterator (итератор массива)
Данный класс имеет единственный конструктор, получающий на вход константную ссылку на контейнер списка и реализованную функцию nothing, что показывает возможность создания объектов данного класса.
Кроме того, реализуется оператор индексирования элементов и метод Count для подсчета числа элементов списка. Данные методы позволяют работать со списком как с массивом.
Класс TLineIterator (итератор прямого обхода)
Данный класс имеет единственный конструктор, получающий на вход константную ссылку на контейнер списка и реализованную функцию nothing, что показывает возможность создания объектов данного класса.
Также реализуются операторы, позволяющие работать с контейнером как с однонаправленным списком с головным элементос, в частности операторы смещения указателя, получения доступа к текущему элементу, возвращения указателя в исходное положение и проверки на достижение указателем конца списка.
Еще список имеет поля cur и first, указывающие на текущий и головной элементы списка.
Класс TReverseIterator (итератор обратного обхода)
Данный класс имеет единственный конструктор, получающий на вход константную ссылку на контейнер списка и реализованную функцию nothing, что показывает возможность создания объектов данного класса.
|
Также реализуются операторы, позволяющие работать с контейнером как с однонаправленным списком с головным элементос, в частности операторы смещения указателя, получения доступа к текущему элементу, возвращения указателя в исходное положение и проверки на достижение указателем конца списка.
Еще список имеет поля cur и first, указывающие на текущий и головной элементы списка.
Особенность данного итератора состоит в том, что он позволяет работать со списком в обратном порядке: головным элементом становится последний элемент списка, а движение происходит в направлении от последнего к начальному элементу контейнера.
Класс TListException (класс исключений)
Данный класс позволяет создавать и обрабатывать исключительные ситуации, происходящие при работе со списком: выход за границы списка, удаление несуществующего элемента и т.п.
Класс имеет поля errmsg и errnum типа char* и int соответственно, носящими информацию о текущей исключительной ситуации (текст и код ошибки), и методы GetMessage и GetCode для дальнейшей обработки ошибки в зависимости от ситуации. Еще в классе реализована операция вывода информации об ошибке в поток.
Определение отношений между классами
Класс 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».
Реализация класса TList
template<typename T>TList
{TListBasicIterator<T>;:<T>* first;<T>* cur;<T>& CreateFirst(T val);:operator=(const TList<T>&);(const TList<T>&);isEmpty();isEnd();& Rewind();& Set(T val);Get();& Next();& InsertAfterCurrent(T val);& AddLast(T val);& DeleteCurrent();(void);
~TList(void);ostream& operator<<(ostream& os, TList<T>& li)
{(li.isEmpty())
{<< "Empty";os;
}.Rewind();(!li.isEnd())
{<< li.Get() << " ";.Next();
}.Rewind();os;
}
};
|
|
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!