Commit c109909e authored by Anya Helene Bagge's avatar Anya Helene Bagge 🦆
parents b1a7287f a82e41f4
package inf101.immutable;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class FeilSjef extends Person implements Iterable<Person> {
// hvis ikke private, kan vi umulig garantere at Sjef-objektet
// er konsistent, med f.eks. med <= 5 ansatte og at sjefen ikke er sin egen ansatt
List<Person> ansatte;
public FeilSjef(ImmutableNavn navn, List<Person> ansatte) {
super(navn);
if(ansatte.size() > 5)
throw new IllegalArgumentException("Sjefen kan ikke ha flere ansatte!");
if(ansatte.contains(this))
throw new IllegalArgumentException("Sjefen kan ikke være sin egen sjef!");
this.ansatte = ansatte; // hmm, går dette egentlig bra?
}
public List<Person> getAnsatte() {
return ansatte; // whoops?
}
public void setAnsatte(List<Person> ansatte) {
if(ansatte.size() > 5)
throw new IllegalArgumentException("Sjefen kan ikke ha flere ansatte!");
if(ansatte.contains(this))
throw new IllegalArgumentException("Sjefen kan ikke være sin egen sjef!");
this.ansatte = ansatte;
}
/* Bedre enn setAnsatte() hvis vi vil gjøre det mulig å legge til mange ansatte i en omgang */
public void addAnsatte(Collection<Person> ans) {
for(Person p : ans)
addAnsatt(p);
}
public void addAnsatt(Person ansatt) {
if(ansatte.size() >= 5)
throw new IllegalStateException("Sjefen kan ikke ha flere ansatte!");
if(ansatt == this)
throw new IllegalArgumentException("Kan ikke være sin egen sjef!");
ansatte.add(ansatt);
}
public void removeAnsatt(Person ansatt) {
ansatte.remove(ansatt);
}
@Override
public Iterator<Person> iterator() {
return Collections.unmodifiableList(ansatte).iterator();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment