Il 0% ha trovato utile questo documento (0 voti)
0 visualizzazioni2 pagine

exercise4

Il documento descrive la struttura di classi per un sistema di torneo di calcio, includendo classi per calciatori, squadre, partite e gestione del torneo. Le classi implementano regole per la registrazione di calciatori e partite, garantendo che non ci siano duplicati. Inoltre, viene gestita l'eccezione per situazioni di errore, come il superamento del numero massimo di calciatori per squadra.

Caricato da

bolari5165
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
0 visualizzazioni2 pagine

exercise4

Il documento descrive la struttura di classi per un sistema di torneo di calcio, includendo classi per calciatori, squadre, partite e gestione del torneo. Le classi implementano regole per la registrazione di calciatori e partite, garantendo che non ci siano duplicati. Inoltre, viene gestita l'eccezione per situazioni di errore, come il superamento del numero massimo di calciatori per squadra.

Caricato da

bolari5165
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

Exercise 4 - Sistema Torneo Calcio

[Link] [Link]
public abstract class Calciatore implements Comparable<Calciatore> { import [Link];
private final String nome; import [Link];
private final String cognome; import [Link];
private final int numeroMaglia;
public class Squadra {
public Calciatore(String nome, String cognome, int numeroMaglia) { private final String nome;
[Link] = nome; private final Set<Calciatore> calciatori;
[Link] = cognome;
[Link] = numeroMaglia; public Squadra(String nome, Set<Calciatore> calciatori) {
} if ([Link]() > 22)
throw new IllegalArgumentException("Troppi calciatori.");
public String getNome() {
return nome; long portieri = [Link]()
} .filter(c -> c instanceof Portiere).count();
long attaccanti = [Link]()
public String getCognome() { .filter(c -> c instanceof Attaccante).count();
return cognome;
} if (portieri > 3)
throw new IllegalArgumentException("Troppi portieri.");
public int getNumeroMaglia() { if (attaccanti > 5)
return numeroMaglia; throw new IllegalArgumentException("Troppi attaccanti.");
}
[Link] = nome;
@Override [Link] = new HashSet<>(calciatori);
public boolean equals(Object o) { }
if (!(o instanceof Calciatore)) return false;
Calciatore other = (Calciatore) o; public String getNome() {
return [Link]([Link]) && return nome;
[Link]([Link]) && }
numeroMaglia == [Link];
} public Set<Calciatore> getCalciatori() {
return new HashSet<>(calciatori);
@Override }
public int compareTo(Calciatore other) {
return [Link]([Link], [Link]); @Override
} public boolean equals(Object o) {
} if (!(o instanceof Squadra)) return false;
Squadra other = (Squadra) o;
return [Link]([Link]) &&
[Link]([Link]);
}
}

[Link] [Link]
public class Partita { public class TorneoException extends Exception {
private final Squadra squadra1; public TorneoException(String message) {
private final Squadra squadra2; super(message);
private final String data; }
}
public Partita(Squadra squadra1, Squadra squadra2, String data) {
this.squadra1 = squadra1;
this.squadra2 = squadra2;
[Link] = data;
}

public Squadra getSquadra1() {


return squadra1;
}

public Squadra getSquadra2() {


return squadra2;
}

public String getData() {


return data;
}

// equals is assumed to be correctly defined as per specification


}
[Link]
import [Link].*;

public class Torneo implements Iterable<Partita> {


private final Set<Partita> partite;

public Torneo() {
[Link] = new HashSet<>();
}

public void aggiungiPartita(Partita p) throws TorneoException {


for (Partita esistente : partite) {
boolean stesseSquadre = (
(esistente.getSquadra1().equals(p.getSquadra1()) &&
esistente.getSquadra2().equals(p.getSquadra2())) ||
(esistente.getSquadra1().equals(p.getSquadra2()) &&
esistente.getSquadra2().equals(p.getSquadra1()))
);

if (stesseSquadre)
throw new TorneoException("Partita già registrata con le stesse squadre.");

Set<Calciatore> giocatoriEsistenti = new HashSet<>();


[Link](esistente.getSquadra1().getCalciatori());
[Link](esistente.getSquadra2().getCalciatori());

for (Calciatore c : p.getSquadra1().getCalciatori()) {


if ([Link](c))
throw new TorneoException("Calciatore già presente in altra squadra.");
}

for (Calciatore c : p.getSquadra2().getCalciatori()) {


if ([Link](c))
throw new TorneoException("Calciatore già presente in altra squadra.");
}
}

[Link](p);
}

public Set<Partita> getPartiteInData(String data) {


Set<Partita> result = new HashSet<>();
for (Partita p : partite) {
if ([Link]().equals(data)) {
[Link](p);
}
}
return result;
}

@Override
public Iterator<Partita> iterator() {
return [Link]();
}
}

Potrebbero piacerti anche