Td n°1 design pattern - design patterns - télécharger pdf

Design Pattern Singleton

Rappel

Intention

• Garantir qu'une classe n'a qu'une seule instance et fournir un point d'accès global à cette instance.

Indications d'utilisation

• Il doit y avoir exactement une instance d'une classe ; • cette instance est accessible globalement.

Exemple d'application

• Fenêtre principale d'une interface homme-machine (IHM) • Accès à un fichier de configuration • Accès à une base de données

Pattern

• Constructeur privé • Instance en tant qu'attribut statique de la classe • Méthode statique d'accès à l'instance

Implémentation en Java

Voici une solution inspirée du pattern Singleton :

public class Singleton {
    private static Singleton instance = null;

    private Singleton() {}

    public final synchronized static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

Design Pattern Composite

Rappel

Intention

• Représenter une hiérarchie d'objets en permettant à un objet client de traiter de manière unique les objets élémentaires et les combinaisons de ceux-ci.

Indications d'utilisation

• Représentation de structures récursives ; • traitement uniforme de tous les objets du composite, qu'ils soient terminaux ou non.

Exercice 1 : Système de gestion de fichiers

Les fichiers, raccourcis et répertoires sont contenus dans des répertoires et possèdent un nom. Un raccourci peut concerner un fichier ou un répertoire. Au sein d'un répertoire donné, un nom ne peut identifier qu'un seul élément (fichier, sous-répertoire ou raccourci).

Exercice 2 : Listes d'entiers

Proposez une implémentation récursive des fonctions suivantes :

  • append : ListeDEntier × ListeDEntier → ListeDEntier : concatène deux listes en une seule.
  • putlast : ListeDEntier × int → ListeDEntier : ajoute un entier à la fin de la liste.
  • reverse : ListeDEntier → ListeDEntier : produit une nouvelle liste inversée.

Exercice 3 : Polynômes à une variable réelle

Question 1 : Définition des classes

• Classe de variable • Classe de constante (float) • Classe de monôme • Classe des polynômes

Opérations à implémenter :

  • getZero : une référence sur le polynôme null créé suivant le principe du singleton.
  • sameVariable : teste si le polynôme a la même variable que le monôme argument.
  • degree : calcule le degré du polynôme.
  • compute : calcule la valeur du polynôme pour une valeur donnée de la variable.
  • derivation : Polynôme × float → float : approximation raisonnable de la dérivée en un point.

Question 2 : Utilisation du patron Composite

Un monôme seul peut être considéré comme le polynôme réduit à ce monôme, et une constante comme un polynôme réduit à un monôme de degré 0. Les monômes d'un polynôme à plusieurs termes sont mémorisés en ordre strictement décroissant des puissances (forme normale).

Question 3 : Implémentation récursive

Implémentez récursivement les méthodes : sameVariable, compute et derivation.

FAQ

Quelle est la différence entre Singleton et Composite ?

Singleton garantit une seule instance d'une classe avec un accès global, tandis que Composite permet de traiter uniformément des objets individuels et des groupes d'objets.

Pourquoi utiliser le patron Singleton pour le polynôme null ?

Le polynôme null doit être unique pour éviter les incohérences dans les calculs et les comparaisons, d'où l'utilisation du pattern Singleton.

Comment garantir l'ordre décroissant des monômes dans un polynôme ?

En triant les monômes lors de leur insertion ou en les ajoutant directement dans l'ordre décroissant lors de la construction du polynôme.

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne