Мне нужно с применением полиморфизма и абстракции описать класс треугольника и пятиугольника. Использую абстрактный класс Figure.
Треугольник описываю координатами так как потом нужно будет его перемещать и определять пересечение с другими фигурами.
Проблема в том что когда я в методу move() пытаюсь переприсвоить новые координаты то они не применяются и остаются старые, очень нужна помощь, так как уже очень долго бьюсь над этой проблемой. Заранее большое спасибо)
Класс Figure
Код:
package lab6;
// Реализация абстрактного класса ( в задании T )
public abstract class Figure {
int n = 2;
private double[] a = new double[n];
private double[] b = new double[n];
private double[] c = new double[n];
private double[] d = new double[n];
private double[] e = new double[n];
// Конструкторы
public Figure() {}
public Figure(double[] a, double[] b, double[] c) {
this.a = a;
this.b = b;
this.c = c;
}
public Figure(double[] a, double[] b, double[] c, double[] d, double[] e) {
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.e = e;
}
// Абстрактные методы для обеих фигур
public abstract String getName();
public abstract double getSquare();
// public abstract void move();
public abstract boolean isIntersect();
public abstract double getPerimeter();
// Геттеры и сеттеры
public double[] getA() {
return a;
}
public void setA(double[] a) {
this.a = a;
}
public double[] getB() {
return b;
}
public void setB(double[] b) {
this.b = b;
}
public double[] getC() {
return c;
}
public void setC(double[] c) {
this.c = c;
}
public double[] getD() {
return d;
}
public void setD(double[] d) {
this.d = d;
}
public double[] getE() {
return e;
}
public void setE(double[] e) {
this.e = e;
}
}
Класс Triangle
Код:
package lab6;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Scanner;
public class Triangle extends Figure {
// Присваиваю каждой переменной координату
double a1 = getA()[0];
double a2 = getA()[1];
double b1 = getB()[0];
double b2 = getB()[1];
double c1 = getC()[0];
double c2 = getC()[1];
// Считаю длины по формуле
double AB = Math.sqrt(Math.pow(b1 - a1, 2) + (Math.pow(b2 - a2, 2)));
double BC = Math.sqrt(Math.pow(c1 - b1, 2) + (Math.pow(c2 - b2, 2)));
double AC = Math.sqrt(Math.pow(c1 - a1, 2) + (Math.pow(c2 - a2, 2)));
public Triangle(double[] a, double[] b, double[] c) {
super(a, b, c);
}
// Получение имени фигуры
@Override
public String getName() {
return "Triangle";
}
@Override
//Площадь
public double getSquare() {
double p = (AB + BC+ AC) / 2;
// Вычисление площади с округлением до 3 знаков
return new BigDecimal(Math.sqrt(p * (p - AB) * (p - BC) * (p - AC))).setScale(3, RoundingMode.HALF_UP).doubleValue();
}
//Периметр
public double getPerimeter() {
//Вычисление периметра с округлением до 3 знаков
return new BigDecimal(AB + BC+ AC).setScale(3, RoundingMode.HALF_UP).doubleValue();
}
//@Override
// Перемещаю треугольник
public void move(double a1, double a2, double b1, double b2, double c1, double c2) {
this.a1 = a1;
this.a2 = a2;
this.b1 = b1;
this.b2 = b2;
this.c1 = c1;
this.c2 = c2;
}
@Override
public boolean isIntersect() {
// TODO Auto-generated method stub
return false;
}
}
Main:
Код:
package lab6;
public class Main {
public static void main(String[] args) {
double[] a = {5, 6};
double[] b = {7, 3};
double[] c = {9, 2};
Triangle triangle = new Triangle(a, b, c);
// Вывожу координаты
System.out.print("a: " +triangle.a1 + " ");
System.out.print(triangle.a2 + " | ");
System.out.print("b: " +triangle.b1 + " ");
System.out.print(triangle.b2 + " | ");
System.out.print("c: " +triangle.c1 + " ");
System.out.println(triangle.c2 + " | ");
System.out.println("-------");
// Вывожу длины сторон
System.out.println(triangle.AB);
System.out.println(triangle.AC);
System.out.println(triangle.BC);
System.out.println("-------");
// Имя периметр и площадь
System.out.println(triangle.getName());
System.out.println(triangle.getPerimeter());
System.out.println(triangle.getSquare());
System.out.println("__________________________");
// Перемещаю и делаю то же самое
triangle.move(2, 6, 5, 3, 1, 2);
System.out.print("a: " +triangle.a1 + " ");
System.out.print(triangle.a2 + " | ");
System.out.print("b: " +triangle.b1 + " ");
System.out.print(triangle.b2 + " | ");
System.out.print("c: " +triangle.c1 + " ");
System.out.println(triangle.c2 + " | ");
System.out.println("-------");
System.out.println(triangle.AB);
System.out.println(triangle.AC);
System.out.println(triangle.BC);
System.out.println("-------");
System.out.println(triangle.getName());
System.out.println(triangle.getPerimeter());
System.out.println(triangle.getSquare());
}
}