Examen Final Flashcards

1
Q

Intention du patron Composite

A

Traiter les objets individuels et les objets multiples, composés récursivement, de façon uniforme.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Applicabilité du patron composite

A
  • Objets doivent être composés récursivement
  • Objets dans la structure peuvent être traités uniformément
  • Clients peuvent ignorer les différences entre les objets individuels et composés
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Conséquences du patron composite

A

+ Uniformité : traite les composants uniformément sans égard à leur complexité
+ Extensibilité : Les nouvelles sous-classes de Component fonctionnent
- Coût : Peut nécessiter un grand nombre d’objet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Intention du Patron Proxy

A

Fournir un remplaçant ou une doublure pour un autre objet afin de contrôler l’accès à ce dernier.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Applicabilité du Patron Proxy

A

Ce patron est applicable dès que le besoin d’une référence plus versatile ou plus sophistiquée qu’un simple pointeur se fait sentir.
L’interface du Proxy doit correspondre à l’interface du sujet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Intention du Patron Decorator

A

Attacher dynamiquement des responsabilités additionnelles à un objet. Le patron Décorateur fournit une alternative flexible à la dérivation pour étendre la fonctionnalité d’une classe.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Applicabilité du Patron Decorator

A

Ce patron est utilisé pour ajouter des responsabilités à des objets individuels de façon dynamique et transparente, sans affecter d’autres objets.
Permet d’ajouter des responsabilités qui peuvent ensuite être retirées.
On utilise ce patron lorsqu’il n’est pas pratique de sous-classer. Parfois, un grand nombre d’extensions indépendantes sont possibles, et produiraient une explosion dans le nombre de sous-classes à supporter pour obtenir toutes les inaccessible, ce qui empêche de sous-classer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Conséquences du Patron Decorator

A

+ Flexibilité : Plus flexible que l’héritage statique. Permet d’ajouter et de retirer des responsabilités en cours d’exécution en attachant ou détachant des décorateurs. Permet de choisir les responsabilités «à la carte».
+ Évite les classes racines complexes : Plutôt que d’essayer de supporter toutes les fonctionnalités dans la classe de base, les décorateurs permettent de définir des responsabilités cibl.es qui peuvent être ajoutées au besoin.
- Identité des objets : L’ajouter d’un décorateur à un objet modifie l’identité de l’objet. L’objet original et l’objet décoré sont deux objets différents, ce qui rend l’accès à l’objet original moins direct.
- Coût : Peut nécessiter un grand nombre d’objets.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Intention du Patron Visitor

A

Représenter une opération qui doit être appliquée sur les éléments d’une structure d’objets. Un Visitor permet de définir une nouvelle opération sans modification aux classes des objets sur lesquels l’opération va agir.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Applicabilité du Patron Visitor

A

Lorsqu’une structure d’objets contient plusieurs classes avec des interfaces différentes.
Lorsque plusieurs opérations distinctes et sans liens entre elles doivent agir sur des objets conservés dans une structure.
Lorsque les classes définissant la structure des objets changent rarement, mais que l’on veut fréquemment définir de nouvelles opérations sur cette structure.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Conséquences du Patron Visitor

A

+ Flexibilité : Les Visitors et la structure d’objets sont indépendants
+ Fonctionnalité localisée : Tout le code associé à une fonctionnalité se retrouve à un seul endroit bien identifié
- Coût de communication : Coût supplémentaire entre les Visitors et la structure

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Intention du Patron Template Method

A

Définir le squelette d’un algorithme dans une opération, et laisser les sous-classes définir certaines étapes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Applicabilité du Patron Template Method

A

Pour implanter les aspects invariants d’un algorithme une seule fois et laisser les sous-classes définir les portions variables
Pour situer les comportements communs dans une classe afin d’augmenter la réutilisation de code.
Pour contrôler les extensions des sous-classes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Conséquences du Patron Template Method

A

+ Inversion de contrôle : Mène à une inversion de contrôle (« Principe Hollywood : ne nous appelez pas, nous vous appellerons »)
+ Favorise la réutilisation du code
+ Surcharge : Permet d’imposer des règles de surcharge

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Intention du Patron Singleton

A

S’assurer qu’il ne soit possible de créer qu’une seule instance d’une classe, et fournir un point d’accès global à cette instance.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Applicabilité du Patron Singleton

A

Lorsqu’il doit y avoir exactement une seule instance d’une classe. Et que cette instance soit accessible par un mécanisme bien identifié.
Lorsque la seule instance d’une classe doit être généralisable en sous-classant et que les clients doivent être en mesure d’utiliser l’instance généralisée sans modification à leur code.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Conséquences du Patron Singleton

A

+ Réduit la pollution : Réduit la pollution du namespace global
+ Permet de contrôler l’instanciation d’une classe : On peut limiter le nombre d’instance (1, 2, n)
+ Permet la généralisation par sous-classification : Comparativement à une classe équivalente dont toutes les fonctions seraient statiques
- Moins efficace : Implantation peut être légèrement moins efficaces qu’une variable globale.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Intention du Patron Mediator

A

