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

Exercise 2

Il documento descrive un sistema di gestione degli impiegati in Java, con classi astratte e concrete per rappresentare diversi tipi di impiegati, inclusi i manager. Include anche la gestione delle eccezioni per garantire che le regole del team siano rispettate, come il divieto di avere manager nel team di un altro manager. Le classi implementano metodi per calcolare lo stipendio annuale e per gestire l'uguaglianza tra gli oggetti.

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

Exercise 2

Il documento descrive un sistema di gestione degli impiegati in Java, con classi astratte e concrete per rappresentare diversi tipi di impiegati, inclusi i manager. Include anche la gestione delle eccezioni per garantire che le regole del team siano rispettate, come il divieto di avere manager nel team di un altro manager. Le classi implementano metodi per calcolare lo stipendio annuale e per gestire l'uguaglianza tra gli oggetti.

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 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 (![Link](obj) || 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]();
}
}

Potrebbero piacerti anche