Cette formation vous permet de comprendre l'intérêt et toutes les possibilités offertes par le développement objet par rapport à une approche fonctionnelle (fonctions isolées). Les limites de cette dernière sont présentées de façon progressive afin que vous puissiez comprendre, grâce à de nombreux ateliers pratiques, qu'il existe une « autre façon » de penser le développement et de bien ancrer ainsi les principes et les spécificités de la programmation orientée objet (POO).
Au-delà de la rupture disruptive par rapport à l'approche structurée classique, il s‘agit tout simplement de savoir concevoir un modèle de classes pertinent pour ses applications en respectant les bonnes pratiques de conception d'une architecture conforme aux standards professionnels. Dans un premier temps vous manipulerez des classes simples (commande, article, etc.) et vous prendrez progressivement la mesure de l'impact de la conception des données et des traitements sur la qualité de votre application (performances, sécurité, évolutivité, lisibilité et maintenance) à travers des petits exercices, les. La conception fera également allusion aux Design Patterns afin de vous orienter vers les bonnes pratiques dans vos futurs programmes objets en étant capable d'utiliser des modèles existants. Vous traduisez ensuite votre travail de conception sous la forme d'un diagramme de classes UML afin de disposer d'une langage visuel commun et standardisé. Au-delà de la professionnalisation de la conception cela permet aussi au formateur de limiter les ambiguïtés d'interprétation avec les participants pour la suite de la formation.
Une fois les fondamentaux acquis (classe, propriétés, méthodes, instance, héritage, composition de classes) nous introduisons l'IA afin de vous montrer comment elle peut vous aider dans votre processus de conception. Pour cela nous vous montrerons comment écrire des prompts efficaces afin de vous assister dans vos réflexions, voir être force de proposition mais tout en vous habituant à porter un regard critique sur les réponses fournies par l'assistant IA en « gardant le contrôle ».
Afin de ne pas rester uniquement conceptuelle, la formation vous présente des exemples d'implémentation des concepts objets dans les principaux langages objets (Java et Python) ainsi que les apports des environnements de développement (IDE) pour l'utilisation des objets en programmation (Visual Studio Code, IntelliJ). Le formateur traduit, en Java par exemple, les travaux de conception objet réalisé jusque-là et dépose cet exemple dans une branche Git. Il demande à l'IA de traduire ce programme en Python et le dépose dans une autre branche afin de montrer les invariants tout en faisant passer un message d'acculturation fort sur l'IA et l'importance fondamentale de la conception par rapport à la syntaxe.
Nous proposons également de mettre en œuvre un projet simple intégrant l'IA générative basé sur 3 classes abstraites (service, question, réponse) et qui permet de soumettre un prompt à une IA générative et de récupérer le résultat dans notre application. On fait le lien également avec le concept des classes abstraites vu auparavant car il existe plusieurs sortes de prompt (textuel, sonore, etc.) pour la classe « Question » et différents types de fonction (résumé de texte, génération d'image, traduction, etc.) pour la classe « Service ». La classe « Réponse » elle contient la « chaîne de caractères » de la réponse et d'éventuelles méta-données (version, modèle de l'IA, etc.).
En fil rouge, la formation aborde la conception des structures de données et des traitements dans une approche objet d'une application web proposant un catalogue d'articles et des commandes associées. Nous cherchons à l'enrichir tout en intégrant progressivement les possibilités offertes par l'IA sans perdre de vue notre objectif pédagogique fondamental qui est de savoir concevoir une application évolutive grâce aux concepts objets. Nous faisons donc en sorte que notre application puisse facilement s'enrichir de nouveaux services (gestion de stocks, service bancaire paiement, exposition d'API, etc.) en se basant sur des classes représentatives de celles qu'on trouve dans les projets professionnels (par exemple une classe dédiée aux traitements des entrées/sorties pour les bases de données, une classe abstraite pour utiliser différents moteurs d'IA et rendre « intelligente » notre application, etc.) avec un impact minimum sur notre code grâce à nos choix de conception.