Outils pour utilisateurs

Outils du site


departement_info:personnels:pb:pa3

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
departement_info:personnels:pb:pa3 [2025/06/05 16:47] – [Exercice pour la prochaine séance] Brutus Philippedepartement_info:personnels:pb:pa3 [2025/06/07 13:18] (Version actuelle) – [Récapitulons] Brutus Philippe
Ligne 476: Ligne 476:
 {{:departement_info:personnels:pb:pa3:commande.png?380x0&nolink}} {{:departement_info:personnels:pb:pa3:commande.png?380x0&nolink}}
  
 +==== Exercice ====
 +
 +Compléter {{:departement_info:personnels:pb:pa3:lst24.zip|cette version du projet}} pour que l'item "Nouvelle" du menu "Alarme" et le bouton "Nouvelle alarme" réalisent la même action en utilisant cette solution.
 +
 +Ce travail est à rendre par courrier électronique sous l'intitulé "TP08 NFP121" à l'adresse "philippe.brutus (à) caensup.fr" avec en pièce jointe l'archive contenant les seuls fichiers modifiés ou ajoutés (dans leurs paquets respectifs).
 +
 +{{:departement_info:personnels:pb:pa3:lst25.zip|Cette version du projet}} implante une commande pour les deux invocateurs.
 +
 +==== Memento ====
 +
 +Il s'agit de conserver l'état d'un objet pour le restaurer par la suite si nécessaire... C'est un gardien qui se charge de conserver l'état à restaurer. Si plusieurs modifications sont effectuées, le gardien peut conserver les différents états pour en rétablir un parmi ceux qu'il conserve.
 +
 +Dans les interfaces graphiques, on trouve cette solution dans le concept de presse-papiers.
 +
 +{{:departement_info:personnels:pb:pa3:memento.png?550x0&nolink}}
 +
 +==== Exercice ====
 +
 +Compléter {{:departement_info:personnels:pb:pa3:lst26.zip|cette version du projet}} pour que l'item "Annuler" du menu "Edition" soit opérationnel en permettant de revenir en arrière plusieurs fois si possible.
 +
 +Ce travail est à rendre par courrier électronique sous l'intitulé "TP09 NFP121" à l'adresse "philippe.brutus (à) caensup.fr" avec en pièce jointe l'archive contenant les seuls fichiers modifiés ou ajoutés (dans leurs paquets respectifs).
 +
 +{{:departement_info:personnels:pb:pa3:lst27.zip|Cette version du projet}} implante un état dans la classe Alarme et définit une variable d'instance de type Gardien dans la classe Controleur pour stocker des Mémentos à l'ajout, la modification ou la suppression d'une alarme, ce qui permet de définir une méthode "annule" pour restaurer la situation précédente de la liste d'alarmes.
 +
 +==== Récapitulons ====
 +
 +Les arrangements caractéristiques vus précédemment sont reconnus comme bonnes pratiques en réponse à des problèmes récurrents. Ils décrivent les grandes lignes d'une solution. On peut les modifier ou les adapter en fonction des besoins. On les appelle {{:departement_info:personnels:pb:pa3:patrons.pdf|patrons de conception}}.
 +
 +{{:departement_info:personnels:pb:pa3:carte_des_patrons.pdf|Carte des patrons de conception}}.
 +
 +==== Contrôle de connaissances ====
 +
 +L'Unité d'Enseignement est évaluée par un examen écrit noté sur 20 auquel s'ajoute un bonus pouvant aller jusqu'à 3 points pour les exercices rendus.
 +
 +{{:departement_info:personnels:pb:pa3:sujet1_2021.pdf|le sujet de l'examen de première session de 2021 à Caen}}
 +
 + public class TacheElementaire extends Tâche{
 +   private int coût;
 +   public TacheElementaire(String nom, int coût) throws RuntimeException{
 +     super(nom);
 +     if (coût < 0)
 +       throw new RuntimeException("Tentative de création d'une tâche avec un coût (" + coût + ") négatif !");
 +     this.coût = coût;
 +   }
 +   public int coût() {
 +     return coût;
 +   }
 + }
 +
 + import java.util.List;
 + import java.util.LinkedList;
 +
 + public class TâcheComplexe
 + extends Tâche
 + //implements TâcheI
 + {
 +     private List<Tâche> contenu;
 +     public TâcheComplexe(String nom) {
 +       super(nom);
 +       contenu = new LinkedList<Tâche>();
 +     }
 +     public void ajoute(Tâche t) {
 +       contenu.add(t);
 +     }
 +     public int coût() {
 +       int total = 0;
 +       for(Tâche t : contenu) {
 +         total += t.coût();
 +       }
 +       return total;
 +     }
 +     public int taille() {
 +       return contenu.size();
 +     }
 +     public void retire(int index) {
 +       contenu.remove(index);
 +     }
 + }
 +
 + //===============================================
 +
 + interface Image {
 +     public void displayImage();
 + }
 + class RealImage implements Image {
 + //...
 + }
 +
 + class ProxyImage implements Image {
 +     private RealImage image;
 +   private String nomFichier;
 +     public ProxyImage(String filename) {
 +         image = null;
 +     nomFichier = filename;
 +     }
 +     public void displayImage() {
 +         if (image == null)
 +       image = new RealImage(nomFichier);
 +     image.displayImage();
 +     }
 + }
 +
 + public class LesImages {
 +   private List<Image>contenu;
 +   public LesImages() {
 +     contenu = new LinkedList<ProxyImage>();
 +   }
 +   public void ajoute(String filename) {
 +     contenu.add(new ProxyImage(filename);
 +   }
 +   public void displayImage(int index) {
 +     contenu.get(index).displayImage();
 +   }
 +   public int taille() {
 +     return contenu.size();
 +   }
 + }
 +
 + LesImages images = new LesImages();
 + images.ajoute("fruit");
 + images.displayImage(0);
 +
  
  
departement_info/personnels/pb/pa3.1749142046.txt.gz · Dernière modification : 2025/06/05 16:47 de Brutus Philippe

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki