90 lines
2.4 KiB
Java
90 lines
2.4 KiB
Java
|
import java.util.ArrayList;
|
||
|
import java.util.List;
|
||
|
|
||
|
/** feuille du motif composite */
|
||
|
public class Chef extends Person {
|
||
|
|
||
|
private List<Person> subalternes = new ArrayList<Person>();
|
||
|
private Integer avec,sans = null;
|
||
|
|
||
|
public boolean addSubalterne(Person p){
|
||
|
return subalternes.add(p);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/** constructeur
|
||
|
*
|
||
|
* @param n fun factor
|
||
|
*
|
||
|
*/
|
||
|
public Chef(int n){
|
||
|
super(n);
|
||
|
// d'autres choses peut-être.
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* La meilleure fête avec moi, c'est la meilleure fête sans mes subalternes pour eux plus moi.
|
||
|
*
|
||
|
* @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
|
||
|
*
|
||
|
*/
|
||
|
public int bestPartyWithoutMe(){
|
||
|
if (this.sans != null) {
|
||
|
return this.sans;
|
||
|
}
|
||
|
int output = 0;
|
||
|
for (Person person : subalternes) {
|
||
|
output += person.bestParty();
|
||
|
}
|
||
|
this.sans = output;
|
||
|
return output;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* La meilleure fête avec moi, c'est la meilleure fête sans mes subalternes pour eux plus moi.
|
||
|
*
|
||
|
* @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
|
||
|
*
|
||
|
*/
|
||
|
private int bestPartyWithMe(){
|
||
|
if (this.avec != null) {
|
||
|
return this.avec;
|
||
|
}
|
||
|
int output = getFunFactor();
|
||
|
for (Person person : subalternes) {
|
||
|
output += person.bestPartyWithoutMe();
|
||
|
}
|
||
|
this.avec = output;
|
||
|
return output;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* La meilleure fête est soit sans moi (c'est l'union des meilleures fêtes de mes subalternes).
|
||
|
* soit c'est la meilleure fête avec moi.
|
||
|
*
|
||
|
* @return la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique (peut-être avec elle).
|
||
|
*
|
||
|
*/
|
||
|
public int bestParty(){
|
||
|
if (this.avec != null && this.sans != null) {
|
||
|
if (this.avec > sans) {
|
||
|
return this.avec;
|
||
|
} else {
|
||
|
return this.sans;
|
||
|
}
|
||
|
}
|
||
|
this.avec = this.bestPartyWithMe();
|
||
|
this.sans = this.bestPartyWithoutMe();
|
||
|
if (this.avec > this.sans) {
|
||
|
return this.avec;
|
||
|
} else {
|
||
|
return this.sans;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|