Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2017, 14:24   #1
Max00766
Форумчанин
 
Регистрация: 15.11.2015
Сообщений: 151
По умолчанию Работа с координатами фигур

Мне нужно с применением полиморфизма и абстракции описать класс треугольника и пятиугольника. Использую абстрактный класс 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());
	}

}
Max00766 вне форума Ответить с цитированием
Старый 09.02.2017, 23:13   #2
Max00766
Форумчанин
 
Регистрация: 15.11.2015
Сообщений: 151
По умолчанию

Со всем разобрался, готовый проект, если кому надо
lab.rar
Max00766 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решение задачи в Pascal - Проверить принадлежность точки с заданными координатами кругу с заданным радиусом и координатами центра Екатерина23 Помощь студентам 1 05.12.2013 16:35
Работа с координатами на х, у плоскости. Malhaz Visual C++ 0 15.09.2011 23:29
алгоритмы 2д фигур tarakannn Общие вопросы C/C++ 2 23.11.2008 11:23