CarnetDeDevPOO, design patterns et frameworks
Chapitres

Chapitres

Sur cette page

Publié le : Mise à jour le :

Glossaire

Ce glossaire permet de retrouver un terme rencontré dans le cours et d’accéder au chapitre qui l’explique. Les termes anglais reprennent les noms utilisés dans la documentation et le code. Lorsqu’une ligne donne plusieurs noms, ils désignent ici la même notion.

Objets et relations

TermeSensChapitre
ObjetValeur qui regroupe des propriétés et des opérations. En JavaScript, un objet peut être créé sans classe.Objets et classes
ClasseDéfinition utilisée pour créer des objets avec une structure et des méthodes communes. Chaque objet créé possède son propre état.Objets et classes
InstanceObjet créé à partir d’une classe. Deux instances de Creature peuvent avoir des énergies différentes.Objets et classes
RéférenceValeur qui permet de désigner un objet. Après const autre = creature, les deux variables désignent le même objet et observent ses modifications.Objets et références
Copie superficielleNouvel objet ou tableau qui reprend les valeurs du premier niveau. Les objets imbriqués restent partagés. { ...reservation } suffit pour isoler les champs primitifs des réservations du cours.Objets et références
Attribut, champDonnée nommée qui participe à l’état d’un objet ou d’une classe. Le champ privé #energie conserve l’énergie d’une créature.Encapsulation
PropriétéÉlément nommé accessible sur un objet. creature.nom lit une donnée, tandis que creature.energie appelle ici un getter. Les champs JavaScript privés écrits avec # ne se lisent pas comme des propriétés publiques.Lire une classe
MéthodeFonction accessible par un objet ou une classe. Une méthode d’instance peut lire ou modifier l’état de l’objet qui la reçoit.Objets et classes
GetterAccesseur qui exécute du code lors de la lecture d’une propriété. Il permet notamment d’exposer un champ privé sans autoriser son affectation directe.Encapsulation
SetterAccesseur qui exécute du code lors de l’affectation d’une propriété. Il peut vérifier la valeur reçue avant de modifier l’état de l’objet.Encapsulation
EncapsulationOrganisation qui réserve l’accès ou la modification d’un état à des opérations contrôlées. Ces opérations protègent les règles de l’objet.Encapsulation
HéritageRelation par laquelle une classe reprend les membres d’une classe parente et peut les compléter ou les redéfinir. L’utilisation comme sous-type exige aussi le respect du contrat du parent.Composition et héritage
CompositionOrganisation dans laquelle un objet utilise d’autres objets pour effectuer une partie de son travail. En UML, la composition désigne plus précisément une relation tout-partie où une partie appartient au plus à un composite à la fois.Composition et héritage
UMLLangage de modélisation qui définit plusieurs sortes de diagrammes. Un diagramme de classes décrit des types, leurs membres et leurs relations.Diagrammes de classes
MultiplicitéNombre d’instances qui peuvent participer à une relation UML pour une instance à l’autre extrémité. 0..* autorise aucune, une ou plusieurs instances.Diagrammes de classes

Lire les mots d’une classe

TermeSensChapitre
Constructeur, constructorCode qui initialise une instance pendant sa création. Dans constructor(nom: string), nom reçoit l’argument fourni à new.Lire une classe
newOpérateur utilisé ici pour créer une instance d’une classe et appeler son constructeur. Deux appels à new Creature() créent deux objets distincts.Lire une classe
thisValeur qui désigne l’objet utilisé pour cet appel. Dans grenouille.avancer(), this désigne grenouille pendant l’exécution de cette méthode d’instance.Lire une classe
publicVisibilité qui autorise l’utilisation d’un membre depuis le code extérieur à la classe. En TypeScript, un membre sans modificateur de visibilité est public par défaut.Lire une classe
privateModificateur TypeScript qui interdit l’accès à un membre en dehors de sa classe pendant la vérification des types. Les champs JavaScript écrits avec # disposent d’un contrôle d’accès à l’exécution.Lire une classe
protectedModificateur TypeScript qui réserve l’accès à un membre au code de sa classe et de ses sous-classes. Il n’autorise pas les appelants extérieurs à l’utiliser.Lire une classe
staticModificateur qui place un membre sur la classe elle-même. Creature.energieMax se lit sur la classe, tandis que grenouille.energie se lit sur une instance.Objets et classes
readonlyModificateur TypeScript qui limite les affectations d’une propriété. Il ne gèle pas l’objet à l’exécution et ne rend pas ses objets imbriqués immuables.Lire une classe
extendsMot-clé qui déclare ici qu’une classe hérite d’une autre. Il permet aussi à une interface TypeScript d’étendre un autre contrat, sans lui ajouter de code exécuté.Héritage et contrats
superMot-clé qui donne accès au constructeur ou à une méthode de la classe parente. Dans le constructeur d’une sous-classe, super(nom) initialise la partie héritée avec ce nom.Héritage et contrats
implementsMot-clé TypeScript qui demande au compilateur de vérifier qu’une classe satisfait un contrat. Il ne fournit pas le code des méthodes annoncées.Héritage et contrats
Redéfinition, overrideNouvelle version d’un membre hérité, écrite dans une sous-classe. Le mot-clé TypeScript override fait vérifier que ce membre existe dans la classe parente.Héritage et contrats
Classe abstraite, abstractClasse TypeScript qui sert de base à des sous-classes et que le compilateur interdit d’instancier directement. Elle peut associer du code partagé et des opérations abstraites.Interface et classe abstraite
Méthode abstraiteOpération déclarée sans corps dans une classe abstraite. Une sous-classe concrète doit fournir le code correspondant si elle n’en hérite pas déjà.Interface et classe abstraite