Définir un objet qui encapsule comment un ensemble d’objets interagissent afin de promouvoir un couplage faible et de laisser varier l’interaction entre les objets de façon indépendante.

19
Q

Applicabilité du Patron Mediator

A

Il existe un comportement de coopération entre des objets, qui ne peut être assigné à un objet individuel.
Un ensemble d’objets communiquent entre eux de façon bien définie mais complexe.
L’ordre des opérations peut changer à mesure que le système évolue.

20
Q

Conséquences du Patron Mediator

A

+ Encapsule les communications
+ Simplifie le protocole entre les objets
+ Évite de forcer un ou plusieurs collègues à assumer les responsabilités de médiation
- Le Mediator peut devenir complexe et monolithique

21
Q

Intention du Patron Observer

A

Définit une relation un à plusieurs entre des objets de façon à ce que lorsqu’un objet change d’état, que tous ses dépendants soient avertis et mis à jour automatiquement.

22
Q

Applicabilité du Patron Observer

A

Lorsqu’une abstraction a deux aspects, l’une dépendante de l’autre.
Lorsque le fait de changer un objet implique d’en changer d’autres, sans que l’on sache combien d’autres objets doivent être changés.
Lorsqu’un objet devrait en avertir d’autres sans faire de supposition sur la nature de ces autres objets.

23
Q

Conséquences du Patron Observer

A

+ Modularité : Le sujet et les observateurs peuvent varier de façon indépendante.
+ Extensibilité : On peut définir et ajouter autant d’observateurs que nécessaire
+ Adaptabilité : Différents observateur fournissent différentes vues du Subject.
- Mises à jour inattendues : Les Observers ne se connaissent pas
- Coût de la mise à jour : Certains Observers peuvent avoir besoin d’indices sur ce qui a changé

24
Q

Intention du Patron Abstract Factory

A

Procure une interface permettant de créer une famille d’objets connexes ou dépendants sans spécifier leurs classes concrètes.

25
Q

Applicabilité du Patron Abstract Factory

A

Un système devrait être indépendant de la façon dont ses produits sont créés, composés et représentés.
Un système devrait être configuré avec une des multiples familles de produits.
Une famille d’objets de produits connexes est conçue pour que ceux-ci soient utilisés ensemble. On a besoin de renforcer cette contrainte.
On veut fournir une librairie de classes de produits et on veut seulement révéler leurs interfaces et non leur implémentation.

26
Q

Conséquences du Patron Abstract Factory

A

+ Isole les classes concrètes : Les clients manipulent les instances à partir des interfaces abstraites. Les noms des classes de produits sont isolés dans l’implantation de l’usine concrète, ils n’apparaissent pas dans le code du client.
+ Facilite les changements de familles de produits : Les classes d’une seul usine concrète à la fois sont utilisées. On peut changer facilement d’usine concrète.
+ Encourage la consistance entre les produits : Regroupe les classes qui doivent fonctionner ensemble.
- Le support de nouveaux types de produits est difficile : L’interface de l’usine abstraite détermine l’ensemble de produits pouvant être créés. On doit modifier l’interface et toutes ses sous-classes pour supporter de nouveaux produits.

27
Q

Intention du Patron Façade

A

Fournir une interface unifiée à un groupe d’interfaces d’un sous-système.

28
Q

Applicabilité du Patron Façade

A

