В рамках лабораторной работы ставится задача создания программных средств, поддерживающих эффективное хранение матриц и выполнение основных операций над ними:
- сложение/вычитание;
- копирование;
- сравнение.
В процессе выполнения лабораторной работы требуется использовать систему контроля версий Git и фрэймворк для разработки автоматических тестов Google Test.
Перед выполнением работы студенты получают данный проект-шаблон, содержащий следующее:
- Интерфейсы классов Вектор и Матрица (h-файл)
- Начальный набор готовых тестов для каждого из указанных классов.
- Набор заготовок тестов для каждого из указанных классов.
- Тестовый пример использования класса Матрица
Выполнение работы предполагает решение следующих задач:
- Реализация методов шаблонного класса
TVectorсогласно заданному интерфейсу. - Реализация методов шаблонного класса
TMatrixсогласно заданному интерфейсу. - Обеспечение работоспособности тестов и примера использования.
- Реализация заготовок тестов, покрывающих все методы классов
TVectorиTMatrix. - Модификация примера использования в тестовое приложение, позволяющее задавать матрицы и осуществлять основные операции над ними.
- Система контроля версий Git. Рекомендуется использовать один из следующих клиентов на выбор студента:
- Фреймворк для написания автоматических тестов Google Test. Не требует установки, идет вместе с проектом-шаблоном.
- Среда разработки Microsoft Visual Studio.
- Опционально. Утилита CMake для генерации проектов по сборке исходных кодов. Может быть использована для генерации решения для среды разработки, отличной от предоставленной в данном проекте-шаблоне.
Структура проекта:
docs— инструкции по выполнению лабораторной работы, полезные документы.gtest— библиотека Google Test.include— директория для размещения заголовочных файлов.samples— директория для размещения тестового приложения.sln— директория с файлами решений и проектов для VS 2008 и VS 2010, вложенные директорииvc9иvc10соответственно.src— директория для размещения исходных кодов (cpp-файлы).test— директория с модульными тестами и основным приложением, инициализирующим запуск тестов.README.md— информация о проекте, которую вы сейчас читаете.- Служебные файлы
.gitignore— перечень расширений файлов, игнорируемых Git при добавлении файлов в репозиторий.CMakeLists.txt— корневой файл для сборки проекта с помощью CMake. Может быть использован для генерации проекта в среде разработки, отличной от Microsoft Visual Studio..travis.yml— конфигурационный файл для системы автоматического тестирования Travis-CI. Тесты, входящие в состав шаблонного проекта, регулярно запускаются на удаленной инфраструктуре.
В решении содержатся следующие модули:
- Модуль
utmatirx, содержащий реализацию классов Вектор и Матрица (файл./include/utmatrix.h). Поскольку оба класса шаблонные, реализацию методов необходимо выполнять непосредственно в заголовочном файле. При этом интерфейсы классов должны оставаться неизменными. - Тесты для классов Вектор и Матрица (файлы
./test/test_tvector.cpp,./test/test_tmatrix.cpp). - Пример использования класса Матрица (файл
./samples/sample_matrix.cpp).