r vision n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Révision PowerPoint Presentation
Download Presentation
Révision

Loading in 2 Seconds...

play fullscreen
1 / 42

Révision - PowerPoint PPT Presentation


  • 113 Views
  • Uploaded on

Révision . Les principes SOLID. Question. Qu’est-ce que le S de Solid?. Responsabilité unique (SRP: Single Responsibility Principle ).

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Révision' - paniz


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
r vision

Révision

Les principes SOLID

question
Question
  • Qu’est-ce que le S de Solid?
responsabilit unique srp single responsibility principle
Responsabilité unique (SRP: Single ResponsibilityPrinciple)
  • 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.
question1
Question
  • Qu’est-ce que le O de Solid?
ouvert ferm ocp open closed principle
Ouvert/fermé (OCP: Open/closedPrinciple)
  • 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.
question2
Question
  • Qu’est-ce que le L de Solid?
la substitution de liskov
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... 
question3
Question
  • Qu’est-ce que le I de Solid?
s paration des interfaces isp interface segregation principle
Séparation des Interfaces (ISP: Interface SegregationPrinciple)
  • 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.
question4
Question
  • Qu’est-ce que le D de Solid?
inversion des d pendances dip dependency inversion principle
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.
correction de l exercice
Correction de l’exercice
  • Voir le fichier de solution sur le site Internet du cours
les designs pattern

Les designs pattern

Architecture d’application – Hugo St-Louis

Hiver 2014

objectifs de la pr sentation
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
d finition d un design pattern
Définition d’un design pattern
  • Modèles de conception
    • parfois aussi « Motifs de conception » ou « Patrons de conception ».
  • Solutions à des problèmes classiques.
  • Indépendants du langage.
apparition des patterns
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]

l ouvrage de r f rence
L'ouvrage de référence
  • GoF « Gang of Four » Design patterns. Elements of reusableObjectOriented Software [1994]
    • Erich Gamma,
    • Richard Helm,
    • Ralph Johnson
    • John Vlissides
pourquoi les tudier
Pourquoi les étudier ?
  • Catalogue de solutions qui permet de bénéficier du savoir faire d'experts dans des contextes éprouvés. (fiableset robustes)
  • Facilite la conception.
  • Ne pas réinventer la roue.
  • Facilite la communication entre développeurs.
  • Pour résoudre un problème
division des patterns
Division des patterns
  • Les patterns sont divisés en 3 groupes:
    • Création
    • Structure
    • Comportement
les 5 patterns de cr ation
Les 5 patterns de création
  • Les patterns de Création
    • Factory method, AbstractFactory, Builder, Prototype, Singleton
  • Objectifs
    • 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éé.
les 7 patterns de structure
Les 7 patterns de structure
  • Les patterns de Structure
    • Adapter, Bridge, Composite, Decorator, Interface, Flyweight, Proxy
  • Objectifs:
    • Comment sont assemblés les objets.
    • Découpler l'interface de l'implémentation.
les 11 patterns comportementaux
Les 11 patterns comportementaux
  • Les patterns de Comportement
    • Interpretor, Template method, Chain of responsability, Command, Iterator, Mediator, Memento, Observer, State, Strategy, Visitor
  • Objectifs:
    • Définir un mode de communication entre les objets
quelques exemples pour commencer
Quelques exemples pour commencer
  • Singleton (Création)
  • Factorymethod(Création)
  • Observer (Comportement)
  • States (Comportement)
cr ation singleton
[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.
cr ation singleton pi ges diff rences
[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
cr ation singleton exercice
[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.
cr ation factory method
[Création] Factorymethod
  • Problématique : Obtenir facilement un objet prêt à l'emploi et qui correspond à nos besoins. Nous voulons encapsuler la logique de fabrication des classes.
  • 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.
cr ation factory method exemple
[Création] FactoryMethod, exemple
  • Supposons un supermarché qui doit s’approvisionner avec un certain produit. Dépendamment du temps de l’année, le produit proviendra d’un pays différent. Chacun des produits est modélisé sous la forme d’un objet.
cr ation factory method exercice
[Création] FactoryMethod, Exercice
  • Exercice :
    • Dans une usine, plusieurs travailleurs s’efforce pour accomplir un ensemble de tâches. Les travailleurs travaillent soit de jour(8h à 16h), de soir(16 h à 24h) ou de nuit(24h à 8h). Dépendamment du quart de travaillent, les tâches à réalisé sont différente.
    • Développer un patron de conception de type « factorymethod » qui permet de créer des travailleurs en fonction de l’heure.
    • Pour chacun des travailleurs, faite une méthode travailler qui affiche dans la console les tâches qu’ils réalisent.
comportement observer
[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.
comportement observer exercice
[Comportement] Observer, Exercice
  • Faite un programme qui permet de notifier tous les objets Etudiant abonner à l’observer lorsqu’il y a une tempête de neige.
comportement state
[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.
comportement state diagramme1
[Comportement] STATE, diagramme
  • Il existe deux variantes du patron state.
    • Une classe mère qui implémente les méthodes alors que les fils (états différents) modifient les propriétés utilisées dans les méthodes.
    • Une classe mère abstraite qui donne les propriétés à utiliser et les signatures de méthodes alors que les fils (états différents) modifient les propriétés et implémentent les méthodes.
comportement state exemple
[Comportement] STATE,Exemple
  • Nous allons 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$
comportement state exercice1
[Comportement] STATE,Exercice
  • Vous devez concevoir un programme qui permet de modéliser un combat ultime entre deux guerriers.
  • À tour de rôle, deux guerriers se frappent jusqu’à un combat mortel(>1pdv). Lors de ce combat, le nombre de points de vie(pdv) d’un guerrier influence la façon et l’intensité du combat. C’est-à-dire:
    • Si le guerrier est En Forme(> 50 pdv)
      • Se bat avec une épée et une hache
      • Inflige aléatoirement [10,15] pdv à sont adversaire
      • Lance des Cries de guerre à son adversaire à chaque coup qu’il donne
    • Si le guerrier est Correct ([15,50] pdv)
      • Se bat avec une épée
      • Inflige aléatoirement [5, 10] pdv à sont adversaire
    • Si le guerrier est Magané(<15 pdv)
      • Se bat à main nue
      • Inflige aléatoirement [0,3] pdv à sont adversaire
      • Le guerrier pleure à chaque fois qu’il inflige un coup à son adversaire