Файл: Работа с иерархией объектов наследование и полиморфизм.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 09.11.2023

Просмотров: 151

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНОБРНАУКИ РОССИИСАНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)Кафедра Вычислительной техникиОТЧЕТпо лабораторной работе № 1по дисциплине «Алгоритмы и структуры данных»Тема: Работа с иерархией объектов: наследование и полиморфизм

Студенты гр. 1305




Кривенко В.А.







Рахматулин М.М.








Смирнов К.В.

Преподаватель




Колинько П. Г.
Санкт-Петербург2023Цель работы.Ознакомиться с наследованием в языке программирования C++ и создать класс-наследник для фигуры “Трапеция” (рис. 1), и дополнить лицо, получающееся в результате работы изначально данной программы, бакенбардами и рогами, являющимися трапециями.Трапеция. Рисунок 1.Задание (вариант 5)Доработать модуль shape.cpp, добавив в коллекцию ещё одну фигуру. Для этой фигуры нужно определить подходящее место в иерархии классов и написать недостающие функции-члены. Разработанной фигурой нужно дополнить картинку в указанных в варианте позициях. Для примыкания фигур должны использоваться их габаритные точки. Необходимо написать аналоги функции up (поместить p над q), обеспечивающие примыкание очередной фигуры p с нужной стороны по отношению к уже размещенной q. Это должны быть обычные функции, а не функции-члены класса, чтобы их можно было применять для любых объектов.В результате прогона программа должна последовательно продемонстрировать:

  1. исходный набор фигур, включая добавленные, которые следует расположить так, чтобы они по возможности не перекрывались; для добавления нескольких одинаковых фигур можно использовать конструктор копии, предусмотрев в нём смещение на экране изображения копии относительно оригинала;

  2. результат подготовки фигур к сборке: изменение размеров, отражения, повороты; для вновь добавленных фигур должны быть продемонстрированы все заложенные для них возможности для трансформации;

  3. собранное изображение физиономии со всеми заданными добавками.

Класс trapezoidБыл создан класс trapezoid, который представляет собой трапецию, которая наследуется от двух классов: rotatable и reflectable. Переменные p1, p2, p3 и p4 представляют собой левую нижнею, правую нижнею, левую верхнюю и правую верхнюю точки трапеции.Были переопределены функции-члены rotate_right, rotate_left, flip_horizontally, flip_vertically. Функции были написаны с учётом того, что трапеции изначально инициализируются с помощью точек, образующих две параллельные прямые.Также были переопределены функции-члены move, resize и draw. Для переопределения функций-членов north, south, east, west, neast, seast, nwest и swest были написаны функции max_y, min_y, max_x, min_x для вычисления крайних точек трапеции.Иерархия классовИерархия классов фигур представлена на рисунке 2. Иерархия классов. Рисунок 2.Результат работы программыРисунок 3. Генерация фигурРисунок 4. Изменения размеров фигур, их поворот и отражениеРисунок 5. Готовая фигура – физиономия с бакенбардами и рогамиВывод.В результате выполнения лабораторной работы рисунок лица в данной программе был дополнен бакенбардами и рогами. Был создан класс trapezoid, который позволяет выводить на экран повернутые и отраженные трапеции, представляющие собой бакенбарды и рога. В качестве потомков были выбраны классы rotatable и reflectable и реализованы их виртуальные функции-члены для поддержки иерархическую связь классов в разработанной программе.