S2T
- TDs première période
- TDs deuxième période :
Corrections
Corrections
This is an old revision of the document!
Voici un diagramme UML en conception.
Des codes vous sont donnés pour vous aider à comprendre et à ne pas perdre de temps. L'objectif n'est pas de vous apprendre à écrire des boucles ou des algorithmes, mais davantage de bien architecturer vos applications.
public class Professeur { private String nom; private String titre; public Professeur(String nom, String titre) { this.nom = nom; this.titre = titre; } //Pour que l'affichage d'un Professeur soit lisible. Cette méthode est appelée par défaut. public String toString() { return "Professeur [nom=" + nom + ", titre=" + titre + "]"; } }
public class Cours { private String intitule; private Professeur responsable; public Professeur getResponsable() { return responsable; } public void setResponsable(Professeur responsable) { this.responsable = responsable; } //Constructeur public Cours(String intitule, Professeur responsable) { this.intitule = intitule; this.responsable = responsable; } //Pour que l'affichage d'un cours soit "lisible" public String toString() { return "Cours [intitule=" + intitule + ", responsable=" + responsable +"]"; }
public class TestCours { public static void main(String[] args) { System.out.println("===================== Etape 1 ================================="); Professeur prof = new Professeur("Tournesol", "academicien"); System.out.println("Professeur [nom=Tournesol, titre=academicien] = \n" + prof); Cours cBD = new Cours("BD", prof); System.out.println("Cours [intitule=BD, responsable=Professeur [nom=Tournesol, titre=academicien]] = \n" + cBD); System.out.println("=> Un même prof sur deux cours"); Cours cAero = new Cours("aero", prof); System.out.println("Cours [intitule=aero, responsable=Professeur [nom=Tournesol, titre=academicien]] = \n" + cAero); }
public class Cours { private String intitule; private Professeur responsable; public Professeur getResponsable() { return responsable; } public void setResponsable(Professeur p) { this.responsable = p; } public boolean aUnResponsable(){ return (responsable != null); } //Constructeur public Cours(String intitule, Professeur responsable) { //this.intitule = intitule; this(intitule); // Les codes précédents restent corrects mais on préfère ici une cascade. Uniquement pour les étudiants plus avancés. this.responsable = responsable; } /*Constructeur sans le professeur responsable * puisque à présent il est possible de créer un cours sans responsable. */ public Cours(String intitule) { this.intitule = intitule; } //Pour que l'affichage d'un Cours soit lisible. Cette méthode est appelée par défaut. public String toString() { return "Cours [intitule=" + intitule + ", responsable=" + responsable +"]"; }
A Placer dans le main. Vous pouvez commenter l'étape précédente.
/* Etape 2 */ Professeur amina = new Professeur("AMINA", "missBahut"); Cours cProfs = new Cours("Francais"); System.out.println("Cours [intitule=Francais, responsable=null] = " + cProfs); System.out.println("A un responsable (false) : " + cProfs.aUnResponsable()); cProfs.setResponsable(amina); System.out.println("A un responsable (true) : " + cProfs.aUnResponsable()); System.out.println("Cours [intitule=Francais, responsable=Professeur [nom=AMINA, titre=missBahut]] =\n" + cProfs);
Dans la classe Cours
Collection<Vacataire> vacataires = new ArrayList<Vacataire>(); public void addVacataire(Vacataire v) { vacataires.add(v); } /** * @param v : Vacataire à retirer de la liste * @return boolean * Retire le vacataire v de la liste (exactement le même objet) si la collection contient cet élément. * Renvoie vrai si la collection contient l'element et La liste des vacataires est modifiée * sinon elle renvoie faux. */ public boolean removeVacataire(Vacataire v) { return (vacataires.remove(v)); } private String vacatairesToString() { String vacatairesString = " "; Iterator<Vacataire> it = vacataires.iterator(); while (it.hasNext()) { vacatairesString += it.next().toString() + ";"; } return "{ " + vacatairesString.substring(0, vacatairesString.length()-1)+ "}"; } public String toString() { return "Cours [intitule=" + intitule + ", responsable=" + responsable + ", vacataires=" + vacatairesToString() + "]"; }
public class Vacataire { private String nom; public Vacataire(String nom) { this.nom = nom; } @Override public String toString() { return "Vacataire [nom=" + nom + "]"; } }
/* Etape 3 */ Cours cBD = new Cours("BD"); System.out.println("Cours [intitule=BD, responsable=null, vacataires={ } = \n" + cBD); Vacataire dolores = new Vacataire("Dolorès"); Vacataire eric = new Vacataire("eric"); System.out.println("=> Pas de retrait possible (false) = " + cBD.removeVacataire(dolores)); System.out.println("Et le cours n'est pas modifié = \n" + cBD); cBD.addVacataire(dolores); System.out.println("=> Ajout pris en compte "); System.out.println("Cours [intitule=BD, responsable=null, vacataires={ Vacataire [nom=Dolorès]}]\n" + cBD); System.out.println("=> Pas de retrait possible de eric(false) = " + cBD.removeVacataire(eric)); System.out.println("=> Retrait pris en compte (true) = "+ cBD.removeVacataire(dolores)); System.out.println("Cours [intitule=BD, responsable=null, vacataires={ }]\n" + cBD); System.out.println("=> Ajouts pris en compte = "); cBD.addVacataire(dolores); cBD.addVacataire(eric); System.out.println("Cours [intitule=BD, responsable=null, vacataires={ Vacataire [nom=Dolorès];Vacataire [nom=eric]}] \n" + cBD); System.out.println("=> Retrait eric pris en compte (true)= "+ cBD.removeVacataire(eric)); System.out.println("Cours [intitule=BD, responsable=null, vacataires={ Vacataire [nom=Dolorès]}]\n" + cBD); cBD.addVacataire(eric); System.out.println("=> Retrait dolores pris en compte = "+ cBD.removeVacataire(dolores)); System.out.println("Cours [intitule=BD, responsable=null, vacataires={ Vacataire [nom=eric]}]= \n" + cBD);
Cours [intitule=BD, responsable=null, vacataires={ } = Cours [intitule=BD, responsable=null, vacataires={ }] => Pas de retrait possible (false) = false Et le cours n'est pas modifié = Cours [intitule=BD, responsable=null, vacataires={ }] => Ajout pris en compte Cours [intitule=BD, responsable=null, vacataires={ Vacataire [nom=Dolorès]}] Cours [intitule=BD, responsable=null, vacataires={ Vacataire [nom=Dolorès]}] => Pas de retrait possible de eric(false) = false => Retrait pris en compte (true) = true Cours [intitule=BD, responsable=null, vacataires={ }] Cours [intitule=BD, responsable=null, vacataires={ }] => Ajouts pris en compte = Cours [intitule=BD, responsable=null, vacataires={ Vacataire [nom=Dolorès];Vacataire [nom=eric]}] Cours [intitule=BD, responsable=null, vacataires={ Vacataire [nom=Dolorès];Vacataire [nom=eric]}] => Retrait eric pris en compte (true)= true Cours [intitule=BD, responsable=null, vacataires={ Vacataire [nom=Dolorès]}] Cours [intitule=BD, responsable=null, vacataires={ Vacataire [nom=Dolorès]}] => Retrait dolores pris en compte = true Cours [intitule=BD, responsable=null, vacataires={ Vacataire [nom=eric]}]= Cours [intitule=BD, responsable=null, vacataires={ Vacataire [nom=eric]}]