Révision Les principes SOLID.

Slides:



Advertisements
Présentations similaires
Page de garde Introduction aux Design Patterns ISIA, Mars 2003
Advertisements

Révision du modèle MVC et du perceptron
Révision et principes SOLID
Révision Les principes SOLID.
Patrons de conceptions de créations
Designs Patterns comment rendre son code faiblement couplé, et maintenable...
INSTITUT SUPERIEURE D’INFORMATIQUE Design Pattern
Developpement Process « Coding party !! » Tony Carnal Altran.
Révision Les principes SOLID. Question  Qu’est-ce que le S de Solid?
Gestion de la concurrence avec Entity Framework Développement d’application avec base de données Chapitre 23 Hugo St-Louis – Automne 2015.
Le débogage Semaine 12 Version A15. Plan de leçon - Débogage  Commentaire javadoc  Définition  Fonctionnement  Point d’arrêt  Exécution  Contrôler.
EJB 2 et spécialisation Présentation. Spécialisation La spécialisation Concept objet implémenté dans les langages dits orientés objet. Très souvent accompagné.
UML EPITECH 2009 UML1 - Introduction UML – Définition – Historique – UML en entreprise – Couverture Concepts – Objet – Classe –
Comprendre Internet Bases théoriques et exercices pratiques, pour débutants complets... Et curieux !
1- Régles de normalisation 2ème partie : normalisation Modèle Conceptuel des Données 2- Les Formes Normales 3- Dépendances Fonctionnelles 4- Recap - Méthodologie.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
Le DOM Le Document Object Model (DOM) est une interface de programmation pour les documents HTML et XML Il fournit une représentation structurée du document.
1 UML: applications, études de cas ● Processus (Extreme Programming, Unified Process) ● Architectures ● Expression du besoin technique Conception Préliminaire.
Semaine 01 La programmation créative Introduction.
ANNEE ACADEMIQUE Institut Supérieur Emmanuelle D’Alzon de Butembo COURS: THEORIE DE BASE DE DONNEES : 45H PROMOTION: G2 Gestion Informatique.
Les Bases de données Définition Architecture d’un SGBD
Initiation à la conception des systèmes d'informations
Modèle objet : les classes
Environnement du développement de BD ORACLE REPORTS 10g
Pas de variable globale
Enseigner la physique-chimie au cycle 4 dans l'objectif de la maîtrise du socle commun par les élèves. Stage du 30 mars /12 1.
Université Stendhal - Grenoble
Javadoc et débogueur Semaine 03 Version A17.
Chiffrement de bout en bout
Les bases de données et le modèle relationnel
BFFA – M 4-5 Lausanne - David Savoy
Langages de programmation TP10
Module 5 : Gestion des disques.
Les interfaces en PHP.
Programmation système
Développement d’un réseau social de collaboration destiné aux médecins radiologues Soutenance de projet de fin d’étude En vue de l’obtention du diplôme.
Août 2009.
la structure de l’entreprise: Définition : La structure organisationnelle d’une entreprise définie le mode d’organisation entre les différentes unités.
Modélisation avec UML 2.0 Partie II Diagramme de classes.
I Copyright © 2004, Oracle. Tous droits réservés. Introduction.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
Normalisation & Certification M2PQSE Nedra Raouefi 2018/
BTS SIO 2ème année SLAM SISR
Catherine Cyrot - bibliothèques numériques - Cours 5
Les classes et les objets
Programmation Android Les listes
Kit de formation multimedia
Les cas d’utilisation 420-KE2-LG.
Paradigme Orienté Objet
DESIGN PATTERN BUILDER KADRI LOUBNA CHARMATI SEWSEN.
PRESENTATION ACCESS Editeur : Microsoft Environnement Windows (SE)
Génie Logiciel DÉFINITION DES BESOINS. Cahier de charges: définition  Le Cahier des Charges (CDC) est un document par lequel la maîtrise d'ouvrage exprime.
Roowth 1 Université d'Adrar Faculté des Sciences et de la Technologie Département des Mathématiques et Informatique 1 er Année master : Informatique Option:
Principes de programmation (suite)
Notions d'architecture client-serveur. Présentation de l'architecture d'un système client/serveur Des machines clientes contactent un serveur qui leur.
Réalisé par: SAMMARI RIM SOUID AHLEM AMROUCH HAFEDH
Tableau de bord d’un système de recommandation
Test de performances. Test de performances:  Un test de performance est un test dont l'objectif est de déterminer la performance d'un système informatique.
Design Patterns en programmation par objets
YII Yes It Is !.
Catherine Cyrot - bibliothèques numériques - Cours 5
PAF Guillaume Martin - Fabrice Cizeron - Xavier Roulot
Boulain Joris, Handouz Yassine, Regnier Fabien, Giraud Antoine
Contenu Systèmes de test parallèles Multithreading Synchronisation
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
GROUPE DA-TA FLAQ’S TECHNOLOGIES INC. - 1 La gestion du Changement & Accompagnement dans les projets IT K. Khelil _Projet IT.
UX DESIGN User exprérience en anglais Expérience Utilisateur en français Concevoir, Créer, dessiner UX DESIGN, consiste à penser et concevoir un site web.
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.

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

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èle de conception parfois aussi « Motifs de conception » ou « Patrons de conception ». Solutions à des problèmes classiques. Indépendants du langage. En informatique, et plus particulièrement en développement logiciel, un patron de conception (en anglais : « design pattern ») est un arrangement caractéristique de modules, reconnu comme bonne pratique en réponse à un problème de conception d’un logiciel. Il décrit une solution standard, utilisable dans la conception de différents logiciels. Un patron de conception est issu de l’expérience des concepteurs de logiciels. Il décrit sous forme de diagrammes un arrangement récurrent de rôles et d’actions joués par des modules d’un logiciel, et le nom du patron sert de vocabulaire commun entre le concepteur et le programmeur. D’une manière analogue à un patron de couture, le patron de conception décrit les grandes lignes d’une solution, qui peuvent ensuite être modifiées et adaptées en fonction des besoins. Les patrons de conception décrivent des procédés de conception généraux et permettent en conséquence de capitaliser l’expérience appliquée à la conception de logiciel. Ils ont une influence sur l’architecture logicielle d’un système informatique. Description Les patrons servent à documenter des bonnes pratiques basées sur l’expérience. Ils sont le résultat d’une synthèse de l’expérience acquise par les ingénieurs. Les patrons spécifient des solutions à des problèmes qui ne peuvent pas être résolus par un composant isolé: La description de la plupart des patrons implique plusieurs rôles qui peuvent être joués par plusieurs composants d’un logiciel. Par exemple le patron Observer implique deux rôles qui sont le sujet et l’observateur. Les patrons apportent un vocabulaire commun entre l’architecte et le programmeur: Si le programmeur connait le patron de conception Observer, alors l’architecte n’aura pas besoin de lui donner de longues explications et le dialogue se limitera à « ici j’ai utilisé un Observer ».

