АИСД (2 семестр) на С# / Лабоаторная1
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
отчет
по лабораторной работе №1
по дисциплине «Алгоритмы и структуры данных»
Тема: Работа с иерархией объектов: наследование и полиморфизм.
Студенты гр. |
|
|
Преподаватель |
|
|
Санкт-Петербург
2023
Цель работы – изучить работу с иерархией объектов, наследованием и полиморфизмом.
Задание: доработать модуль shape.cpp, добавив параллелограмм с крестом. Для этой фигуры нужно определить подходящее место в иерархии классов и написать недостающие функции-члены.
Вариант: 2. Наименование: параллелограмм с крестом. Отражение: да. Поворот: да.
Работа с классами
1. Добавленные классы
Для реализации фигуры параллелограмм с крестом был создан класс “parallelogram”, который является наследником класса rectangle и реализует интерфейсы rotatable и reflectable.
2. Переопределение методов у добавленного класса
В классе “parallelogram” были переопределен метод draw() и
точки привязки для правильной отрисовки параллелограмма.
3. Реализация недоступности необязательных методов класса
В классе “parallelogram” не были использованы закрытые методы, так как
методы (rotate_right(), rotate_left(), flip_horisontally(), flip_vertically()) используются в классе main для выполнения различных операций при рисовании фигуры параллелограмм. Точки привязки и метод draw() имеют модификатор virtual (переопределяют методы базового класса), поэтому не могут быть закрытыми.
Результат работы программы
Исходный набор фигур
Результат подготовки фигур к сборке
3)Собранное изображение физиономии.
Вывод: В ходе работы были получены практические навыки по работе с наследованием классов. Изучены такие понятия как наследование, полиморфизм, виртуальные и абстрактные методы.
Список использованных источников
Колинько, П. Г. Пользовательские структуры данных: Методические указания по дисциплине “Алгоритмы и структуры данных, часть 2”.– СПБ.: СПБГЭТУ “ЛЭТИ”, 2022. – 64 с.
Код программы:
circle.cs
Line.cs
Main.cs
Myshape.cs
parallelogram.cs
Point.cs
rectangle.cs
reflectable.cs
rotatable.cs
Screen.cs
Shape1.cs
utility.cs