Sommaire: Cours implémentation d’UML avec Java et Design patterns
• Les designs pattern
• Généralisation avec le pattern Delegation
• Le diagramme d’états-transitions avec le pattern State:
– Principes généraux
– Instanciation d’un objet à états
– Etat composite
Extrait du cours implémentation d’UML avec Java et Design patterns
Designs patterns
• Solutions communes à des problèmes de conception récurrents
• A l’échelle d’une ou peu de classes
• « Patron de solution » documenté
• Ex: « Gamma » patterns
(Design patterns Element of Reusable Object-Oriented Software -Erich Gamma – R. Helm – R. Johnson – J. Vlissides Addison-Wesley)
Exemple: le Singleton
• Diagramme de classes
Le Singleton (2)
• Diagramme de collaboration
Le singleton (3)
Lien avec le pattern « la classe Mailer joue le rôle de Singleton dans la collaboration paramétrée SingletonPattern »
Généralisation avec le pattern Delegation
Le pattern délégation
A délègue B
Délégation – Exemple
• Marie, une femme:
Implémentations Java
• Héritage: héritage Java (extends)
public class Personne {
private int age;
public Personne() {age=0;}
public int getAge() {return age;}
}
public class Femme extends Personne {
private int nbMaternites;
public Femme() {nbMaternites=0;}
public int getNbMaternites(return nbMaternites);
}
Utilisation de l’objet marie, instance de femme:
marie Femme = new Femme();
….
ageMarie = marie.getAge();
Implémentations Java (2)
• Délégation: attribut de type classe
public class Personne {
private int age;
public Personne() {age=0;}
public int getAge() {return age;}
}
public class Femme {
private int nbMaternites;
private Personne personne;
public Femme() {
nbMaternites=0;
personne = new Personne();
}
public int getNbMaternites(return nbMaternites);
public int getAge(){return personne.getAge();}
}
Utilisation de l’objet marie, instance de femme: idem héritage
Comparaison
• Héritage:
– Avantages: extensibilité, gestion automatique des liens
– Inconvénients: rigidité des objets (des liens)
• Délégation:
– Avantages: objets modifiables dynamiquement, implémentation de la généralisation dans un langage sans héritage
– Inconvénients: codage plus lourd (gestion manuelle des liens)
………..
Cours implémentation d’UML avec Java et Design patterns (150 KO) (Cours PDF)