Vous êtes sur la page 1sur 7

Principes S.O.L.I.D.

Présentation

 Ensemble de principes qui améliore l’architecture, la conception et le codage des


applications (essentiellement complexes)
 Introduit pour la première par Mr Rober C. Martin (connue dans la communauté
informatique par Oncle Bob)
 C’est le fruit d’expérience d’une trentaine d’années de travail dans différents types de
projets
 C’est le bon sens de conception dans la faveur d’une programmation lucide
 Objectif => développer un logiciel de qualité
Single responsability Principle

 C’est le principe le plus simple dans SOLID mais au même temps c’est le moins respecté
dans le monde
 Il préconise de donner à chaque module, package, classe ou méthode une seule
responsabilité
 Eliminer le concept du couteau suisse (un outils avec plusieurs fonctionnalités à la fois:
couteau, ciseau, tourne visse, tirebouchon…)
 Il est aussi énoncé d’une autre façon dans le domaine d’informatique: « Separation of
concerne »
Open/Close Principle

 Ce principe s’intéresse plus à la maintenabilité de l’application qu’au développement


 Une méthode doit être fermée pour la modification, ouverte pour l’extension
 La fermeture à la modification commence à partir du moment où on a livré le logiciel au
client
 Il permet d’éviter le problème de régression
Liskov substitution Principle

 S’intéresse du problème d’héritage


Interface Segregation Principle
 Une classe métier devrais implémenter toutes les méthodes d’une interface
 => Il faut subdiviser une interface en sous interfaces si ce principe est violé
<<Interface>>

GérerPackage IDessinerForme GérerLiaison


Dessine AjouterTexte(texte) Dessine
AjouterPackage(Package) AjouterLiaison(Liaison)
DessinerRectangle(p,l,L)
DessinerLigne(p1,p2,l)

<<Interface>>

IDessinerForme2D
DessinerRectangle(p,l,L)
si ne
s
De
<<Interface>>

GérerPackage IDessinerForme1D GérerLiaison


Dessine
AjouterPackage(Package) DessinerLigne(p1,p2,l) AjouterLiaison(Liaison)
Dependency Inversion Principle

 Chaque classe métier doit dépendre de l’abstraction d’un service dépendant est non pas de
son implémentation

DessinerForme1D GérerLiaison
Dessine
DessinerLigne(p1,p2,l) AjouterLiaison(Liaison)

<<Interface>>
DessinerForme1D IDessinerForme1D GérerLiaison
<<realize>> Dessine
DessinerLigne(p1,p2,l) DessinerLigne(p1,p2,l) AjouterLiaison(Liaison)

Vous aimerez peut-être aussi