Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2017
    Messaggi
    2

    Problema esercizio poligoni

    Ciao a tutti! Ho un esercizio che mi richiede di leggere da file un tot di vertici con coordinate x e y e risolvere vari punti dell' esercizio. Io ho creato una classe Poligoni e dentro ho messo il costruttore e un arraylist di punti. Il mio dubbio � dove mettere la lunghezza dei lati del mio poligono, e se creare un' altra classe o no. grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da lasa77 Visualizza il messaggio
    Ciao a tutti! Ho un esercizio che mi richiede di leggere da file un tot di vertici con coordinate x e y e risolvere vari punti dell' esercizio. Io ho creato una classe Poligoni e dentro ho messo il costruttore e un arraylist di punti. Il mio dubbio è dove mettere la lunghezza dei lati del mio poligono, e se creare un' altra classe o no. grazie
    A me sembrano un po' poche come informazioni.
    Innanzitutto la classe con il costruttore e l'arraylist di punti (sono i vertici giusto ?) la chiamerei Poligono, è più logico se modella il singolo poligono.

    Perché hai utilizzato un arraylist invece che un semplice array? Devi poter aggiungere punti in seguito al poligono o è perché non ti danno il numero di vertici prima di leggerli da file (comunque alla lista potresti poi applicare il toArray se non ne hai veramente bisogno) ? Non che sia sbagliato usare la lista ...

    La lunghezza dei lati ti serve solo per calcolare il perimetro o l'area ? Forse una classe in più in questo caso è superflua, potrebbe bastare avere un array lunghezzaLati all'interno di Poligono (almeno io farei così senza sapere di più) ...

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da lasa77 Visualizza il messaggio
    Ciao a tutti! Ho un esercizio che mi richiede di leggere da file un tot di vertici con coordinate x e y e risolvere vari punti dell' esercizio. Io ho creato una classe Poligoni e dentro ho messo il costruttore e un arraylist di punti. Il mio dubbio � dove mettere la lunghezza dei lati del mio poligono, e se creare un' altra classe o no. grazie
    Innanzitutto, se non lo sai, all'interno del framework standard di Java ci sono già delle classi che modellano punti e poligoni. Ma presumo che essendo un "esercizio" non sia lecito usarle, giusto?.

    Se è così e devi quindi fare tutto da zero, allora dovresti fare almeno le seguenti classi:

    1) Una classe Punto che modella un punto x/y sul piano cartesiano. x e y tipicamente li si mette come double, se non ci sono altri requisiti particolari. Idem, se non ci sono necessità che magari in questo momento ignoro, gli oggetti Punto sarebbe meglio che siano "immutabili". Una volta creato un oggetto Punto, esso non è più modificabile (non si mettono metodi es. setX o setY).

    2) Una classe Poligono che modella un singolo poligono, composto chiaramente da una sequenza di N punti (oggetti di quella classe Punto).
    Gli oggetti Poligono potrebbero essere mutabili o immutabili ... dipende dai requisiti, non li conosco io. All'interno di un oggetto Poligono sicuramente devi tenere come minimo un array o List di oggetti Punto. Su questo "non ci piove", come si dice.
    Riguardo le lunghezze dei lati, anche qui dipende. Se Poligono è mutabile, puoi offrire un metodo es. calcolaLato(int i) che calcola al volo il lato tra il vertice i-esimo e quello i-esimo+1 .
    Se Poligono fosse immutabile (e anche Punto, come detto), i lati li puoi pre-calcolare durante la costruzione del Poligono e tenerli nell'oggetto Poligono e poi esporli con un metodo es. getLato(int i)
    Insomma, per la gestione dei lati dipende molto da quanto/quando devi usarli e per cosa.

    3) Hai parlato di leggere dati da un file. Se il contenuto di un file rappresenta 1 poligono, allora sarebbe meglio fare una classe es. FilePoligono che tiene come "stato" dell'oggetto un java.io.File (che è solo un pathname) e poi un metodo es. public Poligono leggiPoligono() throws IOException che legge il file e costruisce e restituisce l'oggetto Poligono.

    4) Sicuramente almeno un'altra classe specifica dell'esercizio es. EsercizioPoligoni con il classico main(String[] args) e il codice specifico che mette insieme le varie cose richieste.

    Ti sono state date abbastanza informazioni, valutale e prova ad applicarle. Per dubbi o problemi, chiedi in modo chiaro e preciso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2017
    Messaggi
    2
    Innanzitutto grazie a entrambi per le risposte. Avevo creato si una classe ListaPoligoni dove tenevo il mio main e i vari metodi per risolvere i vari punti dell esercizio,e una classe Poligono. Invece per leggere il file ho creato un file txt. copiando il testo dell esercizio e poi con un metodo in ListaPoligoni andavo a leggere i vari poligoni. Esempio testo con due poligoni:

    (0,0),(0,1),(1,1)


    (5,5),(5,10),(10,10),(10,5)

    Un punto dell es � ad esempio calcolare il perimetro delle due figure.
    Io quindi posso andare a creare un arraylist<Punto> in Poligono, una classe Punto dove inserisco x e y e ad esempio un metodo che mi calcoli i lati nella classe Poligono,sbaglio?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da lasa77 Visualizza il messaggio
    Un punto dell es � ad esempio calcolare il perimetro delle due figure.
    Io quindi posso andare a creare un arraylist<Punto> in Poligono, una classe Punto dove inserisco x e y e ad esempio un metodo che mi calcoli i lati nella classe Poligono,sbaglio?
    Molto abbozzato (ovviamente spetta a te).

    codice:
    public class Punto {
        private final double x;
        private final double y;
    
        // costruttore (riceve x e y)
        // metodi "getter" (non i setter, essendo "immutabile")
        // altro eventuale (es. toString, ecc...)
    }

    Se vuoi fare una cosa "furba", fai che sia Punto a saper calcolare la distanza tra due punti, ad esempio con un metodo in più del tipo:

    public double calcolaDistanza(Punto altroPunto)


    Poi supponendo di voler fare Poligono mutabile:

    codice:
    public class Poligono {
        private List<Punto> vertici;
    
        // costruttore (istanzia un ArrayList<Punto> )
    
        public void addVertice(Punto p) { ...... }
        public int getNumeroVertici() { ...... }
        public Punto getVertice(int i) { ...... }
        public double calcolaLato(int i) { ...... }
    
        // altro eventuale .... (anche un metodo che calcola subito il perimetro)
    }

    In queste due classi: niente I/O, né su file, né verso l'utente.



    Quote Originariamente inviata da lasa77 Visualizza il messaggio
    Esempio testo con due poligoni:

    (0,0),(0,1),(1,1)


    (5,5),(5,10),(10,10),(10,5)
    Quindi un file contiene più poligoni? Ok, allora puoi fare un'altra classe es.

    codice:
    public class FilePoligoni {
        private File file;
    
        // costruttore (riceve il java.io.File)
    
        public List<Poligono> leggiPoligoni() throws IOException { ...... }
    }
    Ultima modifica di andbin; 14-01-2017 a 15:54
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.