r Évision les principes solid. q uestion quest-ce que le s de solid?
TRANSCRIPT
![Page 1: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/1.jpg)
RÉVISIONLes principes SOLID
![Page 2: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/2.jpg)
QUESTION
Qu’est-ce que le S de Solid?
![Page 3: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/3.jpg)
RESPONSABILITÉ UNIQUE (SRP: SINGLE RESPONSIBILITY PRINCIPLE)
Le principe de responsabilité unique, réduit à sa plus simple expression, est qu'une classe donnée ne doit avoir qu'une seule responsabilité, et, par conséquent, qu'elle ne doit avoir qu'une seule raison de changer.
![Page 4: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/4.jpg)
QUESTION
Qu’est-ce que le O de Solid?
![Page 5: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/5.jpg)
OUVERT/FERMÉ (OCP: OPEN/CLOSED PRINCIPLE)
Définition: "Les modules qui se conforment au principe ouvert/ferme ont deux attributs principaux.
1 - Ils sont "ouverts pour l'extension". Cela signifie que le comportement du module peut être étendu, que l'on peut faire se comporter ce module de façons nouvelles et différentes si les exigences de l'application sont modifiées, ou pour remplir les besoins d'une autre application.
2 - Ils sont "Fermés à la modification". Le code source d'un tel module ne peut pas être modifié. Personne n'est autorisé à y apporter des modifications.«
Bref, il ne faut pas briser la logique de l’héritage.
![Page 6: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/6.jpg)
QUESTION
Qu’est-ce que le L de Solid?
![Page 7: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/7.jpg)
LA SUBSTITUTION DE LISKOV
Définition: Les sous-types doivent être remplaçables par leur type de base.
Là, je vais en voir un ou deux (ou plus) dire: « Oui, mais à partir du moment où ma classe S hérite de ma classe T », je dois pouvoir caster S en T et là ça va marcher...
![Page 8: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/8.jpg)
QUESTION
Qu’est-ce que le I de Solid?
![Page 9: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/9.jpg)
SÉPARATION DES INTERFACES (ISP: INTERFACE SEGREGATION PRINCIPLE)
Définition: Les clients d'une entité logicielle ne doivent pas avoir à dépendre d'une interface qu'ils n'utilisent pas.
Ce principe apporte principalement une diminution du couplage entre les classes (les classes ne dépendant plus les unes des autres). L'autre avantage d'ISP est que les clients augmentent en robustesse.
![Page 10: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/10.jpg)
QUESTION
Qu’est-ce que le I de Solid?
![Page 11: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/11.jpg)
INVERSION DES DÉPENDANCES (DIP: DEPENDENCY INVERSION PRINCIPLE)
Définition: Les modules de haut niveau ne doivent pas
dépendre des modules de bas niveau. Les deux doivent dépendre d'abstractions. Les abstractions ne doivent pas dépendre des détails. Les détails doivent dépendre des abstractions.
![Page 12: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/12.jpg)
LECTURE OBLIGATOIRE
Pourquoi développer en utilisant les couches ?
Qu’est-ce les objets métier ? À quoi sert la couche d’accès aux
données Qu’est-ce que la couche métier ? Quel patron de conception(design
pattern) avez-vous vue dans le document?
![Page 13: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/13.jpg)
LES DESIGNS PATTERNArchitecture d’application – Hugo St-Louis
Hiver 2011
![Page 14: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/14.jpg)
OBJECTIFS DE LA PRÉSENTATION
Comprendre ce qu'est un pattern En connaître les principaux représentants Exemples d'utilisation Des ressources pour aller plus loin Apporter des idées conceptuelles
![Page 15: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/15.jpg)
DÉFINITION D’UN DESIGN PATTERN
Modèles de conception parfois aussi « Motifs de conception » ou «
Patrons de conception ». Solutions à des problèmes classiques.
(Règle de 3 utilisations) Indépendants du langage.
![Page 16: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/16.jpg)
ILS SONT PARTOUT...
Composition musicale (cadence, appogiatures, tonalité, rubato, ...)
Communication (intonations dans le discours, métaphores et exemples, ...)
Graphisme, ergonomie (positionnements, codes couleurs, ...)
... Tout ce qui représente une façon de procéder
pour arriver à un résultat
![Page 17: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/17.jpg)
APPARITION DES PATTERNS
C. Alexander « A Pattern Language: Towns, Buildings, Construction » [1977]
« Chaque modèle décrit un problème qui se manifeste constamment dans notre environnement, et donc décrit le cœur de la solution à ce problème, de telle façon que l'on puisse la réutiliser des millions de fois et ce jamais de la même manière » [AIS+ 77]
![Page 18: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/18.jpg)
L'OUVRAGE DE RÉFÉRENCE
GoF « Gang of Four » Design patterns. Elements of reusable ObjectOriented Software [1994] Erich Gamma, Richard Helm, Ralph Johnson John Vlissides
![Page 19: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/19.jpg)
POURQUOI LES ÉTUDIER ?
Catalogue de solutions. Bénéficier du savoir faire d'experts dans des
contextes éprouvés. (fiables, robustes & connus)
Facilite la conception.
![Page 20: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/20.jpg)
POURQUOI LES UTILISER ?
Ne pas réinventer la roue. Facilite la communication entre
développeurs. Pour résoudre un problème
![Page 21: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/21.jpg)
DIVISION DES PATTERNS
Les patterns sont divisés en 3 groupes: Création Structure Comportement
![Page 22: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/22.jpg)
LES 5 PATTERNS DE CRÉATION
Pattern de Création Factory method, AbstractFactory, Builder,
Prototype, Singleton Abstraction du processus de création. Encapsulation de la logique de création. On ne sait pas à l'avance ce qui sera créée
ou comment cela sera créé.
![Page 23: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/23.jpg)
LES 7 PATTERNS DE STRUCTURE
Les pattern de Structure Adapter, Bridge, Composite, Decorator,
Interface, Flyweight, Proxy Comment sont assemblés les objets. Découpler l'interface de l'implémentation.
![Page 24: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/24.jpg)
LES 11 PATTERNS COMPORTEMENTAUX
Les pattern de Comportement Interpretor, Template method, Chain of
responsability, Command, Iterator, Mediator, Memento, Observer, State, Strategy, Visitor
Mode de communication entre les objets
![Page 25: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/25.jpg)
QUELQUES EXEMPLES POUR COMMENCER
Singleton (Création) Factory method(Création) Adapter (Structure) Decorator (Structure) Visitor (Structure) Observer (Comportement) Iterator (Comportement) States (Comportement)
![Page 26: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/26.jpg)
[CRÉATION] SINGLETON
Problématique : S'assurer qu'il existe une seule instance d'un objet donné pour toute l'application.
Solution : Une méthode statique pour contrôler l'instanciation. Rendre ce processus d'instanciation l'unique solution possible pour la classe en question.
![Page 27: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/27.jpg)
[CRÉATION] SINGLETON, DIAGRAMME
![Page 28: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/28.jpg)
[CRÉATION] SINGLETON, PIÈGES & DIFFÉRENCES
N'est pas une classe statique Une instance à manipuler. Conserve un contexte Peut être passé en paramètre à une méthode
N'est pas une variable globale Eviter la singletonite
![Page 29: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/29.jpg)
[CRÉATION] SINGLETON, EXEMPLE
![Page 30: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/30.jpg)
[CRÉATION] SINGLETON, EXERCICE
Faites un programme qui permet de répartir la charge sur un serveur(LoadBalancing). Ce programme retourne une adresse de connexion au hasard à partir d’une liste. La classe qui contient(distribue) les adresses doit être un singleton car l’administrateur peut ajouter/supprimer des adresses en tout temps.
![Page 31: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/31.jpg)
[CRÉATION] FACTORY METHOD
Problématique : Obtenir facilement un objet prêt à l'emploi et qui correspond à nos besoins.
Solution : Une classe / Une méthode qui encapsule la logique de création des objets en question. Ce patron permet d'instancier des objets dont le type est dérivé d'un type abstrait. La classe exacte de l'objet n'est donc pas connue par l'appelant.
![Page 32: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/32.jpg)
[CRÉATION] FACTORY METHOD, DIAGRAMME
![Page 33: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/33.jpg)
[CRÉATION] FACTORY METHOD, EXEMPLE
![Page 34: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/34.jpg)
[COMPORTEMENT] ITERATOR
Problématique : Parcourir des collections d'objets diverses, éventuellement de différentes façons, sans risque pour le contenu.
Solution : Utiliser un objet qui dispose de la connaissance nécessaire à la navigation dans la collection avec une interface unique.
![Page 35: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/35.jpg)
[COMPORTEMENT] ITERATOR, DIAGRAMME
![Page 36: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/36.jpg)
[COMPORTEMENT] ITERATOR
![Page 37: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/37.jpg)
[COMPORTEMENT] STATE
Problématique : Permettre un comportement différence en fonction d’un contexte(valeur)
Solution : Gérer un état qui permet de rediriger le comportement vers la bonne classe.
![Page 38: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/38.jpg)
[COMPORTEMENT] STATE, DIAGRAMME
![Page 39: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/39.jpg)
[COMPORTEMENT] STATE
![Page 40: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/40.jpg)
EXERCICE : [COMPORTEMENT] STATE
Vous devez concevoir un programme qui utilise le pattern « state » qui permet à un compte bancaire d’avoir différent état(statut) soit les suivants: RedState
Limite du type de compte[-500 $, 0$[; Intérêt annuel : 0% Frais de service pour chaque retrait : 15$
SilverState Limite du type de compte[0$, 1000$[; Intérêt annuel : 0% Frais de service pour chaque retrait : 1$
GoldState Limite du type de compte[1000$, ∞$. Intérêt annuel : 5% Frais de service pour chaque retrait: 0$
![Page 41: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/41.jpg)
[COMPORTEMENT] OBSERVER
Problématique : Permettre à un objet de réagir aux comportement d'un autre sans pour autant les lier « en dur ».
Solution : Définir un objet comme « observable » et donc capable de notifier des changements à des observateurs, quels qu'ils soient.
![Page 42: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/42.jpg)
[COMPORTEMENT] OBSERVER
![Page 43: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/43.jpg)
[COMPORTEMENT] OBSERVER, EXEMPLE
![Page 44: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/44.jpg)
[COMPORTEMENT] OBSERVER, EXERCICE
Faite un programme qui permet de notifier les investisseurs boursiers à chaque fois qu’une côte de la bourse change.
![Page 45: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/45.jpg)
[STRUCTURE] ADAPTER
Problématique : Ajuster l'interface d'un objet à celle attendue par le code client.
Solution : L'adaptateur conserve une instance de la classe adaptée et convertit les appels d'une interface existante vers l'interface implémentée.
![Page 46: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/46.jpg)
[STRUCTURE] ADAPTER, DIAGRAMME
![Page 47: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/47.jpg)
ADAPTER, EXEMPLE
![Page 48: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/48.jpg)
QUIZZ
Quel pattern pourrait on mettre a contribution pour avoir une seule instance de logBase accessible dans notre application ?
Quel pattern pourrait on mettre a contribution pour obtenir rapidement un « LogBase » correctement configuré avec ses observers ?
![Page 49: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/49.jpg)
[STRUCTURE] DECORATOR
Problématique : Rajouter des fonctionnalités à des composants existants sans utiliser l'héritage.
Solution : Encapsuler l'objet existant et y ajouter des comportements nouveaux.
![Page 50: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/50.jpg)
[STRUCTURE] DECORATOR, DIAGRAMME
![Page 51: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/51.jpg)
[STRUCTURE] DECORATOR, EXEMPLE
![Page 52: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/52.jpg)
[STRUCTURE] DECORATOR VS HÉRITAGE
![Page 53: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/53.jpg)
[STRUCTURAUX] VISITOR
Problématique : On souhaite réaliser des opérations sur les éléments d'un objet sans pour autant connaître à l'avance le résultat à obtenir.
Solution : On utilise un objet tiers (visiteur) qui sera capable d'obtenir le résultat souhaité à partir des données.
![Page 54: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/54.jpg)
[STRUCTURAUX] VISITOR
![Page 55: R ÉVISION Les principes SOLID. Q UESTION Quest-ce que le S de Solid?](https://reader035.vdocuments.mx/reader035/viewer/2022062307/551d9da3497959293b8d3c90/html5/thumbnails/55.jpg)
[[STRUCTURAUX] VISITOR