Exercise 2 - Sistema Gestione Impiegati
[Link] [Link]
public abstract class Impiegato { public class ImpiegatoBase extends Impiegato {
private final String nome; private static final double TARIFFA_ORARIA = 15.50;
private final String cognome;
private final int oreAnnue; public ImpiegatoBase(String nome, String cognome,
int oreAnnue) {
public Impiegato(String nome, String cognome, int oreAnnue) { super(nome, cognome, oreAnnue);
[Link] = nome; }
[Link] = cognome;
[Link] = oreAnnue; @Override
} public double getStipendioAnnuale() {
return getOreAnnue() * TARIFFA_ORARIA;
public String getNome() { }
return nome;
} @Override
public boolean equals(Object obj) {
public String getCognome() { return [Link](obj) && obj instanceof Impiegat
return cognome; }
} }
public int getOreAnnue() {
return oreAnnue;
}
public abstract double getStipendioAnnuale();
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != [Link]())
return false;
Impiegato other = (Impiegato) obj;
return oreAnnue == [Link] &&
[Link]([Link]) &&
[Link]([Link]);
}
}
[Link]
public class TeamManagerException extends Exception {
public TeamManagerException(String message) {
super(message);
}
}
[Link]
import [Link];
import [Link];
import [Link];
public class Manager extends Impiegato implements Comparable<Manager>, Iterable<Impiegato> {
private static final double TARIFFA_ORARIA = 25.90;
private final List<Impiegato> team;
public Manager(String nome, String cognome, int oreAnnue) {
super(nome, cognome, oreAnnue);
[Link] = new ArrayList<>();
}
@Override
public double getStipendioAnnuale() {
return getOreAnnue() * TARIFFA_ORARIA;
}
public void aggiungiAlTeam(Impiegato imp) throws TeamManagerException {
if (imp instanceof Manager)
throw new TeamManagerException("Un manager non può essere nel team di un altro manager.");
if ([Link](imp))
throw new TeamManagerException("Impiegato già nel team.");
if ([Link]() < 20)
throw new TeamManagerException("Impiegato con meno di 20 ore lavorate.");
[Link](imp);
}
@Override
public boolean equals(Object obj) {
if ( || getClass() != [Link]()) return false;
Manager other = (Manager) obj;
return [Link]([Link]);
}
@Override
public int compareTo(Manager other) {
return [Link]([Link](), [Link]());
}
@Override
public Iterator<Impiegato> iterator() {
return [Link]();
}
}