JavaDoc
This commit is contained in:
parent
d50037d464
commit
40e58cde9c
5 changed files with 118 additions and 5 deletions
|
@ -1,28 +1,51 @@
|
||||||
package it.unibs.arnaldo.rovineperdute;
|
package it.unibs.arnaldo.rovineperdute;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Classe che rappresenta una coordinata nello spazio tridimensionale.
|
||||||
|
* Contiene le coordinate x, y e l'altezza.
|
||||||
|
*/
|
||||||
public class Coordinata {
|
public class Coordinata {
|
||||||
private final int x;
|
private final int x;
|
||||||
private final int y;
|
private final int y;
|
||||||
private final int altezza;
|
private final int altezza;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Costruttore della classe Coordinata.
|
||||||
|
* @param x la coordinata x
|
||||||
|
* @param y la coordinata y
|
||||||
|
* @param altezza l'altezza della coordinata
|
||||||
|
*/
|
||||||
public Coordinata(int x, int y, int altezza){
|
public Coordinata(int x, int y, int altezza){
|
||||||
this.altezza = altezza;
|
this.altezza = altezza;
|
||||||
this.x = x;
|
this.x = x;
|
||||||
this.y = y;
|
this.y = y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter per la coordinata x
|
||||||
|
* @return la coordinata x
|
||||||
|
*/
|
||||||
public int getX() {
|
public int getX() {
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter per la coordinata y
|
||||||
|
* @return la coordinata y
|
||||||
|
*/
|
||||||
public int getY() {
|
public int getY() {
|
||||||
return y;
|
return y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter per l'altezza della coordinata
|
||||||
|
* @return l'altezza della coordinata
|
||||||
|
*/
|
||||||
public int getAltezza() {
|
public int getAltezza() {
|
||||||
return altezza;
|
return altezza;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Coordinata{" +
|
return "Coordinata{" +
|
||||||
|
@ -32,7 +55,12 @@ public class Coordinata {
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calcola la distanza tra questa coordinata e un'altra coordinata in base al tipo di veicolo.
|
||||||
|
* @param c la coordinata da confrontare
|
||||||
|
* @param tipoVeicolo il tipo di veicolo utilizzato per calcolare la distanza
|
||||||
|
* @return la distanza calcolata, o -1 se il tipo di veicolo non è riconosciuto
|
||||||
|
*/
|
||||||
public double calcolaDistanza(Coordinata c, TipoVeicolo tipoVeicolo){
|
public double calcolaDistanza(Coordinata c, TipoVeicolo tipoVeicolo){
|
||||||
if (tipoVeicolo == TipoVeicolo.METZTLI){
|
if (tipoVeicolo == TipoVeicolo.METZTLI){
|
||||||
return Math.abs(altezza - c.getAltezza());
|
return Math.abs(altezza - c.getAltezza());
|
||||||
|
|
|
@ -2,24 +2,42 @@ package it.unibs.arnaldo.rovineperdute;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Classe che rappresenta un grafo di rovine perdute.
|
||||||
|
* Contiene metodi per aggiungere rovine, calcolare lo spanning tree e ottenere collegamenti tra rovine.
|
||||||
|
*/
|
||||||
|
|
||||||
public class Graph {
|
public class Graph {
|
||||||
private final HashMap<RovinaPerduta, List<RovinaPerduta>> graph;
|
private final HashMap<RovinaPerduta, List<RovinaPerduta>> graph;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Costruttore della classe Graph.
|
||||||
|
* Inizializza un grafo vuoto.
|
||||||
|
*/
|
||||||
public Graph(){
|
public Graph(){
|
||||||
graph = new HashMap<>();
|
graph = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
public Graph(HashMap<RovinaPerduta, List<RovinaPerduta>> graph){
|
* Aggiunge una rovina perduta al grafo con i suoi collegamenti.
|
||||||
this.graph = graph;
|
* @param rp la rovina perduta da aggiungere
|
||||||
}
|
* @param links la lista di rovine perdute collegate a rp
|
||||||
|
*/
|
||||||
public void add(RovinaPerduta rp, List<RovinaPerduta> links) {
|
public void add(RovinaPerduta rp, List<RovinaPerduta> links) {
|
||||||
graph.put(rp, links);
|
graph.put(rp, links);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter per ottenere il grafo delle rovine perdute.
|
||||||
|
* @return una mappa che associa ogni rovina perduta a una lista di rovine perdute collegate
|
||||||
|
*/
|
||||||
public HashMap<RovinaPerduta, List<RovinaPerduta>> getGraph() {
|
public HashMap<RovinaPerduta, List<RovinaPerduta>> getGraph() {
|
||||||
return graph;
|
return graph;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getters per ottenere la lista di rovine perdute collegate a una rovina specifica.
|
||||||
|
* @param rp la rovina perduta di cui si vogliono ottenere i collegamenti
|
||||||
|
*/
|
||||||
public List<RovinaPerduta> getListaCollegamenti(RovinaPerduta rp){
|
public List<RovinaPerduta> getListaCollegamenti(RovinaPerduta rp){
|
||||||
return graph.get(rp);
|
return graph.get(rp);
|
||||||
}
|
}
|
||||||
|
@ -37,6 +55,13 @@ public class Graph {
|
||||||
return ret.toString();
|
return ret.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calcola lo spanning tree del grafo a partire da un punto di partenza specificato.
|
||||||
|
* Utilizza l'algoritmo di Dijkstra per trovare il percorso minimo verso la rovina perduta.
|
||||||
|
* @param puntoPartenza il punto di partenza da cui calcolare lo spanning tree
|
||||||
|
* @param tipo il tipo di veicolo utilizzato per calcolare le distanze
|
||||||
|
* @return una lista di RovinaPerdutaGrafo che rappresenta lo spanning tree
|
||||||
|
*/
|
||||||
public List<RovinaPerdutaGrafo> calcolaSpanningTree(RovinaPerduta puntoPartenza, TipoVeicolo tipo){
|
public List<RovinaPerdutaGrafo> calcolaSpanningTree(RovinaPerduta puntoPartenza, TipoVeicolo tipo){
|
||||||
HashMap<RovinaPerduta, Double> distanze = new HashMap<>();
|
HashMap<RovinaPerduta, Double> distanze = new HashMap<>();
|
||||||
HashMap<RovinaPerduta, RovinaPerduta> predecessori = new HashMap<>();
|
HashMap<RovinaPerduta, RovinaPerduta> predecessori = new HashMap<>();
|
||||||
|
|
|
@ -8,8 +8,21 @@ import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Classe che gestisce il parsing del file XML delle rovine perdute e la generazione di un file XML con le rotte.
|
||||||
|
* Contiene metodi per leggere il file XML, costruire il grafo delle rovine e generare un file XML con le rotte.
|
||||||
|
*/
|
||||||
public class Parser {
|
public class Parser {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Metodo per leggere un file XML contenente le rovine perdute e costruire un grafo.
|
||||||
|
* Il file XML deve seguire una struttura specifica in cui ogni rovina è rappresentata da un elemento "city"
|
||||||
|
* e i collegamenti tra le rovine sono rappresentati da elementi "link".
|
||||||
|
*
|
||||||
|
* @param fileName il nome del file XML da leggere
|
||||||
|
* @return un oggetto Graph che rappresenta il grafo delle rovine perdute
|
||||||
|
*/
|
||||||
|
|
||||||
// rovina = città
|
// rovina = città
|
||||||
public static Graph parseRovinePerduteXML(String fileName) {
|
public static Graph parseRovinePerduteXML(String fileName) {
|
||||||
|
|
||||||
|
@ -81,9 +94,13 @@ public class Parser {
|
||||||
}
|
}
|
||||||
|
|
||||||
xmlr.close();
|
xmlr.close();
|
||||||
|
|
||||||
|
// creo il grafo
|
||||||
Graph grafo = new Graph();
|
Graph grafo = new Graph();
|
||||||
|
|
||||||
|
// aggiungo le rovine al grafo
|
||||||
for (Integer idx : mappaCollegamenti.keySet()){
|
for (Integer idx : mappaCollegamenti.keySet()){
|
||||||
|
// trasformo gli indici dei collegamenti in RovinaPerduta
|
||||||
List<Integer> listaIndiciCollegamenti = mappaCollegamenti.get(idx);
|
List<Integer> listaIndiciCollegamenti = mappaCollegamenti.get(idx);
|
||||||
List<RovinaPerduta> listaCollegamenti = new ArrayList<>();
|
List<RovinaPerduta> listaCollegamenti = new ArrayList<>();
|
||||||
RovinaPerduta rp = rovineMap.get(idx);
|
RovinaPerduta rp = rovineMap.get(idx);
|
||||||
|
@ -103,6 +120,13 @@ public class Parser {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Metodo per generare un file XML contenente le rotte delle due squadre Tonatiuh e Metztli.
|
||||||
|
* Il file XML conterrà le informazioni sulle città visitate, il costo totale e il numero di città per ogni squadra.
|
||||||
|
*
|
||||||
|
* @param minimumTreeTonatium la lista delle rovine per la squadra Tonatiuh
|
||||||
|
* @param minimumTreeMetztli la lista delle rovine per la squadra Metztli
|
||||||
|
*/
|
||||||
public static void generaXML(List<RovinaPerdutaGrafo> minimumTreeTonatium, List<RovinaPerdutaGrafo> minimumTreeMetztli) {
|
public static void generaXML(List<RovinaPerdutaGrafo> minimumTreeTonatium, List<RovinaPerdutaGrafo> minimumTreeMetztli) {
|
||||||
String fileName = "routes.xml";
|
String fileName = "routes.xml";
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,45 @@
|
||||||
package it.unibs.arnaldo.rovineperdute;
|
package it.unibs.arnaldo.rovineperdute;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Classe che rappresenta una città perduta, ovvero una rovina con le sue coordinate, nome e ID.
|
||||||
|
*/
|
||||||
public class RovinaPerduta {
|
public class RovinaPerduta {
|
||||||
private final Coordinata coordinata;
|
private final Coordinata coordinata;
|
||||||
private final String nome;
|
private final String nome;
|
||||||
private final int id;
|
private final int id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Costruttore della classe RovinaPerduta.
|
||||||
|
* @param coordinata la coordinata della rovina perduta
|
||||||
|
* @param nome il nome della rovina perduta
|
||||||
|
* @param id l'ID della rovina perduta
|
||||||
|
*/
|
||||||
public RovinaPerduta(Coordinata coordinata, String nome, int id) {
|
public RovinaPerduta(Coordinata coordinata, String nome, int id) {
|
||||||
this.coordinata = coordinata;
|
this.coordinata = coordinata;
|
||||||
this.nome = nome;
|
this.nome = nome;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter per le coordinate della rovina perduta.
|
||||||
|
* @return la coordinata della rovina perduta
|
||||||
|
*/
|
||||||
public Coordinata getCoordinata() {
|
public Coordinata getCoordinata() {
|
||||||
return coordinata;
|
return coordinata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter per il nome della rovina perduta.
|
||||||
|
* @return il nome della rovina perduta
|
||||||
|
*/
|
||||||
public String getNome() {
|
public String getNome() {
|
||||||
return nome;
|
return nome;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter per l'ID della rovina perduta.
|
||||||
|
* @return l'ID della rovina perduta
|
||||||
|
*/
|
||||||
public int getId(){
|
public int getId(){
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,28 @@
|
||||||
package it.unibs.arnaldo.rovineperdute;
|
package it.unibs.arnaldo.rovineperdute;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Classe che estende RovinaPerduta per rappresentare una rovina perduta con una distanza specifica.
|
||||||
|
* Questa classe è utilizzata per gestire le rovine perdute in un grafo, dove la distanza rappresenta
|
||||||
|
*/
|
||||||
public class RovinaPerdutaGrafo extends RovinaPerduta{
|
public class RovinaPerdutaGrafo extends RovinaPerduta{
|
||||||
private final double distanza;
|
private final double distanza;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Costruttore della classe RovinaPerdutaGrafo.
|
||||||
|
* @param coordinata la coordinata della rovina perduta
|
||||||
|
* @param nome il nome della rovina perduta
|
||||||
|
* @param id l'ID della rovina perduta
|
||||||
|
* @param distanza la distanza dalla rovina perduta
|
||||||
|
*/
|
||||||
public RovinaPerdutaGrafo(Coordinata coordinata, String nome, int id, double distanza) {
|
public RovinaPerdutaGrafo(Coordinata coordinata, String nome, int id, double distanza) {
|
||||||
super(coordinata, nome, id);
|
super(coordinata, nome, id);
|
||||||
this.distanza = distanza;
|
this.distanza = distanza;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter per la distanza della rovina perduta.
|
||||||
|
* @return la distanza dalla rovina perduta
|
||||||
|
*/
|
||||||
public double getDistanza() {
|
public double getDistanza() {
|
||||||
return distanza;
|
return distanza;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue