This shows you the differences between two versions of the page.
courses:object_oriented_programming:practice [2017/05/15 18:49] inomad [Полиморфная логика] |
courses:object_oriented_programming:practice [2022/12/10 09:08] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Практика ====== | ||
- | Перед очной защитой, все задания выкладываются на Stepik и, где это возможно, организуются автоматические проверки. До защиты работы, все проверки должны быть пройдены | ||
- | |||
- | ===== Создание и разрушение объектов ===== | ||
- | - Stepik | ||
- | |||
- | ===== Наследование ===== | ||
- | Индивидуальные задания, проверяемые на Stepik c помощью peer-review. Варианты заданий: | ||
- | - Окружность, пятиугольник, правильный пятиугольник | ||
- | - Прямоугольник, квадрат, эллипс | ||
- | - Равнобедренный треугольник, квадрат, прямоугольный треугольник | ||
- | - Трапеция, эллипс, равнобедренная трапеция | ||
- | - Эллипс, сектор эллипса, параллелограмм | ||
- | - Треугольник, ромб, параллелограмм | ||
- | - Дуга, окружность, эллипс | ||
- | - Квадрат, ромб, трапеция | ||
- | - Пятиугольник, пентаграмма, прямоугольник | ||
- | - Пятиугольник, эллипс, отрезок | ||
- | - Прямоугольник, окружность, трапеция | ||
- | |||
- | ===== Контейнер ===== | ||
- | Разработать шаблонный контейнер с заданным интерфейсом | ||
- | |||
- | ===== Умный указатель ===== | ||
- | Разработать умный указатель с заданным интерфейсом | ||
- | |||
- | ===== Полиморфная логика ===== | ||
- | Объединить предыдущие работы в приложении, использующем логику полиморфного хранения объектов. Необходимо сгененрировать контейнер из 1000 фигур, которые хранятся как shared_ptr<Shape>, и применить к ним 2 стандартных алгоритма по вариантам. В качестве предиката использовать предикат из дополнительного задания 2-й лабораторной. | ||
- | |||
- | <color #ed1c24>UPDATE</color> (15.05.17). Если вы считаете, что вашу функцию из 2-й лабораторной невозможно использовать в качестве критерия для индивидуального задания (например, если она возвращает что-то отличное от булевых или числовых значений), то необходимо самостоятельно придумать предикат, __использующий вируальные функции__ в дереве классов. | ||
- | Пример: а) сортировка фигур в порядке увеличения их площади, | ||
- | б) отбор фигур, пересекающихся с заданной эталонной фигурой, | ||
- | в) замена фигур, периметр которых меньше определённого порога, на окружность единичного радиуса. | ||
- | |||
- | Описание вашего вашего задания приложить в виде файла README. Корректность алгоритмов доказать с помощью юнит тестов или ручного тестирования. Тестирование достаточно провести для контейнера небольшого размера (5-10) заданных фигур. | ||
- | |||
- | Варианты индивидуальных заданий: | ||
- | |||
- | ==== Немодифициующие алгоритмы ==== | ||
- | |||
- | - Поиск первого элемента удовлетворяющего определенному критерию. | ||
- | - Поиск первых n последовательных элементов с определенными свойствами. | ||
- | - Поиск первого из нескольких возможных элементов по заданному критерию. | ||
- | - Поиск двух смежных элементов, равных между собой по определенному критерию. | ||
- | - Проверка двух неупорядоченных диапазонов на равенство по определенному критерию. | ||
- | - Поиск первых отличающихся друг от друга элементов двух последовательностей по определенному критерию. | ||
- | - Проверка разделен ли диапазон на две группы по заданному критерию. | ||
- | - Проверка что все элементы диапазона удовлетворяют определенному критерию. | ||
- | - Проверка что хотя бы один элемент диапазона соответствует заданному критерию. | ||
- | - Проверка что ни один элемент диапазона не соответствует заданному критерию. | ||
- | - Проверка двух упорядоченных диапазонов на равенство по определенному критерию. | ||
- | |||
- | ==== Mодифициующие алгоритмы ==== | ||
- | - Заменить элементы, соответствующие критерию другим значением. | ||
- | - Скопировать элементы, удовлетворяющие критерию. | ||
- | - Разделить диапазон на 2 части в соответствии с критерием. | ||
- | - Создать упорядоченное объединение двух диапазонов. | ||
- | - Удалить элементы, удовлетворяющие заданному критерию. | ||
- | - Создать упорядоченное пересечение двух диапазонов. | ||
- | - Создать упорядоченную разность двух диапазонов. | ||
- | - Заменить элементы, соответствующие критерию, копируя весь диапазон. | ||
- | - Скопировать элементы удалив дубликаты в соответствии с критерием. | ||
- | - Скопировать элементы, за исключением тех, кто удовлетворяет критериюю | ||
- | - Упорядочить элементы, пока первые n элементов не будут следовать в требуемом порядке. | ||
- | - Отсортировать элементы диапазона так, чтобы правильный элемент находился на n-й позиции (все стоящие перед ним элементы не превосходят его, а все стоящие после - превосходят либо равны). | ||