Files
2025-12-10 11:14:45 +01:00

73 lines
1.7 KiB
Java

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Objects;
/** feuille du motif composite */
public class Chef extends Person {
private List<Person> subalternes = new ArrayList<Person>();
public boolean addSubalterne(Person p){
if (p == this) {
return false;
}
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(){
int somme=0;
for (Person p : subalternes){
somme+=p.bestParty();
}
return somme;
}
/**
* 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(){
// fête sans moi
int sansMoi = bestPartyWithoutMe();
// fête avec moi
int avecMoi = getFunFactor(); //c'est moi
for (Person p : subalternes) {
avecMoi += p.bestPartyWithoutMe();
}
return Math.min(avecMoi, sansMoi);
}
}