Файл: Лабораторная работа 1 классы Отчет по лабораторной работе по дисциплине Объектноориентированный анализ и программирование.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.12.2023
Просмотров: 23
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное
учреждение высшего образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра автоматизации обработки информации (АОИ)
Лабораторная работа № 1
«КЛАССЫ»
Отчет по лабораторной работе по дисциплине
«Объектно-ориентированный анализ и программирование»
Студент гр. з-422П8-5
И. С. Гребнев
«21» апреля 2023 г.
Руководитель
доцент каф. АОИ,
канд. техн. наук
Ю. В. Морозова
«___»___________2023 г.
Томск 2023
Цель работы
Изучить структуру программ на основе использования объектно-ориентированного программирования, а также основные элементы структуры ООП: классы, объекты.
Индивидуальный вариант №13
Определить класс «Равнобедренный треугольник, заданный длинами сторон». Предусмотреть возможность операции присваивания, определения площади и периметра, а также логический метод, определяющий, существует ли такой треугольник. Конструктор должен позволить создавать объекты с начальной инициализацией и без нее.
Краткие теоритические сведения
Объектно-ориентированное программирование – это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
Класс представляет набор объектов, которые обладают общей структурой и одинаковым поведением.
Конструктор – это особенный метод класса, который вызывается автоматически в момент создания объектов этого класса.
Описание алгоритма работы программы
Данный код представляет собой класс IsoscelesTriangle, который описывает равнобедренный треугольник, заданный длинами сторон.
В классе есть три поля: sideA, sideB и sideC, которые представляют длины сторон треугольника. Для каждого поля определены геттеры и сеттеры для доступа к полю извне класса.
Класс имеет два конструктора: один без параметров, который создает объект без начальной инициализации, и один с параметрами, который создает объект с начальной инициализацией длин сторон.
В классе также определены три метода: calculatePerimeter(), calculateArea() и exists(). Метод calculatePerimeter() возвращает периметр треугольника, вычисленный как сумма длин сторон A и B. Метод calculateArea() возвращает площадь треугольника, вычисленную по формуле для равнобедренного треугольника: основание - сторона A, высота - расстояние от вершины до основания, равное корню из квадрата стороны B минус квадрат половины стороны A. Метод exists() проверяет, существует ли треугольник с заданными длинами сторон. Если существует, метод возвращает true, в противном случае - false.
В классе также определен метод setSides(), который позволяет установить длины сторон треугольника.
Общий смысл данного кода заключается в описании класса, который предоставляет функциональность для работы с равнобедренным треугольником, заданным длинами сторон. Класс позволяет установить длины сторон, вычислить периметр и площадь треугольника, а также проверить, существует ли такой треугольник. Это может быть полезно при решении задач, связанных с геометрией, например, при построении графиков или вычислении площади поверхности тела. В листинге №2 находится код для проверки работоспособности класса.
Листинг №1
public class IsoscelesTriangle {
private double sideA; // длина стороны A
private double sideB; // длина стороны B
private double sideC; // длина стороны C
// конструктор без параметров
public IsoscelesTriangle() {
this.sideA = 0;
this.sideB = 0;
this.sideC = 0;
}
// конструктор с параметрами
public IsoscelesTriangle(double sideA, double sideB, double sideC) {
this.sideA = sideA;
this.sideB = sideB;
this.sideC = sideC;
}
// метод для вычисления периметра
public double calculatePerimeter() {
return sideA + 2 * sideB;
}
// метод для вычисления площади
public double calculateArea() {
double height = Math.sqrt(Math.pow(sideB, 2) - Math.pow(sideA / 2, 2));
return sideA * height / 2;
}
// логический метод для определения существования треугольника
public boolean exists() {
return (sideA < sideB + sideC) && (sideB == sideC);
}
// метод для присваивания длин сторон
public void setSides(double sideA, double sideB, double sideC) {
this.sideA = sideA;
this.sideB = sideB;
this.sideC = sideC;
}
}
Листинг №2
public class Main {
public static void main(String[] args) {
IsoscelesTriangle triangle1 = new IsoscelesTriangle(); // создание объекта без начальной инициализации
triangle1.setSides(5, 3, 3); // присваивание длин сторон
if (triangle1.exists()) { // проверка существования треугольника
double perimeter = triangle1.calculatePerimeter(); // вычисление периметра
double area = triangle1.calculateArea(); // вычисление площади
System.out.println("Triangle: perimeter = " + perimeter + ", area = " + area);
} else {
System.out.println("Triangle does not exist");
}
}
}
Результат работы программы
Рисунок 1 – Результат выполнения программы ч.1
Рисунок 2 – Результат выполнения программы ч.2
Рисунок 3 – Результат выполнения программы ч.3
Рисунок 4 – Результат выполнения программы ч.4
Вывод
В ходе данной лабораторной работы я изучил структуру программ на основе использования объектно-ориентированного программирования, а также основные элементы структуры ООП: классы и объекты.