codice:
===================================================================================
/**
* VEICOLI: i quali sono caratterizzati da marca, modello e da un metodo per la stampa di un
indicatore di efficienza del veicolo. L’implementazione di tale metodo non è nota a priori, in
quanto varierà in base al veicolo specifico. La classe deve prevedere un ordinamento per le sue
istanze basato sull’efficienza (i veicoli di efficienza maggiore vengono prima).
*/
public abstract class Veicolo {
private String marca, modello;
public abstract double getEfficienza();
public Veicolo(String marca, String modello) {
this.marca = marca;
this.modello = modello;
}
public static Comparator<Object> getVeicoliOrdering(){
return new VeicoliComparator();
}
public String getMarca() {
return marca;
}
public String getModello() {
return modello;
}
}
====================================================================================
/**
* CONCESSIONARIO: caratterizzato da nome, indirizzo e dall’elenco dei veicoli in pronta consegna.
Essa permette di:
a. Aggiungere un veicolo;
b. Rimuovere un veicolo;
c. Dato un veicolo, restituire l’elenco dei veicoli della stessa tipologia;
d. Ciclare sui veicoli tramite for-each, in ordine di efficienza.
*/
public class Concessionario {
private String nome, indirizzo;
private List<Veicolo> elencoVeicoli;
public Concessionario(String nome, String indirizzo) {
this.nome = nome;
this.indirizzo = indirizzo;
elencoVeicoli = new ArrayList<>();
}
public String getNome() {
return nome;
}
public String getIndirizzo() {
return indirizzo;
}
//a. Aggiungere un veicolo;
public void addVeicolo(Veicolo v) {
if (v.equals(null)) {
throw new NullPointerException();
} else {
elencoVeicoli.add(v);
}
}
//b. Rimuovere un veicolo;
public void removeVeicolo(Veicolo v) throws VeicoloNonPresenteException {
if (elencoVeicoli.contains(v)) {
throw new VeicoloNonPresenteException();
} else if (v.equals(null)) {
throw new NullPointerException();
} else {
elencoVeicoli.remove(v);
}
}
//c. Dato un veicolo, restituire l’elenco dei veicoli della stessa tipologia;
public List<Veicolo> getVeicoliUgualeTipologia(Veicolo v) {
List<Veicolo> listaVeicoli = new ArrayList<>();
if (v.equals(null)) {
throw new NullPointerException();
} else {
for (Veicolo veicolo : elencoVeicoli) {
if (veicolo.getClass().equals(v.getClass())) {
listaVeicoli.add(veicolo);
}
}
}
return listaVeicoli;
}
//d. Ciclare sui veicoli tramite for-each, in ordine di efficienza.
public void cicla(){
}
}