- Система контроля версий Git. Рекомендуется использовать один из следующих клиентов на выбор студента: git-scm, GitHub Desktop.
- Библиотека автоматического тестирования Google Test Framework. Не требует установки, идет вместе с шаблонным проектом.
- Среда разработки Microsoft Visual Studio (> 2008).
- Утилита CMake для сборки исходных кодов. Наличие данной утилиты опционально. Она может быть использована для генерации решения для среды разработки, отличной от Microsoft Visual Studio.
Структура проекта:
gtest
- библиотека Google Test.include
- директория для размещения заголовочных файлов.samples
- директория для размещения демо-приложений.sln
- директория с файлами решений и проектов для VS 2008 и VS2010, вложенные директории vc9 и vc10 соответственно.src
- директория с исходными кодами.test
- директория с тестами и основным приложением, инициализирующим запуск тестов..gitignore
- перечень расширений файлов, игнорируемых Git при добавлении файлов в репозиторий.README.md
- информация о проекте, которую вы сейчас читаете.CMakeLists.txt
- корневой файл для сборки проекта с помощью CMake. Может быть использован для генерации проекта в среде разработки, отличной от Microsoft Visual Studio..travis.yml
- конфигурационный файл для системы автоматического тестирования Travis-CI. Тесты, входящие в состав шаблонного проекта, регулярно проверяются на удаленной инфраструктуре.
В решении содержатся следующие модули:
- Модуль
tbitfield
(./include/tbitfield.h
,./src/tbitfield.cpp
), содержащий реализацию класса битового поля. Предполагается, что в ходе выполнения работы реализуются методы класса (в файле./src/tbitfield.cpp
), при этом заголовочный файл (./include/tbitfield.h
) с объявлениями должен оставаться неизменным. - Модуль
tset
(./include/tset.h
,./src/tset.cpp
), содержащий реализацию класса множества. При выполнении работы так же, как и в случае класса битового поля, разрабатывается только реализация методов класса. - Тесты для классов битовое поле и множество (
./test/test_tbitfield.cpp
,test_tset.cpp
). - Пример использования класса битового поля и множества для решения
задачи "Решето Эратосфена" (
./samples/sample_prime_numbers.cpp
).
Цель данной работы -- разработка структуры данных для хранения множеств с использованием битовых полей, а также освоение таких инструментов разработки программного обеспечения, как система контроля версий Git и фрэймворк для разработки тестов Google Test Framework.
Предполагается, что перед выполнением работы студент получает данный шаблон проекта, содержащий интерфесы классов битового поля и множества, набор тестов для каждого из указанных классов, пример использования класса битового поля и множества для решения задачи "Решето Эратосфена".
Выполнение работы предполагает решение следующих задач:
- Реализация заданного интерфейса класса битового поля
TBitField
. - Реализация заданного интерфейса класса множества
TSet
. - Обеспечение работоспособности тестов.
В данном разделе описана типичная последовательность действий, которую необходимо выполнить перед тем, как начать работать с проектом. Далее для определенности используется репозиторий mp2-lab1-bitfield.
-
Создать аккаунт на github.com, если такой отсутствует. Для определенности обозначим аккаунт
github-account
. -
Сделать fork репозитория https://github.com/UNN-VMK-Software/mp2-lab1-bitfield (в терминологии Git upstream-репозиторий) к себе в личный профиль с названием github-account. В результате будет создана копия репозитория с названием https://github.com/github-account/mp2-lab1-bitfield (origin-репозиторий).
-
Клонировать origin репозиторий к себе на локальный компьютер, воспользовавшись следующей командой:
$ git clone https://github.com/github-account/mp2-lab1-bitfield
- Перейти в директорию mp2-lab1-bitfield:
$ cd ./mp2-lab1-bitfield
- Настроить имя пользователя, из под которого будут выполняться все операции с репозиторием Git:
$ git config --local user.name "github-account"
Чтобы обеспечить возможность удаленной проверки работы (включая автоматический запуск и проверку корректности тестов), необходимо создать Pull Request в upstream-репозиторий:
- Открыть в браузере https://github.com/github-account/mp2-lab1-bitfield.
- Нажать кнопку Pull Request в строке над исходными кодами, содержащей информацию о последних коммитах.
При работе с файлами в ветке необходимо управлять изменениями. Далее приведен
перечень основных команд в предположении, что текущей рабочей веткой
является master
.
- Получить список текущих изменений:
$ git status
- Пометить файл как добавленный в текущую ветку репозитория (файл будет
добавлен после выполнения команды
commit
):
$ git add [<file_name>]
# <file_name> - название файла для добавления в commit
если вместо имени указан символ *, то будут добавлены все новые файлы,
расширение которых не указано в .gitignore
- Добавить изменения в текущую ветку локального репозитория:
$ git commit [-m "<message_to_commit>"] [-a]
# [-a] - автоматически добавляет изменения для существующих на сервере файлов
без выполнения команды git add
# [--amend] - перезаписывает последний коммит (используется, если не забыты
изменения)
- Разместить изменения, которые были добавлены в локальный репозиторий
с помощью команды
push
:
$ git push origin/master
- Удалить файлы или директории (!без опции -f для файлов, состояния которых совпадают с состоянием на сервере):
$ git rm [-f] [--cached]
# [-f] - принудительное удаление (файла с измененным состоянием)
# [--cached] - удаление файлов на сервере, но не в локальной директории
- Переименовать файлы (или 3 команды:
mv
,git rm
,git add
):
$ git mv <file_from> <file_to>