Apparition des patterns Murray Silverstein, Sara Ishikawa,Christopher 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 qui permettent de bénéficier du savoir-faire d'experts dans des contextes éprouvé. (fiables et robustes) Facilite la conception. Ne pas réinventer la roue. Facilite la communication entre développeurs. Pour résoudre un problème

Become a programming ninja Mais la vraie raison … Become a programming ninja

Division des patterns Les patterns sont divisés en 3 groupes: Création Structure Comportement

Les 5 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éé ou comment cela sera créé.

Les 7 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 Éviter 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.

https://www.polleverywhere.com/free_text_polls/YPyqHAFC8x4Togm

https://www.polleverywhere.com/multiple_choice_polls/3YW0JbFevCDZMeQ

[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 Dans une usine, plusieurs travailleurs s’efforcent pour accomplir un ensemble de tâches. Les travailleurs travaillent soit de jour (8 h à 16 h), de soir (16 h à 24 h) ou de nuit (24 h à 8 h). Dépendamment du quart de travaillent, les tâches à réaliser sont différentes. 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, faites 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 comportements 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

[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érents é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$ Toute transaction doit faire l’objet d’une surveillance

[Comportement] STATE, Exercice

[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

BONUS! Question du publique: Si je veux partager une application qui utilise entity framework sans que la personne puisse voir mon mot de passe dans l’APP.config, je fais comment?

Bonne question… mais j’ai des contacts. Et moi de dire ! Bonne question… mais j’ai des contacts.

La réponse Un ami spécialiste en sécurité m’a référé vers ce site: http://www.aspsnippets.com/Articles/Encrypt-and-Decrypt-Connection-String-in-AppConfig-file.aspx

Questions? On passe au TP!