Задания по курсу
"Объектно-ориентированное программирование"
1 семестр
  1. Определите классы Vector и Matrix и операции над ними, исходя из использования этих классов для решения задач линейной алгебры. Напишите тестовую программу.
  2. Определите класс комплексных чисел Complex и проверьте целостность полученной абстракции путем замены в Vector и Matrix (из предыдущего задания) double на Complex. Тесты этих классов должны работать практически без изменений.

  3. Реализуйте список произвольных структур данных (задайте некоторую тестовою struct и используйте typedef для обеспечения независимости исходного текста от типа хранимых данных). Обеспечьте возможность итерации списка в прямом и обратном направлении при помощи вложенного класса Iterator, реализованного по одной из схем:
  1. list l;
    for (list::iterator i = l; i; i++)
    {
           (*i).structure_field = // доступ к элементу структуры
    }


  2. list l;
    for (list::iterator i = l.begin(); i != l.end(); ++i)
    {
           (*i).structure_field = // доступ к элементу структуры
    }

Обеспечьте классу list корректный деструктор, методы добавления и удаления элементов. Напишите тестовую программу. Класс должен быть реализован как отдельный модуль, подключаемый к тестовой программе при сборке.

  4. Переделайте классы Vector и Matrix из заданий №1 и №2 используя шаблоны. Напишите тестовую программу.
  5. Переделайте список из задания №3 используя шаблоны. Напишите тестовую программу.
  6. Напишите программу на С++, которая вызовет чистую виртуальную функцию. Сколькими способами это можно сделать?

  7.

Создайте две реализации класса string: с использованием технологии copy-on-write и без таковой. Используя класс списка из задания №5, напишите программу, которая вводит строки из файла и выводит их на стандартный вывод в обратном порядке. Сравните производительность программы на разных реализациях класса string.

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