-
Закрепление навыков работы с классами
-
Закрепление навыков работы с динамической памятью на «куче»
-
Закрепление навыков работы с массивами
-
Ознакомиться с теоретическим материалом
-
Реализовать задание в соответствии с вариантом (Вариант 4)
-
Написать Unit-тесты с использованием Google Test
-
Отчитаться по выполненной работе путём демонстрации работающей программы на тестовых наборах данных (как подготовленных самостоятельно, так и предложенных преподавателем) и ответов на вопросы преподавателя (как из числа контрольных, так и по реализации программы).
Используя в качестве образца класс Array (см. ниже), реализовать динамические контейнеры с использованием динамического массива.
-
Каждый класс должен быть разделен на интерфейс и реализацию.
-
Самостоятельно определить необходимые типы, поля и дополнительные методы.
-
Реализовать генерацию исключений в конструкторах и методах при необходимости (использовать стандартные исключения).
-
Реализовать арифметические операции: сложение, вычитание, копирование
-
Реализовать операции сравнения: (больше, меньше, равно).
-
Арифметические операции с присваиванием должны быть реализованы как методы класса.
-
Перегрузку операторов применять не нужно
-
Объекты классов должны быть иммутабельными (то есть не меняться после создания), результат методов должен возвращаться как новый экземпляр объекта
class Array
{
public:
Array();
Array(const size_t & n, unsigned char t = 0);
Array(const std::initializer_list< unsigned char> &t);
Array(const string &t);
Array(const Array& other);
Array(Array&& other) noexcept;
virtual ~Array() noexcept;
}; Создать класс Four для работы с беззнаковыми целыми четверичными числами, используя для представления числа массив из элементов типа
unsigned char, каждый элемент которого является четверичной цифрой. Младшая цифра имеет меньший индекс (единицы — в нулевом элементе массива).
tasks/Laboratory_2/
├── CMakeLists.txt
├── main.cpp
├── README.md
├── include/
│ └── Four.h
├── src/
│ └── Four.cpp
└── test/
└── test_four.cpp
Сборка:
docker build -t laboratory2 .
# Запуск тестов
docker run --rm laboratory2# Создание директории для сборки
mkdir build
cd build
# Конфигурация проекта
cmake ..
# Сборка проекта
cmake --build .Запуск:
./Laboratory_2.exe
# Или при запуске в VS code (в моём случае)
cd Debug
Laboratory_2_exe.exe# Из директории build
./Laboratory_2_test
# Или при запуске в VS code (в моём случае)
cd Debug
Laboratory_2_tests.exe
# Или через CTest
ctest --verbose