Loading s5obj_lang_labo_6...

enib_small.png S5-OBJ_Lang Labo_6 — Pipelines

Créer des effets visuels complexes

Au fil des laboratoires précédents, nous avons construit une véritable bibliothèque de traitement d'images.
Nous avons découvert :

Les principaux concepts de programmation orientée objet nécessaires à notre application sont désormais en place.
Dans ce laboratoire, l'objectif n'est donc plus de découvrir de nouveaux mécanismes, mais d'exploiter ceux que nous avons déjà étudiés pour enrichir notre bibliothèque de traitement d'images.
Nous allons créer de nouveaux filtres, les réutiliser dans différents pipelines et expérimenter plusieurs combinaisons afin de produire des effets visuels variés.
Vous constaterez qu'un même filtre peut être utilisé dans plusieurs pipelines et que des effets très différents peuvent être obtenus simplement en modifiant l'ordre des traitements ou leurs paramètres.

Ce laboratoire sera réalisé en autonomie pendant les UC désencadrées qui lui sont consacrées.
Vous devrez le réaliser sans encadrement spécifique, en vous appuyant sur ce document et sur les connaissances acquises lors des laboratoires précédents.
{1} Effet comic book
{2} Effet cartoon
{3} Effet aquarelle
{4} Effet peinture
{5} Effet Pop Art
{6} Effet dessin au crayon

Diagramme de classes finale.
Pour des raisons de lisibilité, le diagramme ne présente qu'une partie des filtres.
Deux d'entre eux suffisent à illustrer l'intérêt de disposer d'une abstraction commune.

Code C# obtenu à l'issue de ce laboratoire.
Program.cs
Filters.cs

Conclusion
Au fil des laboratoires, nous avons construit une véritable bibliothèque de traitement d'images orientée objet.

Cette bibliothèque repose sur quelques idées simples :

Grâce à cette architecture, de nouveaux effets peuvent être obtenus simplement en ajoutant de nouveaux filtres ou en combinant différemment ceux qui existent déjà.
Les différents pipelines réalisés montrent qu'un même ensemble de composants peut être réutilisé pour produire des rendus très variés.

Au-delà du traitement d'images, ce projet nous a permis de mettre en œuvre les principaux concepts de la programmation orientée objet : classes, encapsulation, collaborations entre objets, interfaces, polymorphisme et répartition des responsabilités.
Il illustre qu'une application complexe peut être construite à partir de composants simples, spécialisés et réutilisables, assemblés pour répondre à des besoins variés.