Révision Les principes SOLID.

Slides:



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

Introduction au patrons de conception « Design patterns »
Patterns & Anti Patterns
UML - Présentation.
1 Les technologies XML Cours 1 : Les Web Services et Architectures Orientées Services Fé vrier Version 1.0 -
Design Pattern MVC En PHP5.
TP 3-4 BD21.
INTRODUCTION.
Introduction à la POO: Les classes vs les objets
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Initiation au système d’information et aux bases de données
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Page de garde Introduction aux Design Patterns ISIA, Mars 2003
Etude des Technologies du Web services
Programmation orientée objet
Révision du modèle MVC et du perceptron
Principes de la technologie orientée objets
Les Cas d’utilisation.
JAVASERVER FACES Un framework Java pour le développement Web.
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éalisée par :Samira RAHALI
Révision et principes SOLID
Créer une interface graphique avec Photoshop.
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.
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
Classes abstraites et Interfaces
.Net Remoting.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Etude globale de système.
Structures de données IFT-2000
Introduction au paradigme orienté-objet (suite)
© Petko ValtchevUniversité de Montréal Janvier IFT 2251 Génie Logiciel Notions de Base Hiver 2002 Petko Valtchev.
Développement dapplication avec base de données Semaine 10 : WCF avec Entité Framework Automne 2013.
Patrons de conceptions de créations
Travail réalisé par : LATRECHE Imed Eddine MENASRIA Med Lamine
ANALYSE METHODE & OUTILS
Paradigmes des Langages de Programmation
INTRODUCTION.
Elabore par BELKADHI ABIR BEN HASSEN SALMA CHEBBI MARWA
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 
Supports de formation au SQ Unifié
La Modélisation Orientée Objet Concevoir un programme : modélisation du problème à résoudre Notion de programme : machine de Turing Pouvoir d’expression.
Designs Patterns comment rendre son code faiblement couplé, et maintenable...
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Introduction au Génie Logiciel
Tutorat en bio-informatique
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
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.
Design Patterns Cours IUT 7 mars 2001 Arnaud Nauwynck & Nédra Mellouli
Factory Design Patterns Raffaella Sanna Sylvain Giroux.
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.
BlueJ_VII 1 Java, les objets : tout de suite ! Conception de classes (1) Notes de cours associées au chapitre 7 tutorial BlueJ
UML : méthode Processus. Introduction(1) ● Cycles ● Spécification par cas d'utilisation ● Identifier les besoins ● Analyse par cas d'utilisation ● Affiner.
Révision Les principes SOLID. Question  Qu’est-ce que le S de Solid?
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 I 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.

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?

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

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

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

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 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. Bénéficier du savoir faire d'experts dans des contextes éprouvés. (fiables, robustes & connus) Facilite la conception.

Pourquoi les utiliser ? 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 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éé.

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.

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

Quelques exemples pour commencer Singleton (Création) Factory method(Création) Adapter (Structure) Decorator (Structure) Visitor (Structure) Observer (Comportement) Iterator (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 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 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.

[Création] Factory method, diagramme

[Création] Factory Method, exemple

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

[Comportement] Iterator, diagramme

[Comportement] Iterator

[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

[Comportement] STATE

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$[; 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] 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 les investisseurs boursiers à chaque fois qu’une côte de la bourse change.

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

[Structure] Adapter, diagramme

Adapter, exemple

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 ?

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

[Structure] Decorator, diagramme

[Structure] Decorator, exemple

[Structure] Decorator VS Héritage

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

[Structuraux] Visitor

[[Structuraux] Visitor