ЛАБА2
.docxМинистерство цифрового развития и массовых коммуникаций
Российской Федерации
Ордена Трудового Красного Знамени федеральное государственное
бюджетное образовательное учреждение
высшего образования
«Московский технический университет связи и информатики»
(МТУСИ)
Кафедра Математическая кибернетика и информационные технологии
Отчет по лабораторной работе № 2
по дисциплине «Кроссплатформенные технологии программирования»
на тему: «Основы объектно-ориентированного программирования»
Выполнила: студентка группы БСТ20
Проверила: Мосева Марина Сергеевна
Москва 2022
1 Цель работы
Изучить основы объектно-ориентированного программирования, посредством написания программы и классов на java.
2 Задание
Создать новый класс Point3d для представления точек в трехмерном Евклидовом пространстве, в котором будут реализоны:
создание нового объекта Point3d с тремя значениями с плавающей точкой (double);
создание нового объекта Point3d со значениями (0.0, 0.0, 0.0) по умолчанию;
возможность получения и изменения всех трех значений по отдельности;
метод для сравнения значений двух объектов Point3d.
Добавить новый метод distanceТо, который в качестве параметра принимает другой объект Point3d, вычисляет расстояние между двумя точками с точность двух знаков после запятой и возвращает полученное значение.
Создать другой класс под названием Labl, который будет содержать статический метод main. В этом классе реализовать следующую функциональность:
ввод координат трех точек, находящихся в трехмерном пространстве;
создание трех объектов типа Point3d на основании полученных данных.
Создать второй статический метод computeArea, который принимает три объекта типа Point3d и вычисляет площадь треугольника, образованного этими точками.
На основе полученных данных и с использованием реализованного алгоритма посчитать площадь и выведите полученное значение пользователю.
3 Ход работы
3.1 Код программы
Код файла Point3D.java:
public class Point3d { private double xCoord; private double yCoord; private double zCoord; public Point3d ( double x, double y, double z) { xCoord = x; yCoord = y; zCoord = z; } public Point3d () { this(0, 0, 0); } public double getX () { return xCoord; } public double getY () { return yCoord; } public double getZ () { return zCoord; } public void setX (double val) { xCoord = val; } public void setY (double val) { yCoord = val; } public void setZ (double val) { zCoord = val; } public boolean pointCompar ( Point3d P) { if (xCoord == P.getX() && yCoord == P.getY() && zCoord == P.getZ()) return true; else return false; } public double distanceTo ( Point3d P ) { double S = Math.sqrt( Math.pow( (xCoord - P.getX()), 2 ) + Math.pow( (yCoord - P.getY()), 2 ) + Math.pow( (zCoord - P.getZ()), 2 ) ); return (Math.round(S * 100.0) / 100.0); } }
Код файла Lab1.java:
import java.util.Scanner; public class Lab1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double[] coord = new double[3]; Point3d[] p = new Point3d[3]; for (int i = 0; i < 3; i++){ for (int j = 0; j < 3; j++){ coord[j] = sc.nextDouble(); } p[i] = new Point3d(coord[0], coord[1], coord[2]); } if( p[0].pointCompar(p[1]) || p[0].pointCompar(p[2]) || p[2].pointCompar(p[1])) System.out.println("В треугольнике не может быть две одинаковые точки"); else System.out.println( computeArea(p[0], p[1], p[2]) ); } public static double computeArea(Point3d A, Point3d B, Point3d C){ double a, b, c; a = A.distanceTo(B); b = B.distanceTo(C); c = A.distanceTo(C); double p = (a + b + c) / 2; return (Math.sqrt(p * (p - a) * (p - b) * (p - c))); } }
3.2 Результат работы программы
Рисунок 1 – Результат работы программы при вводе корректных параметров
Рисунок 2 – Проверка правильности результата
Рисунок 3 – Результат работы программы при вводе одинаковых точек
4 Вывод
Выполняя данную лабораторную работу, я изучила основы объектно-ориентированного программирования, посредством написания программы и классов на java.
Список используемой литературы
Камаев В.А., Костерин В.В. Технологии программирования. М.: Высшая школа,
2006.
Жоголев Е.А.Технология программирования. – М.: Научный мир, 2004.