Lorsqu’on veut fournir une interface simple à un sous-système complexe (en particulier, l’utilisation des patrons de conception résulte fréquemment en grand nombre de petites classes rendant le sous-système plus réutilisable, plus configurable, mais parfois plus difficile à utiliser.
On veut éviter un trop fort couplage entre les clients et les classes implantant une abstraction
On veut implanter une architecture du système en plusieurs couches. La classe Façade fournit un point d’entrée à chaque sous-système.

29
Q

Conséquences du Patron Façade

A

+ Vue simplifiée : Fournit une vue simplifie de sous-système suffisant pour la plupart des clients
+ Découplage du sous-système : La classe façade découple le sous-système de ses clients et des autres sous-systèmes, ce qui favorise la modularité et la portabilité
+ Communications simples : Lorsque les sous-systèmes communiquent entre eux uniquement par des façades, les communications sont simplifiées
+ Possibilité de changement : Il reste possible pour les clients qui doivent configurer le sous-système d’aller au-delà de la façade si nécessaire

30
Q

Intention du Patron Chain Of Responsibility

A

Éviter de coupler l’émetteur et le récepteur d’une requête en donnant la possibilité à plus d’un objet de traiter la requête. Les objets récepteurs sont chainés et la requête traverse la chaîne jusqu’à ce qu’elle soit traitée.

31
Q

Applicabilité du Patron Chain Of Responsibility

A

Plus d’un objet peuvent traiter une requête et que l’objet qui traitera la requête n’est pas connu à priori.
On veut envoyer une requête à plus d’un objet sans spécifier explicitement lequel la traitera.
L’ensemble d’objets qui peut traiter la requête doit être spécifié dynamiquement.

32
Q

Conséquences du Patron Chain Of Responsibility

A

+ Réduit le couplage : Ce patron évite à l’émetteur de devoir connaître l’objet récepteur. L’émetteur ne connait que le pont d’entrée de la chaîne.
+ Augment la flexibilité : Flexibilité augmentée avec laquelle les responsabilités peuvent être assignés aux objets. On peut modifier la chaîne en cours d’exécution et changer dynamiquement la façon dont les requêtes seront traitées.
- Traitement de la requête n’est pas garantie : La réception et le traitement de la requête n’est pas garantie. Comme il n’y a pas de récipiendaire explicite, rien ne garantit à l’émetteur que sa requête sera bel et bien traitée.

33
Q

Intention du Patron Iterator

A

Fournir une méthode d’accès séquentielle aux éléments d’un objet agrégat (liste, vecteur, …) sans exposer sa structure interne

34
Q

Applicabilité du Patron Iterator

A

Pour accéder au contenu d’un objet agrégat sans révéler sa structure interne
Pour supporter les traversées multiples et simultanées d’un objet agrégat.
Pour fournir une interface uniforme de traversée pour différents types de structures agrégat.

35
Q

Conséquences du Patron Iterator

A

+ Variabilité : L’itérateur permet de supporter plusieurs variations dans le mode de traversée de l’agrégat
+ Simplification : En définissant un itérateur, on peut simplifier l’interface de l’objet agrégat.
+ Traversées multiples : On peut faire plusieurs traversées simultanées sur un même objet agrégat.
+ Réutilisation : On peut écrire des algorithmes génériques valables pour tous les types d’agrégats en passant par les itérateurs (STL).

36
Q

Intention du Patron Strategy

A

Encapsuler un algorithme dans une classe de façon à le rendre interchangeable. Le patron Strategy permet de faire varier l’algorithme indépendamment du client qui l’utilise.

37
Q

Applicabilité du Patron Strategy

A

Plusieurs classes ne diffèrent que par leur comportement. On peut alors configurer une classe avec plusieurs comportements indépendants sans multiplier le nombre de sous-classes.
Plusieurs variantes d’un algorithme sont nécessaires.
Un algorithme requiert et stocke plusieurs donn.es. La stratégie permet d’encapsuler ces données.
Une classe a plusieurs comportements qui impliquent de multiples énoncés conditionnels.

38
Q

Conséquences du Patron Strategy

A

+ Support de familles d’algorithmes : Support de familles d’algorithmes reliés
+ Alternative au sous-classement : Permet d’obtenir des combinaisons d’algorithmes en limitant le sous-classement.
+ Élimination d’énoncés conditionnels.
+ Choix d’implantions libre.
- Clients exposés à l’implantation : Les clients doivent être conscient de l’existence des stratégies et comprendre les nuances entre chacune afin de choisir la bonne. Les clients sont donc exposés à l’implantation
- Coût de communication supplémentaire : Coût de communication supplémentaire pour l’appel à la fonction virtuelle de la stratégie.
- Augmente le nombre d’objets : Augmente le nombre d’objets dans le système. Certaines stratégies peuvent être implantées dans des objets partagés pour réduire ce problème.

39
Q

Intention du Patron State

A

Permettre à un objet de changer son comportement en fonction de son état. L’objet se comportera comme s’il y avait changé la classe.

40
Q

Applicabilité du Patron State

A

Le comportement d’un objet dépend de son état et cet état varie en cours d’exécution
Les opérations contiennent de multiples énoncés conditionnels de type switch-case qui permettent d’avoir un comportement différent selon l’état de l’objet. Le patron State permettra d’éliminer ce genre d’énoncé.

41
Q

Conséquences du Patron State

A

+ Localisation des comportements propres aux états : Toutes les données et les comportements propres aux états se situent dans les sous-classes. Il est alors facile d’ajouter de nouveaux états.
+ Rend les transitions entre les états explicites.
+ Permet d’éviter les états inconsistances : Le changement d’état est atomique.
+ Élimine les grands énoncés conditionnels.
+ Largement préférable à l’utilisation de multiples énoncés conditionnels.
- Peut augmenter le nombre de classes et être moins compacte.

42
Q

Intention du Patron Command

A

Encapsuler une requête dans un objet de façon à permettre de supporter facilement plusieurs types de requêtes, de définir des queues de requêtes et de permettre des opérations « annuler ».

43
Q

Applicabilité du Patron Command

A

Paramétrer des objets avec une action à effectuer. Command est une alternative orientée objet aux fonctions de callback.
Spécifier une queue de requêtes qui seront exécutées ultérieurement.
Support naturel pour les undo/redo.

44
Q

Conséquences du Patron Command

A

+ Découplage de l’objet : Découplage de l’objet qui invoque la requête de celui qui sait comment la satisfaire.
+ Les commandes sont encapsulées : Elles peuvent être manipulées comme tout objet. L’utilisation d’objets amène également plus de flexibilité.
+ Facilité de création : On peut facilement créer de nouvelles commandes.
+ Création de commandes composites : Les commandes peuvent être assemblées en commandes composites si nécessaires. Le patron Command peut, en effet, être combiné au patron composite pour représenter des commandes qui sont un ensemble d’autres commandes.