
Originariamente inviata da
andbin
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??