Лабораторная работа №3

(6 часов)

Вопросы для самостоятельной подготовки

1. Передача объекта в качестве параметра функции (метода) по значению и по ссылке: вызов конструктора копирования.

2. Возвращение объекта в качестве результата функции (метода): вызов конструктора, деструктора и оператора присваивания.

3. Указатель на возвращаемое значение функции (метода).

4. Перегрузка операций (присваивания, индексирования)

5. Шаблонные классы

6. Обработка исключительных ситуаций.

5.2. Требования к реализации связного списка
целочисленных значений

Для реализации связного списка необходимо объявить класс List, инкапсулирующий закрытое объявление класса ListElement, представляющего элемент списка, а также закрытые поля _first и _last, хранящие указатели на первый и последний элемент списка. Закрытое объявление класса ListElement гарантирует, что доступ к элементам списка будет открыт исключительно внутри класса List.

Класс ListElement, в свою очередь, должен содержать открытые поля: _value, _next и _prev, хранящие целочисленное значение элемента списка, указатель на последующий элемент списка и указатель на предшествующий элемент списка соответственно.

В классе List необходимо реализовать конструктор по умолчанию, конструктор копирования, деструктор, а также перегрузить оператор присваивания. При реализации конструктора копирования и оператора присваивания необходимо создавать копию списка-параметра, чтобы избежать ситуаций потерянных и висячих ссылок.

Кроме того, класс List должен содержать следующие методы:

· добавление нового элемента в конец списка;

· удаление последнего элемента списка;

· вставка нового элемента в список по заданному индексу;

· удаление из списка элемента с заданным индексом;

· возвращение значения элемента списка с заданным индексом;

· обеспечение доступа к значению элемента списка по индексу для чтения и записи (перегрузка оператора [] - «квадратные скобки»);

· возвращение количества элементов списка.


Требования к реализации шаблонного связного списка

Основные операции, которые можно выполнить со списком, не зависят от того, элементы какого типа он в себе содержит. Другими словами при реализации данных операций не происходит специфической обработки метода данных элементов. Поэтому чтобы иметь возможность использовать один и тот же класс связного списка с элементами различных типов без необходимости программировать заново новую версию класса, можно использовать механизм шаблонов.

При работе со связным списком могут возникнуть аварийные ситуации, вызванные попыткой обращения к его элементам по некорректному индексу, выходящему за его границы. Для обработки аварийных ситуаций необходимо использовать механизм исключений.

Требования к реализации логики предметной области

Необходимо модифицировать код программы, реализованной в рамках лабораторной работы №2: вместо динамических массивов для представления списков объектов предметной области необходимо использовать реализованный шаблонный класс связного списка. Принцип инкапсуляции позволяет локализовать при этом возможные ошибки в методах разработанных классов, что упрощает модификацию кода.

Требования к оформлению и защите лабораторной работы

К защите необходимо предъявить три проекта:

1.Проект, демонстрирующий работу с разработанным связным списком целочисленных значений. При защите лабораторной работы необходимо продемонстрировать в режиме отладки вызовы:

a. конструктора копирования (например, в момент передачи списка в метод или функцию в качестве параметра по значению, а также в момент возвращения списка в качестве результата метода или функции),

b. деструктора (например, в момент уничтожения локального списка при завершении работы метода или функции),

c.  оператора присваивания.

2.Проект, демонстрирующий работу с разработанным шаблонным связным списком. Необходимо создать экземпляры связного списка, содержащие целочисленные и вещественные значения, а также продемонстрировать обработку исключительных ситуаций.

3.Проект, реализующий логику задачи с использованием разработанного шаблонного связного списка.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: