Sur cette page
Publié le : Mise à jour le :
Ressources et bibliographie
Ces ressources aident à comprendre les exemples TypeScript du cours et à comparer leurs choix de conception. Consultez-les selon vos besoins.
| Besoin | Lecture conseillée | Mise en pratique |
|---|---|---|
| Comprendre un mot ou une syntaxe | Glossaire, puis documentation du langage | Retrouver le mécanisme dans un petit exemple. |
| Comprendre l’intention et la structure d’un pattern | Fiches et schémas de Refactoring.Guru | Nommer les rôles de notre application et comparer deux solutions. |
| Lire des variantes JavaScript | Patterns.dev | Suivre les valeurs et distinguer le mécanisme des syntaxes employées. |
| Faire évoluer le programme | Situations et séances du parcours | Ajouter un tarif, un partenaire ou des notifications. |
POO, contrats et SOLID
Pour commencer, suivez cet ordre de lecture :
- L’encapsulation en orientée objet, Data Transition Numérique. La boîte noire et l’exemple de voiture illustrent la différence entre opérations publiques et état interne, avec du code Java. Complétez cette lecture avec les règles d’énergie de
Creature, car ajouter des getters et des setters ne garantit pas à lui seul un état valide. - Introduction à la programmation orientée objet, partie IV, Eric Sigoillot. Cette partie explique l’encapsulation, l’héritage et le polymorphisme en Pascal objet, à partir de bâtiments et de véhicules.
- Bonnes pratiques objet .NET, principes SOLID, Philippe Vialatte. Cet article de 2008 relie cohésion, couplage et encapsulation, puis présente chaque principe avec une définition, une démarche et un exemple C#. Comparez le découpage des responsabilités avec les exemples SOLID du cours. Dans une application, remplacez les requêtes SQL par concaténation par des requêtes paramétrées.
Le cours NSI du lycée Blaise Pascal introduit la POO avec des exemples Python et des diagrammes UML. Il distingue attributs d’instance, attributs de classe et méthodes.
L’article Héritage vs composition de LeanDeep illustre les relations « est un » et « a un » avec des exemples Python et des diagrammes UML. Il complète les fondations. La relation « est un » ne suffit pas à justifier un héritage : la sous-classe doit respecter les promesses de sa classe parente. Pour choisir un losange UML, précisez à quel objet les parties appartiennent et si elles peuvent être partagées.
Le manuel TypeScript sur les classes décrit les champs, les méthodes, la visibilité et l’héritage. La page sur la compatibilité des types explique pourquoi un objet peut respecter une interface sans déclaration explicite.
La référence des classes sur MDN complète la lecture d’une classe pas à pas. La page sur la syntaxe de décomposition explique la copie superficielle produite par { ...objet }. Les exemples de références et de copies montrent pourquoi un objet imbriqué reste partagé.
L’introduction à SOLID de DigitalOcean propose des exemples PHP. La partie Liskov montre comment corriger un retour incompatible. Pour travailler aussi les promesses métier, lisez le contre-exemple et la correction des réservations, puis la partie Liskov de Philippe Vialatte.
La section 2.3 de Principes avancés de conception objet, ENSICAEN, pages 3 et 4 compare les contrats du rectangle et du carré, puis propose une correction par composition. Elle complète l’explication avec les réservations.
Approfondir chaque principe
Le support ENSICAEN propose d’autres exemples pour chaque principe du chapitre SOLID.
Les textes de Robert C. Martin et de Martin Fowler sont en anglais.
Textes de référence
La présentation de Barbara Liskov au MIT situe ses travaux sur l’abstraction et les langages. Son article avec Jeannette Wing, A Behavioral Notion of Subtyping, formalise le sous-typage comportemental en 1994. Lisez-le après l’exemple du cours sur la substitution.
La définition du duck typing dans le glossaire Python complète la distinction avec le typage structurel TypeScript. Pouvoir appeler une méthode et respecter ses garanties sont deux vérifications différentes.
Robert C. Martin, surnommé Uncle Bob, a contribué à diffuser les principes SOLID. Il précise le lien entre responsabilité unique et acteurs du changement. Son article Solid Relevance rappelle les cinq principes et leur portée au-delà d’un langage particulier.
Diagrammes UML
Le chapitre UML, lire et dessiner un diagramme de classes présente les membres, les relations et les multiplicités, puis propose un exercice. La documentation Mermaid des diagrammes de classes fournit la syntaxe, à essayer dans l’éditeur Mermaid. Pour vérifier un point précis, consultez la spécification UML de l’OMG après le chapitre du cours.
Structures des patterns
Le catalogue de Refactoring.Guru classe les patterns orientés objet par leur intention de création, de structure ou de comportement. Ses fiches présentent Strategy, Observer, Adapter et Decorator. Le comparatif des fabriques distingue le terme général, la fabrique simple et les patterns de création.
La fiche Repository de Martin Fowler rattache ce pattern à une collection d’objets métier.
Patterns JavaScript
Patterns.dev couvre les mécanismes JavaScript, l’organisation des interfaces, le rendu et les performances. Ce périmètre dépasse celui des patterns orientés objet du GoF. Une fonction, un module ou une façon d’organiser les composants peut répondre au même problème sans reproduire une hiérarchie de classes.
- Observer Pattern détaille l’abonnement, le nettoyage et la distinction avec un bus de publication et d’abonnement.
- Factory Pattern montre des fonctions de création et leur configuration. Commencez par les deux exemples JavaScript de la fiche Factory, car l’article combine les fabriques avec des closures et plusieurs syntaxes compactes. Ses exemples HTTP et ses types TypeScript avancés servent à approfondir.
- Module Pattern traite des opérations exportées et de l’état interne d’un module.
- Container/Presentational Pattern sépare l’obtention des données et leur présentation, avec des exemples React.
Le guide des modules de MDN complète ces lectures avec les mécanismes du langage.
Frameworks et cycle d’exécution
L’article de Fowler sur l’inversion de contrôle explique qui décide quand le code s’exécute. Celui sur l’injection de dépendances décrit comment lui fournir les objets ou fonctions nécessaires.
La documentation React décrit les étapes de rendu et de commit. MDN détaille l’inscription et le retrait d’écouteurs DOM.
L’article de Ralph Johnson et Brian Foote, Designing Reusable Classes, publié en 1988, donne la définition d’origine du framework orienté objet et de l’inversion de contrôle. Le chapitre Frameworks 1 en cite la traduction.
Pour les composants, MDN explique les éléments personnalisés et leurs méthodes de cycle de vie. La fiche Template Method de Refactoring.Guru présente le pattern qu’ils suivent.
Pour les signaux, l’article de Ryan Carniato Building a Reactive Library from Scratch construit une bibliothèque proche de celle du cours. La page de Vue sur la réactivité en profondeur montre le même mécanisme avec des Proxy, et la proposition TC39 décrit un standard possible.
Pour le nettoyage et l’injection, comparez useEffect dans React, onCleanup dans Solid, provide et inject dans Vue, et l’injection de dépendances d’Angular.
Repères visuels
Murmur, projet de oio et mattering, représente des écosystèmes vivants. Sa vue forestière Plot illustre les notions d’état, d’interaction et d’événement dans les fondations.
La capture de Smalltalk montre un navigateur de classes et de méthodes. Dans Personal Distributed Computing: The Alto and Ethernet Software, Butler W. Lampson décrit Smalltalk et présente son environnement à la figure 1.
Livres
- Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Professional, 1994. Le catalogue GoF réunit 23 patterns orientés objet et décrit leurs intentions, leurs rôles et leurs conséquences.
- Eric Freeman et Elisabeth Robson, Head First Design Patterns, 2e édition, O’Reilly, 2020. Il explique les patterns avec des illustrations et des exemples Java. Les mécanismes se transposent à TypeScript, en tenant compte des fonctions et du typage structurel.
- Martin Fowler et coauteurs, Patterns of Enterprise Application Architecture, 2002. Il traite de l’architecture des applications d’entreprise, notamment de la séparation entre métier et persistance avec Repository.
- Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship, 1re édition, 2008. Le livre traite notamment du nommage, des fonctions et des tests. Pour évaluer une recommandation, comparez les changements qu’elle facilite à son coût pour la lecture et les tests.
Pour pratiquer
Les exercices du parcours proposent des créatures à programmer, puis un restaurant et un panier. L’application de réservation sert de point de départ aux mises en situation.