Criar Polígono em Java

Olá, sou iniciante em POO e preciso de ajuda num programa que estou a fazer:
Enunciado:Crie a classe Polígono, que usa a classe Ponto( cada ponto tem x e y como coordenadas) das perguntas anteriores. Um Polígono é composto é uma sequência de pontos (implemente usando um array), os vértices, ligados por arestas (não é necessário representar na classe). Implemente os construtores e os métodos (e.g., print, perímetro, sets e gets, adicionar/remover ponto, deslocar polígono, etc) adequados de forma a satisfazer o maior número de utilizadores da classe (programadores que vão usar a classe). Implemente um pequeno programa (main) para testar a classe Polígono e os seus métodos.

Classe Polígono:
public class Polígono {
    private int pontos;

    public Polígono(int pontos){
        int[] x=new int[pontos];
        int[] y=new int[pontos];

    }
}

Main:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("Indique quantos pontos tem o polígono: ");
        int pontos=input.nextInt();
        Polígono p=new Polígono(pontos);

        for(int i=0;i<pontos;i++){
            System.out.println("Indique a coordenada de x:");

            System.out.println("Indique a coordenada de y:");
        }
    }
}

As minhas dúvidas são: como faço para o utilizador ao dar as coordenadas de x e y e estas serem passadas para a classe Poligono e posteriormente como faço para adicionar e remover pontos visto que o polígono tem tamanho definido desde início e pelo que sei este não pode ser alterado.
Obrigada desde já

Talvez ajude a esclarecer a minha dúvida inicial:

public class Ponto2D {
    private float x;
    private float y;

    public Ponto2D(float x, float y) {
        this.x = x;
        this.y = y;
    }

    public float getX() {
        return x;
    }

    public float getY() {
        return y;
    }

Isto é o código da classe Ponto de questões anteriores, será que tenho de usar classes aninhadas? O meu objetivo é que o utilizador informe as coordenadas dos pontos e estas sejam armazenadas no objeto Polígono para cada ponto criado.

1 curtida

Seu enunciado está assim:

Crie a classe Polígono, que usa a classe Ponto( cada ponto tem x e y como coordenadas) das perguntas anteriores. Um Polígono é composto é uma sequência de pontos (implemente usando um array), os vértices, ligados por arestas (não é necessário representar na classe).

Mas você criou a classe assim:

public class Polígono {
    
    private int pontos;

    public Polígono(int pontos){
        int[] x=new int[pontos];
        int[] y=new int[pontos];
    }
}

O certo seria você criar um array de Ponto e não um array de int.
Eu faria assim:

public class Polígono {
    
    private Ponto[] pontos;

    public Polígono(Ponto... pontos){
        this.pontos = pontos;
    }
}

Seu enunciado diz pra você criar uma classe Ponto, mas você criou Ponto2D

1 curtida

Como parâmetro da função Polígono é suposto passar o array de pontos? As reticências têm algum significado?

Polígono não é uma função, é uma classe.

As reticências indicam parâmetro opcional, funciona semelhante à um array, mas é mais prático na hora de passar os parâmetros

Se você declara o parâmetro como sendo do tipo array:

public Polígono(Ponto[] pontos)

Você vai ter que passar os parâmetros assim:

Poligono p = new Polígono( new Ponto[] { new Ponto(x1, y1), new Ponto(x2, y2), new Ponto(x3, y3), new Ponto(xN, yN) } );

Se você declara como sendo parâmetros opcionais:

public Polígono(Ponto... pontos)

Aí pode invocar assim:

Poligono p = new Polígono( new Ponto(x1, y1), new Ponto(x2, y2), new Ponto(x3, y3), new Ponto(xN, yN) );
1 curtida