Les principes fondammentaux Flashcards
Qu’est-ce qui définit la qualité d’une conception OO?
La bonne division de nos objets. Il faut limiter le Ripple Effect
Quels sont les 4 paradigmes de programmation?
OO, fonctionnel, procédural, déclaratif (ex: terraform)
Que représente un objet en OO?
Il représente un concept du domaine d’affaire ainsi que ses interactions et comportements
Que contient un objet?
Des données, des comportements (méthodes), une visibilité qui expose un contrat au monde extérieur.
Quelles sont les 2 métriques que nous devons balancer lorsque l’on développe un logiciel? Expliquez ces métriques
Cohésion: Degré de couplage entre un groupe d’objets. (Ex: Fromage a un fort couplage avec la fromagerie, mais un faible couplage avec le derrière de la bibliothèque)
Couplage: Niveau de liaisons physiques d’un objet (Ex: Imprimante a un fort couplage avec l’encre, mais un faible couplage avec le papier)
Que sont les principes SOLID+T?
Il s’agit de bons principes de conception (guideline appliqué dans bons cas).
Quels sont les principes SOLID+T? Expliquez chacun brièvement.
SRP - Single responsibility principle
Une seule responsabilité pour un seul acteur donné pour un contexte donné
OCP - Open closed principle
Ouverture pour ajouter des versions des concepts qui peuvent évoluer dans le temps sans modifier de la logique actuelle, fermeture à devoir créer de la dette technique en modifiant l’existant pour supporter l’évolution
LSP - Liskov substitution principle
Un enfant ne peut pas avoir un leg refusé d’un parent et l’appelant ne doit pas devoir prendre action en sachant l’enfant
ISP - Interface segregation principle
Favoriser les contrats fragmentés en fonction des concepts que les gros contrats que certains n’ont d’intérêt qu’une partie du contrat
DIP - Dependencies inversion principle
Inverser la flèche de dépendance pour éviter d’être impacté par moins stable que lui (protection cycle d’évolution et modification)
TDA - Tell don’t ask
Faire confiance aux autres dans les traitements des actions, ils vont bien agir et m’informer si je dois prendre action
Qu’est-ce que le Domain Driven Design?
Il s’agit d’une philosophie de conception s’appliquant aux problèmes d’affaire complexes.
Quel est le langage promu par le Domain Driven Design?
Le langage du domaine d’affaire. Le langage ubiquitaire. Il s’agit d’avoir un langage compris par tous les membres de l’équipe et compris par les gens d’affaire.
Quels sont les 3 objets du DDD? Expliquez chacun de ces 3 objets.
Value Object: Représente une caractéristique de domaine. Il est immuable et expose un comportement (Ex: un objet Money, Couleur)
Entité: Possède une identité unique et évolue au courant de sa vie. Il possède des changements d’état, offre des comportements modifiant cet état et contient des données incluant des Value Objects. Il représente les données et les règles d’affaires d’un concept du domaine! (Ex: Permis de conduire)
Aggrégat: Le concept du domaine d’affaire qui a le plus haut niveau dans mon contexte. Englobe tous les Value Objects et toutes les entités. Il s’agit du point d’entrée du domaine et il expose les comportements offerts. (Ex: Dossier conducteur qui englobe le permis)
Qu’est-ce qu’un contexte d’affaire?
Il s’agit d’une zone du problème d’affaire, un contexte d’utilisation. (Ex: facturation vs dossiers médicaux)