|
итоговый отчет 1. Лабораторная работа 2 Классы. Основы 12 Лабораторная работа 3 Классы. Инкапсуляция 16
Лабораторная работа №2 Классы. Основы
Цель работы:приобретение практических навыков создания абстрактных типов данных и изучение следующих ключевых понятий языка C++:
1. Ссылки
2. Ключевое слово class, разделение класса на .h и .cpp файлы
3. Модификаторы доступа.
4. Конструктор: несколько конструкторов, инициализация членов класса, значение по умолчанию.
5. Деструктор.
6. Константные функции-члены класса, селекторы и модификаторы.
1. Задание для работы
Написать программу нахождения периметра (приближенного значения) и площади эллипса, используя класс Ellipse, у которого есть открытые методы: void setWidth(double a);
void setHeight(double b);
double getPerimeter();
double getArea();
и один закрытый метод:
void resolve();
Объект класса Ellipse в любой момент времени содержит периметр (приближенное значение) и площадь эллипса для установленных параметров a, b. При изменении значения любого из параметров (через методы setWidth(), setHeight ()) периметр и площадь эллипса пересчитываются через закрытый метод resolve(). Изначально длины большой и малой осей эллипса равны 2 и 1 соответственно.
Метод main() запрашивает длины большой и малой осей, находит периметр (приближенное значение) и площадь эллипса через класс Ellipse и показывает результат.
Периметр (приближенное значение) и площадь эллипса рассчитываются по известным выражениям
𝑃 = 𝜋 ∙ [3(𝑎 + 𝑏) − √(3𝑎 + 𝑏)(3𝑏 + 𝑎)], 𝑆 = 𝜋 ∙ 𝑎 ∙ 𝑏.
Примерный код использования класса Ellipse:
Ellipse el;
cout << el.getArea(); // выведет 6,283185307
cout << el.getPerimeter(); // выведет 9,688421098
el.setWidth(3);
el.setHeight(2);
cout << el.getArea(); // выведет 18,84955592
cout << el.getPerimeter(); // выведет 15,86543758
Код программы на языке C++
В результате выполнения задания была разработана программа на языке C++. Она представлена в виде проекта, состоящего из двух файлов с расширением *.cpp и одного заголовочного файла (с расширением *.h), код которых приведен ниже:
//файл Ellipse.h
#pragma once
#define _USE_MATH_DEFINES
#include class Ellipse
{
private:
double a;
double b;
double perimeter;
double area;
void resolve();
public:
Ellipse();
Ellipse(double a, double b);
void setWidth(double a);
void setHeight(double b);
double getPerimeter();
double getArea();
}; //файл Ellipse1.cpp
#include "StdAfx.h"
#include "Ellipse.h"
void Ellipse::resolve()
{
perimeter = M_PI * (3 * (a + b) - sqrt((3 * a + b) * (3 * b + a)));
area = M_PI * a * b;
} Ellipse::Ellipse()
{
this->a = 1.0;
this->b = 2.0;
this->resolve();
} Ellipse::Ellipse(double a, double b)
{
this->a = a;
this->b = b;
this->resolve();
} void Ellipse::setWidth(double a)
{
this->a = a;
this->resolve();
} void Ellipse::setHeight(double b)
{
this->b = b;
this->resolve();
} double Ellipse::getPerimeter()
{
return this->perimeter;
} double Ellipse::getArea()
{
return this->area;
}
//файл Ellipse.cpp
#include "StdAfx.h"
#include
#include "Ellipse.h" int main()
{
Ellipse el; std::cout << el.getArea() << std::endl;
std::cout << el.getPerimeter() << std::endl; el.setWidth(3);
el.setHeight(2); std::cout << el.getArea() << std::endl;
std::cout << el.getPerimeter() << std::endl; system("pause");
return 0;
}
Результат работы программы на языке C++
Меню программы:
1 - Ввод данных ширины и высоты
2 – Периметр эллиспа
3 – Площадь эллипса
0 – Выход Выбранный вами пункт №
1
----------------------------------------------
Введите параметр A
2
Введите параметр B
1
Соответствующий введенным данным эллипс имеет вид:
Ширина: 2
Высота 1
----------------------------------------------
Меню программы:
1 - Ввод данных ширины и высоты
2 – Периметр эллиспа
3 – Площадь эллипса
0 – Выход Выбранный вами пункт №
2
----------------------------------------------
Периметр эллипса равен 6.28319
----------------------------------------------
Меню программы:
1 - Ввод данных ширины и высоты
2 – Периметр эллиспа
3 – Площадь эллипса
0 – Выход Выбранный вами пункт №
3
----------------------------------------------
Площадь эллипса равна: 9.68842
----------------------------------------------
Меню программы:
1 - Ввод данных ширины и высоты
2 – Периметр эллиспа
3 – Площадь эллипса
0 – Выход Выбранный вами пункт №
0
Для продолжения нажмите любую клавишу…
----------------------------------------------
|
|
|