Contrats et types

TermeSensChapitre
ContratEnsemble des opérations, conditions et garanties sur lesquelles un appelant peut compter. Une signature de méthode décrit une partie de ce contrat.Contrats et polymorphisme
InterfaceDescription des opérations ou des données qu’un code rend accessibles à d’autres codes. En TypeScript, le mot-clé interface décrit les membres attendus et leurs types.Contrats et polymorphisme
AbstractionDescription des capacités utiles à un appelant, sans tous les détails de leur réalisation. Un contrat de stockage permet ainsi de réserver sans connaître la base de données.Contrats et polymorphisme
InvariantRègle vraie à la création d’un objet et préservée après ses opérations publiques. L’énergie d’une créature reste par exemple entre 0 et 100.Encapsulation
PréconditionCondition que l’appelant doit respecter avant une opération. Une opération de retrait peut exiger un solde suffisant.Substitution de Liskov
PostconditionGarantie sur le résultat ou l’état après une opération, lorsque ses conditions d’utilisation sont respectées. Une annulation réussie garantit par exemple que la place réservée est de nouveau disponible.Substitution de Liskov
Sous-typeType utilisable là où un type plus général est attendu. Un sous-type comportemental respecte aussi les conditions et les garanties de ce type général.Substitution de Liskov
PolymorphismePossibilité pour un appelant d’utiliser un même contrat avec plusieurs implémentations. Chaque implémentation fournit le comportement attendu à sa manière.Contrats et polymorphisme
Duck typing, typage canardStyle de programmation qui utilise les opérations d’un objet sans exiger une classe précise. La présence d’une méthode ne suffit pas à prouver que l’objet respecte son contrat comportemental.Duck typing
Typage structurelSystème qui détermine la compatibilité des types en comparant leurs membres et les types de ces membres. TypeScript utilise cette approche pour vérifier les objets avant l’exécution.Typage structurel
Typage nominalSystème où la compatibilité dépend de l’identité des types et de relations déclarées. Deux types de même structure ne deviennent pas compatibles pour cette seule raison.Typage nominal
SOLIDGroupe de cinq principes sur les responsabilités, l’extension, la substitution, les interfaces et les dépendances. Ils aident à discuter une conception et ses conséquences.Principes SOLID
Responsabilité unique, SRPPrincipe qui regroupe le code répondant à une même raison de changement, liée aux règles de l’activité. Plusieurs méthodes peuvent contribuer à cette responsabilité.Responsabilité unique
OCPPrincipe ouvert à l’extension et fermé à la modification. Une variation prévue peut s’ajouter derrière un contrat stable, sans réécrire le traitement qui l’utilise.Extension
Substitution de Liskov, LSPPrincipe qui exige d’un sous-type qu’il préserve les promesses du type attendu par l’appelant. Une signature compatible ne suffit pas à garantir ce comportement.Substitution
Ségrégation des interfaces, ISPPrincipe qui donne à chaque client un contrat adapté aux opérations dont il a besoin. Un écran de consultation n’a pas besoin d’exiger les opérations d’administration.Interfaces
Inversion des dépendances, DIPPrincipe qui fait dépendre les détails techniques d’un contrat adapté aux règles métier. Fournir un objet en paramètre ne démontre pas à lui seul cette direction des dépendances.Dépendances

Fonctions et organisation du code

TermeSensChapitre
ParamètreNom déclaré dans la définition d’une fonction ou d’une méthode pour recevoir une valeur lors de l’appel. Dans la méthode reserver(atelierId: number, email: string), email est un paramètre.Application de réservation
ArgumentValeur fournie à une fonction ou à une méthode lors d’un appel. Dans inscriptions.reserver(1, "lea@example.test"), 1 et la chaîne sont des arguments.Application de réservation
Callback, fonction de rappelFonction transmise à un autre code pour que ce code l’appelle au moment prévu. Elle peut être appelée pendant le traitement courant ou plus tard.Observer
Closure, fermetureFonction qui garde accès aux variables de l’environnement où elle a été définie, même après la fin de la fonction qui l’a créée. Une fabrique peut ainsi produire une fonction qui conserve le tarif reçu lors de sa création.Factory
Fonction pureFonction dont le résultat dépend uniquement de ses arguments et qui ne modifie aucun état extérieur. Elle peut calculer une remise sans enregistrer une réservation ni envoyer un message.Strategy
ModuleUnité de code qui organise ses déclarations et expose certains éléments aux autres modules. En JavaScript, export et import définissent ces échanges.Frameworks
CohésionDegré auquel les éléments d’un module contribuent à une même tâche ou à un ensemble de tâches liées. Un module qui calcule les tarifs et met en forme des courriels réunit des raisons de changement différentes.Responsabilités
CouplageEnsemble des dépendances et des connaissances qui lient des éléments du code. Connaître les champs propres à un fournisseur lie le code appelant à son format.Responsabilités
AssertionVérification exécutable qui échoue si une condition ou un résultat attendu n’est pas respecté. assert.equal(places, 2) exige que places vaille exactement 2.Application de réservation
Refactoring, refactorisationModification de la structure du code qui conserve son comportement observable. Extraire un calcul dans une fonction peut rendre une règle plus facile à lire et à tester.Refactoriser

