Révision Les principes SOLID. Question  Qu’est-ce que le S de Solid?

Slides:



Advertisements
Présentations similaires
Mathilde VINCENT - Olivier JOURDAN Paris - le 7/2/2012
Advertisements

Introduction au patrons de conception « Design patterns »
La Gestion de la Configuration
Introduction: Concepts de la programmation
Patterns & Anti Patterns
LOG4430 : Architecture logicielle et conception avancée
Conception de Programmes Evolutifs Pré Soutenance de TER Année Encadrants : Cathy Escazut et Michel Gautero Auteurs: Paul-Kenji Cahier Sylvain.
UML - Présentation.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
INTRODUCTION.
Introduction à la POO: Les classes vs les objets
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Page de garde Introduction aux Design Patterns ISIA, Mars 2003
FSAB1402: Informatique 2 Techniques de Programmation Orientée Objet
La programmation Orienté Objet
Programmation orientée objet
Révision du modèle MVC et du perceptron
Principes de la technologie orientée objets
Introduction au Génie Logiciel
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Analyse et Conception orientée objet
Initiation à la conception de systèmes d'information
Révision et principes SOLID
Révision Les principes SOLID.
IFT1025, Programmation 2 Jian-Yun Nie
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Classes abstraites et Interfaces
Vers la conception objet
.Net Remoting.
Etude globale de système.
Structures de données IFT-2000
Behavioral Design Patterns The Observer Pattern Roberto Demontis Sylvain Giroux.
Introduction au paradigme orienté-objet (suite)
Abstract Factory Pattern Une AbstractFactory est une classe qui existe pour créer des instances de d'autres classes. Créé par le « Gang of Four » Est un.
Programmation non procédurale Le projet ECOLE 2000
Développement dapplication avec base de données Semaine 10 : WCF avec Entité Framework Automne 2013.
Sensibilisation a la modelisation
Patrons de conceptions de créations
INTRODUCTION.
Factory Design Patterns. Contents Factory patterns: principesFactory patterns: principes The Factory Method patternThe Factory Method pattern The Abstract.
Design Patterns en programmation par objets. Plan  Design patterns –De quoi s’agit-il? –Pourquoi faut-il les utiliser?  Design patterns essentiels 
Designs Patterns comment rendre son code faiblement couplé, et maintenable...
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
C++ L’HERITAGE Fayçal BRAÏKI DUT INFORMATIQUE.
Initiation à la conception des systèmes d'informations
Architecture, Abstraction et Topologie réseau
Behavioral Design Patterns The Observer Pattern. Intention Définir une dépendance de “1” à “n” entre des objets de telle sorte que lorsque l’état d’un.
La programmation par objets Principes et concepts Etude de Smalltalk.
Design Patterns Cours IUT 7 mars 2001 Arnaud Nauwynck & Nédra Mellouli
Notifications et Communication réseau D. BELLEBIA – 18/12/2007NSY208 CNAM.
Hiver 2004SEG2501 Chapître 41 Chapître 4 SDL – structure d’un système et son comportement.
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Factory Design Patterns Raffaella Sanna Sylvain Giroux.
Modèles de conception et BC4J Par Gabriela Cohen Yanéric Roussel.
Nouvelles Technologies Internet & Mobile
Introduction à la Programmation Orientée Objet
INSTITUT SUPERIEURE D’INFORMATIQUE Design Pattern
Master 1 SIGLIS Jave Lecteur Stéphane Tallard Chapitre 5 – Correction TD.
Le rationalisme.
UML : méthode Processus. Introduction(1) ● Cycles ● Spécification par cas d'utilisation ● Identifier les besoins ● Analyse par cas d'utilisation ● Affiner.
Principes avancés de conception objet Jean-Jacques LE COZ.
Introduction à l'orienté objet. Définition Le terme orienté objet siginifie que l'on organise le logiciel comme une collection d'objets organisée en graphe.
Révision Les principes SOLID.
Transcription de la présentation:

Révision Les principes SOLID

Question  Qu’est-ce que le S de Solid?

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.

Question  Qu’est-ce que le O de Solid?

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.

Question  Qu’est-ce que le L de Solid?

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...

Question  Qu’est-ce que le I de Solid?

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.

Question  Qu’est-ce que le D de Solid?

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.

Les designs pattern Architecture d’application – Hugo St-Louis Hiver 2015

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

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  Murray Silverstein, Sara Ishikawa,Christopher Alexander, « A Pattern Language: Towns, Buildings, Construction » [1977] Murray SilversteinSara IshikawaChristopher Alexander « 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  GoF « Gang of Four » Design patterns. Elements of reusable ObjectOriented Software [1994]  Erich Gamma,  Richard Helm,  Ralph Johnson  John Vlissides

Pourquoi les étudier ?  Catalogue de solutions qui permet de bénéficier du savoir faire d'experts dans des contextes éprouvés. (fiables et 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  Les patterns sont divisés en 3 groupes:  Création  Structure  Comportement

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 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 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  Singleton (Création)  Factory method(Création)  Observer (Comportement)  States (Comportement)

[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, diagramme

[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, exemple

[Création] Singleton, Exercice  Faites un programme qui permet de répartir la charge sur plusieurs serveurs(LoadBalancing). Ce programme retourne une adresse de connexion à tour de rôle à partir d’une liste d’adresse.  La classe qui contient(distribue) les adresses doit être un singleton car l’administrateur peut ajouter/supprimer des adresses en tout temps.

Design pattern Become a programming ninja

[Création] Factory method  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, diagramme

[Création] Factory Method, 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  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 « factory method » 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  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

[Comportement] Observer, Exemple

[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  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, 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  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, 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