Code Monkey home page Code Monkey logo

mp2-lab2-matrix's Introduction

Методы программирования 2: Верхнетреугольные матрицы на шаблонах

Цели и задачи

В рамках лабораторной работы ставится задача создания программных средств, поддерживающих эффективное хранение матриц специального вида (верхнетреугольных) и выполнение основных операций над ними:

  • сложение/вычитание;
  • копирование;
  • сравнение.

В процессе выполнения лабораторной работы требуется использовать систему контроля версий Git и фрэймворк для разработки автоматических тестов Google Test.

Перед выполнением работы студенты получают данный проект-шаблон, содержащий следующее:

  • Интерфейсы классов Вектор и Матрица (h-файл)
  • Начальный набор готовых тестов для каждого из указанных классов.
  • Набор заготовок тестов для каждого из указанных классов.
  • Тестовый пример использования класса Матрица

Выполнение работы предполагает решение следующих задач:

  1. Реализация методов шаблонного класса TVector согласно заданному интерфейсу.
  2. Реализация методов шаблонного класса TMatrix согласно заданному интерфейсу.
  3. Обеспечение работоспособности тестов и примера использования.
  4. Реализация заготовок тестов, покрывающих все методы классов TVector и TMatrix.
  5. Модификация примера использования в тестовое приложение, позволяющее задавать матрицы и осуществлять основные операции над ними.

Используемые инструменты

  • Система контроля версий Git.
  • Фреймворк для написания автоматических тестов Google Test.

Общая структура проекта

Структура проекта:

  • include — директория для размещения заголовочных файлов.
  • samples — директория для размещения тестового приложения.
  • test — директория с модульными тестами и основным приложением,инициализирующим запуск тестов.
  • README.md — информация о проекте, которую вы сейчас читаете.

В решении содержатся следующие модули:

  • Модуль utmatirx, содержащий реализацию классов Вектор и Матрица (файл./include/utmatrix.h). Поскольку оба класса шаблонные, реализацию методов необходимо выполнять непосредственно в заголовочном файле. При этом интерфейсы классов должны оставаться неизменными.
  • Тесты для классов Вектор и Матрица (файлы ./test/test_tvector.cpp, ./test/test_tmatrix.cpp).
  • Пример использования класса Матрица (файл ./samples/sample_matrix.cpp).

Порядок выполнения работы

  • написать реализацию классов Вектор и Матрица в заголовочном файле utmatrix.h;
  • построить тестовое приложение google test с данными в работе тестами и убедиться, что все тесты проходят;
  • построить приложение с примером из файла sample_matrix.cpp в каталоге samples;
  • написать не менее 10 своих тестов, разместив их в файлах с тестами и протестировать свои классы с помощью своих тестов;
  • скопировать в свою ветку следующие файлы:
    • utmatrix.h
    • sample_matrix.h
    • test_tmatrix.cpp
    • test_tvector.cpp
    • test_main.cpp
  • сделать push-запрос в родительский репозиторий содержимым своей ветки;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.