DEV/DEV3.2/Florent/TD5/stub/exo4/Chef.java
2023-11-29 15:05:29 +01:00

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;
}
}
}