Quote Originariamente inviata da andbin Visualizza il messaggio
Classe Point (ti è stato chiesto di creare Punto ... non Point in inglese):
1) i campi statici x1/y1 NON hanno senso di esistere (e nemmeno getX1/getY1).
2) costruttori ok. Vedo che tieni traccia di quante sono le istanze. Male non fa ma non mi sembra che sia stato richiesto.
3) getter/setter ok
4) creaCasuale no, non ha senso che restituisca String. Deve restituire un oggetto di quella classe! Non una stringa (che serve ben poco)


Classe Poligono:
1) getPerimetro()/getArea() astratti ok


Classi Rettangle e Triangle (idem, è stato chiesto Rettangolo e Triangolo):
1) mi paiono complesse e "contorte"
2) creaCasuale idem non deve restituire un String


Ripensa bene il tutto.

Ho rivisto un po' tutto, seguendo i tuoi consigli.

Classe Punto
codice:
class Punto {
    private int x;
    private int y;


    //Costruttore

    public Punto() {
    }

    public Punto(int x, int y) {
        this.x = x;
        this.y = y;
    }

    //Getter e Setter di x,y

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }


    //Metodo creazione punto casuale

    public static Punto creaCasuale() {

        //Crea Punto Casuale
        Punto staticPunto = new Punto( (int) (20 * Math.random()), (int) (20 * Math.random()));

        return staticPunto;
    }
}
Classe Triangolo
codice:
class Triangolo extends Poligono {
    private double AB, BC, CA;

    //Costruttore
    public Triangolo(double AB, double BC, double CA) {
        this.AB = AB;
        this.BC = BC;
        this.CA = CA;
    }

    public Triangolo(Punto A, Punto B, Punto C) {

        //Formula distanza tra due punti

        AB = (int) Math.sqrt(Math.pow((B.getX() - A.getX()), 2) + Math.pow((B.getY() - A.getY()), 2));
        BC = (int) Math.sqrt(Math.pow((C.getX() - B.getX()), 2) + Math.pow((C.getY() - B.getY()), 2));
        CA = (int) Math.sqrt(Math.pow((A.getX() - C.getX()), 2) + Math.pow((A.getY() - C.getY()), 2));
    }

    //Metodi getter

    public double getAB() {
        return AB;
    }

    public double getBC() {
        return BC;
    }

    public double getCA() {
        return CA;
    }

    //Metodi Perimetro e Area

    @Override
    public double getPerimetro() {
        return AB + BC + CA;
    }

    @Override
    public double getArea() {
        double halfPerimeter = (AB + BC + CA) / 2;
        return Math.sqrt(halfPerimeter * (halfPerimeter - AB) * (halfPerimeter - BC) * (halfPerimeter - CA));
    }

    //Metodi Static creaCasuale

    public static Triangolo creaCasuale() {
        //Creo i lati del Triangolo

        Triangolo TriCasuale = new Triangolo(((20 * Math.random()) + 1), ((20 * Math.random()) + 1), ((20 * Math.random()) + 1));

        return TriCasuale;
    }
}
Classe Rettangolo
codice:
class Rettangolo extends Poligono{
    private double AB, BC, CD, DA;

    //Costruttori

    public Rettangolo (double AB, double BC){
        this.AB = AB;
        this.BC = BC;
    }

    public Rettangolo(Punto A, Punto B, Punto C, Punto D){

        //Formula distanza tra due punti

        AB = Math.sqrt( Math.pow( (B.getX() - A.getX() ), 2 ) + Math.pow( (B.getY() - A.getY() ) , 2) );
        BC = Math.sqrt( Math.pow( (B.getX() - A.getX() ), 2 ) + Math.pow( (B.getY() - A.getY() ) , 2) );
        CD = Math.sqrt( Math.pow( (B.getX() - A.getX() ), 2 ) + Math.pow( (B.getY() - A.getY() ) , 2) );
        DA = Math.sqrt( Math.pow( (B.getX() - A.getX() ), 2 ) + Math.pow( (B.getY() - A.getY() ) , 2) );
    }

    public double getAB() {
        return AB;
    }

    public double getBC() {
        return BC;
    }

    public double getCD() {
        return CD;
    }

    public double getDA() {
        return DA;
    }

    //Metodi Perimetro e Area

    @Override
    public double getPerimetro() {
        return (AB + BC) * 2;
    }

    @Override
    public double getArea() {
        return AB * BC;
    }

    //Metodo Static creaCasuale

    public static Rettangolo creaCasuale() {
        //Creo Rettangolo casuale

        Rettangolo RetCasuale = new Rettangolo((20 * Math.random()) + 1, (20 * Math.random()) + 1);

        return RetCasuale;
    }
}
Classe cerchio
codice:
class Cerchio extends Poligono{
    private double radius;
    private final double piGreco = 3.14159;

    //Costruttori

    public Cerchio(double radius) {
        this.radius = radius;
    }

    //Metodi getter

    public double getRadius() {
        return radius;
    }


    //Metodo Area e Perimetro non Statici

    @Override
    public double getPerimetro() {
        return 2 * radius * piGreco;
    }

    @Override
    public double getArea() {
        return Math.pow(radius,2.0) * piGreco;
    }

    //Metodi Statici

    public static Cerchio creaCasuale() {

        Cerchio CerCasuale = new Cerchio((20 * Math.random()) + 1);

        return CerCasuale;
    }

}
Avendo cambiato i metodi creaCasuale, mi sorge una domanda spontanea,
Come faccio a visualizzare la x e la y del Punto creato casualmente??
Ho provato cosi, ma non sono sicuro che il primo e il secondo crea casuale si riferiscano allo stesso oggetto.
codice:
System.out.println( Punto.creaCasuale().getX() + " " + Punto.creaCasuale().getY());
Oppure non ha senso stampare la x, e y essendo un metodo statico??