Файл: Лабораторная работа 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

Вывод

В ходе данной лабораторной работы я изучил структуру программ на основе использования объектно-ориентированного программирования, а также основные элементы структуры ООП: классы и объекты.