Patterns et frameworks

TermeSensChapitre
Strategy, stratégieOrganisation qui permet de choisir une implémentation d’une règle derrière un même contrat. Une règle de réduction peut varier sans modifier le traitement qui l’utilise.Strategy
Observer, observateurOrganisation où un sujet avertit les abonnés d’un événement sans connaître le détail de leurs réactions.Observer
Factory, fabriqueCode qui centralise la création d’objets. Une fabrique simple choisit quoi créer, tandis que Factory Method et Abstract Factory décrivent des organisations plus précises.Factory
Adapter, adaptateurCode qui traduit le contrat d’un service ou d’un format vers celui attendu par l’application. Il isole par exemple les noms de champs propres à une API externe.Adapter
Decorator, décorateurObjet ou fonction qui entoure un comportement pour lui ajouter un traitement tout en conservant le contrat attendu par l’appelant. Il peut par exemple mesurer la durée d’une opération.Decorator
Repository, dépôtAccès à une collection d’objets de l’application, comme les réservations, qui masque les détails de leur enregistrement et de leur lecture dans un stockage. Un dépôt de réservations peut proposer une recherche par identifiant.Repository
Bibliothèque, libraryEnsemble de fonctions ou de composants que l’application appelle pour effectuer une tâche. L’application choisit les moments où elle les utilise.Frameworks
FrameworkCadre logiciel qui organise une partie de l’exécution et appelle le code fourni par l’application aux points prévus. Un framework web peut appeler un gestionnaire quand une requête arrive.Frameworks
Inversion de contrôle, IoCOrganisation où un mécanisme extérieur choisit quand appeler le code de l’application. Les gestionnaires d’événements du navigateur en sont un exemple.Frameworks
Injection de dépendancesFait de fournir à un code les objets ou fonctions dont il a besoin, au lieu de le laisser les créer ou les chercher lui-même. Une fonction de réservation peut ainsi recevoir le dépôt qu’elle utilise.Frameworks 6
Localisateur de services, service locatorObjet central auquel un code demande explicitement les services dont il a besoin. Martin Fowler l’oppose à l’injection, où le code reçoit ses services sans rien demander.Frameworks 6
ComposantMorceau d’interface qui regroupe ses éléments, la façon de les mettre à jour et ses réactions aux actions de la personne. Une ligne d’atelier avec son bouton Réserver forme un composant.Frameworks 3
État de l’interfaceDonnées nécessaires pour dessiner la page à un instant donné, comme les places libres, le courriel saisi et le dernier message.Frameworks 2
StoreObjet qui conserve l’état de l’interface, permet de le remplacer et prévient ses abonnés à chaque changement. Il joue le rôle du sujet d’un Observer.Frameworks 2
RenduTransformation de l’état en éléments affichés. Un rendu complet recalcule toute la page, un rendu ciblé modifie seulement les éléments concernés.Frameworks 2
Délégation d’événementsTechnique qui pose un seul écouteur sur un ancêtre, puis retrouve l’élément cliqué grâce à la propagation des événements. Elle fonctionne aussi pour les éléments créés plus tard.Frameworks 2
Template Method, patron de méthodePattern où une classe mère fixe l’ordre des étapes d’un algorithme et laisse les sous-classes en redéfinir certaines. Les étapes facultatives s’appellent des crochets, comme connectedCallback d’un élément personnalisé.Frameworks 3
SignalConteneur de valeur qui retient les effets qui le lisent et les relance quand sa valeur change. L’abonnement se fait par la lecture, sans appel explicite.Frameworks 4
EffetFonction que le framework relance chaque fois qu’un signal lu pendant sa dernière exécution change. Un effet peut par exemple écrire le nombre de places dans un élément.Frameworks 4
Cycle de vieÉtapes de l’existence d’un composant : création, montage dans la page, mises à jour, puis démontage. Le démontage doit défaire les abonnements et les écouteurs extérieurs.Frameworks 5
PortéeListe des nettoyages à exécuter ensemble, rattachée à un composant ou à une exécution d’effet. Détruire une portée arrête aussi les effets créés dans cette portée.Frameworks 5
DOM virtuelDescription de l’interface sous forme d’objets JavaScript, que React compare avec la description précédente pour ne modifier que les éléments qui diffèrent.Frameworks 7