import java.util.Map; import java.util.HashMap; import java.util.List; import java.util.ArrayList; import java.util.Collection; public class Agenda { private Map>> monAgenda; private String nom; private String prenom; Agenda(String nom, String prenom){ monAgenda = new HashMap>>(); this.nom = nom; this.prenom = prenom; } public void creerEvenementPonctuel(int annee,int jour,float heureDebut,float heureFin, String lieu, String objet){ if (!monAgenda.containsKey(annee)) monAgenda.put(annee, new HashMap>()); Evenement evt = new EvenementPonctuel(jour,heureDebut,heureFin,lieu,objet); evt.enregistreToi(monAgenda.get(annee)); } public void creerEvenementChronique(int annee,int jour,float heureDebut,float heureFin, String lieu, String objet, int periode, int nbreFois){ if (!monAgenda.containsKey(annee)) monAgenda.put(annee, new HashMap>()); Evenement evt = new EvenementPonctuel(jour,heureDebut,heureFin,lieu, objet,periode,nbreFois); evt.enregistreToi(monAgenda.get(annee)); } public void afficheEvenementsDuJour(int annee, int jour){ if (monAgenda.containsKey(annee)) for(Evenement evt : monAgenda.get(annee).get(jour)) System.out.println(evt); } public static void main(String[] args){ } } interface IEvenement { // pour s'inscrire dans un agenda public void enregistreToi(Map> agendaUnAn); // pour supprimer l'événement de l'agenda public void supprimeToi(int jour); } abstract class Evenement implements IEvenement{ private int jour; private float heureDebut, heureFin; private String lieu; private Strig objet; Evenement(int jour,float heureDebut,float heureFin,String lieu, String objet){ this.jour = jour; this.lieu = lieu; this.heureDebut = heureDebut; this.heureFin = heureFin; this.objet = objet; } public abstract void enregistreToi(Map> jourAgenda); public abstract void supprimeToi(int jour); public String toString(){ return "Horaire : "+heureDebut+" - "+heureFin +" ; Lieu : "+lieu+" ; Objet : "+objet; } public getJour(){ return jour; } } class EvenementPonctuel extends Evenement { private Collection lesEvtsDuJour; EvenementPonctuel(int jour,float heureDebut,float heureFin,String lieu, String objet){ super(jour,heureDebut,heureFin,lieu,objet); } public void enregistreToi(Map> agendaUnAn){ if (!agendaUnAn.containsKey(getJour())) agendaUnAn.put(getJour(),new ArrayList()); Collection tmp = agendaUnAn.get(getJour()); if (lesEvtsDuJour != null && lesEvtsDuJour != tmp) lesEvtsDuJour.remove(this); tmp.add(this); lesEvtsDuJour = tmp; } public void supprimeToi(int jour){ lesEvtsDuJour.remove(this); lesEvtsDuJour = null; } } class EvenementChronique extends Evenement { private final static int ANNEE = 365; private Map> agendaUnAn; private int periode; private int nbreFois; EvenementPonctuel(int jour,float heureDebut,float heureFin,String lieu, String objet, int periode, int nbreFois){ super(jour,heureDebut,heureFin,lieu,objet); this.periode = periode; this.nbreFois = nbreFois; } public void enregistreToi(Map> agendaUnAn){ for(int i = 0; i()); Collection tmp = jourAgenda.get(getJour()); tmp.add(this); } public void supprimeToi(int jour){ if (agendaUnAn.containsKey(jour)) agendaUnAn.get(jour).remove(this); } public String toString(){ StringBuffer sb = new StringBuffer(super.toString()); sb.append("\n aura lieu aux dates : "); for(int i = 0; i