Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

9373_8_8

.pdf
Скачиваний:
0
Добавлен:
20.06.2023
Размер:
619.89 Кб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра информационных систем

ОТЧЕТ

по практической работе №8

по дисциплине «Объектно-ориентированное программирование»

Студент гр. 9373

 

Заболотников М.Е.

Студентка гр. 9373

 

Петрова С.В.

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

 

 

Егоров С.С.

Санкт-Петербург

2022

Постановка задачи.

Создать консольное приложение, содержащее меню команд создания объектов – «Треугольник», «Окружность», «Геометрическая фигура», «Эллипс», «Четырехугольник», «Ромб», «Квадрат», «Параллелограмм», «Прямоугольник», «Равносторонний треугольник», «Равнобедренный треугольник» – с вводимыми пользователем параметрами, для которых рассчитываются и выводятся значения их площади и периметра.

Выполнение работы.

В ходе выполнения данной работы было создано несколько классов для последующей работы с объектами этих классов. При этом была разработана иерархия описанных в задании понятий, которая будет хорошо видна на диаграмме классов (см. рис. 1). А сейчас кратко опишем созданные классы.

1.Geometricshape – самый общий класс, соответствующий понятию

"геометрическая фигура". Он самый главный в данной иерархии. Его свойства:

a)Geometricshape() – конструктор класса;

b)~Geometricshape() – деструктор класса;

c)virtual double findArea() – виртуальный метод, рассчитывающий площадь фигуры, который будет переопределяться в классах на более низких уровнях иерархии;

d)virtual double findPerimeter() – виртуальный метод, рассчитывающий периметр фигуры, который будет переопределяться в классах на более низких уровнях иерархии.

2.Ellipse – класс, соответствующий понятию "эллипс". Наследуется от класса Geometricshape. Имеет следующие свойства:

a)a и b – атрибуты, хранящие в себе значения длин полуосей эллипса;

b)Ellipse() – конструктор класса;

c)~Ellipse() – деструктор класса;

d)double findArea() – метод, вычисляющий площадь эллипса;

2

e)double findPerimeter() – метод, вычисляющий периметр эллипса.

3.Quadrilateral – класс, соответствующий понятию "четырёхугольник".

Наследуется от класса Geometricshape. Имеет следующие свойства:

a)a, b, c и d – атрибуты, хранящие в себе значения длин сторон четырёхугольника;

b)angle_1 и angle_2 – атрибуты, хранящие в себе значения противолежащих углов четырёхугольника;

c)Quadrilateral() – конструктор класса;

d)~Quadrilateral() – деструктор класса;

e)double findArea() – метод, вычисляющий площадь четырёхугольника;

f)double findPerimeter() – метод, вычисляющий периметр четырёхугольника.

4.Triangle – класс, описывающий понятие "треугольник". Наследуется от класса Geometricshape. Имеет следующие свойства:

a)a и b – атрибуты, хранящие в себе значения длин дву сторон треугольника;

b)angle – атрибут, хранящий угол между сторонами a и b;

c)Triangle() – конструктор класса;

d)~Triangle() – деструктор класса;

e)double findArea() – метод, вычисляющий площадь треугольника;

f)double findPerimeter() – метод, вычисляющий периметр треугольника.

5.Circle – класс, описывающий понятие "окружность". Наследуется от класса Ellipse. Имеет следующие свойства:

a)Circle() – конструктор класса;

b)~Circle() – деструктор класса.

Так как объект данного класса является наследником свойств класса

Ellipse, то и необходимые параметры, такие как площадь и периметр,

3

рассчитываются в методах объекта Ellipse с учётом того, что полуоси

равны.

6.Parallelogram – класс, описывающий понятие "параллелограмм".

Наследуется от класса Quadrilateral. Имеет следующие свойства:

a)Parallelogram() – конструктор класса;

b)~Parallelogram() – деструктор класса.

Так как объект данного класса является наследником свойств класса

Quadrilateral, то и необходимые параметры, такие как площадь и периметр, рассчитываются в методах объекта Quadrilateral с учётом того,

что противоположные стороны равны и противолежащие углы равны.

7.Isoscelestriangle – класс, соответствующий понятию "равнобедренный треугольник". Наследуется от класса Triangle. Имеет следующие свойства:

a)Isoscelestriangle() – конструктор класса;

b)~Isoscelestriangle() – деструктор класса.

Так как объект данного класса является наследником свойств класса

Triangle, то и необходимые параметры, такие как площадь и периметр,

рассчитываются в методах объекта Triangle с учётом того, что смежные стороны равны друг другу.

8.Rectangle – класс, соответствующий понятию "прямоугольник".

Наследуется от класса Parallelogram. Имеет следующие свойства:

a)Rectangle() – конструктор класса;

b)~Rectangle() – деструктор класса.

Так как объект данного класса является наследником свойств класса

Parallelogram, то и необходимые параметры, такие как площадь и периметр, рассчитываются в методах объекта Parallelogram с учётом того, что все углы по 90о.

