9373_8_8
.pdfМИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра информационных систем
ОТЧЕТ
по практической работе №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