Anto11796 ha scritto:
sto leggendo un codice già svolto che riguarda la lettura di un file di input dove vengono date delle coordinate(che verranno lette dentro una classe denominata "Vertici" e saranno le coordinate x e y).
Giusto solo alcuni piccoli appunti, non a te specificatamente ma in generale. Chi ha scritto quel codice evidentemente non aveva/ha le idee molto chiare.
Innanzitutto se una classe modella 1 vertice, si dovrebbe chiamare Vertic
e, non Vertici.
E visto che Poligono ha una lista di vertici ... sono vertici, non "lati".
Ma a parte questo, la cosa che mi piace di meno è tutto quel garbuglio di Math.pow e Math.sqrt. Il calcolo della distanza tra due vertici è una operazione "notevole", che meriterebbe di essere incapsulata più appropriatamente. Una possibilità è fare un metodo statico di "utilità" che riceve 2 oggetti Vertice e restituisce la distanza in double. Tecnicamente sarebbe corretto.
Ma c'è una soluzione più object-oriented. Se la classe Vertice avesse avuto un metodo del tipo:
public double distanzaDa(Vertice altroVertice)
Si poteva determinare la distanza tra 2 oggetti Vertice facendo: vert1.distanzaDa(vert2) e quindi quel getPerimetroR() che hai postato poteva diventare:
public double getPerimetroR() {
double perimetro = 0;
int ultimoInd = lati.size() - 1;
for (int i = 0; i < ultimoInd; i++) {
perimetro += lati.get(i).distanzaDa(lati.get(i+1));
}
perimetro += lati.get(ultimoInd).distanzaDa(lati.get(0));
return perimetro;
}