9.Rhomb – класс, соответствующий понятию "ромб". Наследуется от класса Parallelogram. Имеет следующие свойства:

a) Rhomb() – конструктор класса;

4

b) ~Rhomb() – деструктор класса.

Так как объект данного класса является наследником свойств класса

Parallelogram, то и необходимые параметры, такие как площадь и периметр, рассчитываются в методах объекта Parallelogram с учётом того, что все стороны равны.

10. Equalateraltriangle – класс, описывающий понятие "равносторонний треугольник". Наследуется от класса Isoscelestriangle. Имеет следующие свойства:

a)Equalateraltriangle() – конструктор класса;

b)~Equalateraltriangle() – деструктор класса.

Так как объект данного класса является наследником свойств класса

Isoscelestriangle, то и необходимые параметры, такие как площадь и периметр, рассчитываются в методах объекта Isoscelestriangle с учётом того, что угол между боковыми сторонами равен 60о.

11. Square – класс, описывающий понятие "квадрат". Наследуется от класса Rhomb. Имеет следующие свойства:

a)Square() – конструктор класса;

b)~Square() – деструктор класса.

Так как объект данного класса является наследником свойств класса

Rhomb, то и необходимые параметры, такие как площадь и периметр,

рассчитываются в методах объекта Rhombс учётом того, что угол между смежными сторонами равен 90о.

Ниже представлена диаграмма классов данной программы:

5

Рисунок 1 – Диаграмма классов

Тесты работы программы.

Для того, чтобы удостовериться в корректности работы программы,

проведём несколько тестов.

1.Рассмотрим треугольник, две стороны которого равны 3 и 4, а угол между ними – 30о. Площадь такого треугольника равна 3, а периметр – примерно 9.0531. Результаты работы программы приведены на рис. 2:

6

Рисунок 2 – Результат работы программы

2.Пусть у нас имеется равнобедренный треугольник, имеющий боковую сторону длиной 5 и угол между этими сторонами в 35о. Площадь такого треугольника равна ~7.1697, а периметр – ~13.0071. Результат работы программы приведён на рис. 3:

Рисунок 3 – Результат работы программы

3.Далее рассмотрим равносторонний треугольник со стороной 4.

Нетрудно посчитать его площадь и периметр и понять, что площадь равна ~6.9282, а периметр – 12. Результат работы программы (см. рис.

4):

Рисунок 4 – Результат работы программы

4.Теперь возьмём четырёхугольник, у которого стороны три стороны равны 4, 3 и 5, угол между первыми двумя сторонами равен 90о, а

противолежащий ему – 45о. Площадь такого четырёхугольника равна

18.5, а периметр – ~19.0711. Результат работы программы (см. рис. 5):

7

Рисунок 5 – Результат работы программы

5.Рассмотрим параллелограмм, у которого смежные стороны имеют длины 3 и 4 и угол между ними равен 30о. Площадь такой фигуры равна

6, а сумма длин всех сторон – 14. Результат работы программы (см. рис.

6):

Рисунок 6 – Результат работы программы

6.Возьмём ромб, сторона которого равна 5, а угол между смежными сторонами равен 60о. Площадь этого ромба равна ~21.6506, а периметр

– 20. Результат работы программы (см. рис. 7):

Рисунок 7 – Результат работы программы

7.Теперь рассмотрим прямоугольник со сторонами 6 и 4. Площадь и периметр фигуры рассчитываются очень просто и равны 24 и 20.

Результат работы программы (см. рис. 8):

Рисунок 8 – Результат работы программы

8

8.Далее рассмотрим квадрат со стороной 7. Его площадь равна 49, а сумма длин всех сторон – 28. Результат работы программы (см. рис. 9):

Рисунок 9 – Результат работы программы

9.Теперь возьмём эллипс, полуоси которого измеряются числами 3 и 4.

Площадь такого эллипса равна ~37.6991, а периметр – ~21.9911.

Результат работы программы (см. рис. 10):

Рисунок 10 – Результат работы программы

10. И в конце возьмём окружность с радиусом в 7.5. Площадь такой окружности равна ~176.7146, а периметр (он же – длина окружности) – ~47.1239. Результат работы программы (см. рис. 11):

Рисунок 11 – Результат работы программы Как видно из рисунков и рассмотренных примеров, программа исправно

работает и выдаёт корректные результаты вычислений площадей и периметров всех требуемых фигур.

9

Выводы.

В ходе работы было создано консольное приложение, содержащее меню команд создания объектов – «Треугольник», «Окружность», «Геометрическая фигура», «Эллипс», «Четырехугольник», «Ромб», «Квадрат», «Параллелограмм», «Прямоугольник», «Равносторонний треугольник», «Равнобедренный треугольник» – с вводимыми пользователем параметрами, для которых рассчитываются и выводятся значения их площади и периметра.

Проведены тесты работы программы и выяснилось, что программа работает корректно.

10