Loading s5obj_lang_labo_3...

enib_small.png S5-OBJ_Lang Labo_3 — Collaborations : dépendence et composition

À l'issue de cette séance, vous devrez être capables de :

Jusqu'à présent, nous avons construit deux nouveaux types :
Nous sommes aussi capables de charger, modifier et sauvegarder des images.

Il est maintenant temps d'ajouter les premiers traitements d'image, qui constituent l'objectif principal de cette bibliothèque.
Les traitements appliqués à une image sont souvent implémentés sous la forme de filtres.
Chaque filtre réalise une transformation particulière de l'image.

Nous commencerons par implémenter un premier filtre : la conversion en niveaux de gris.
{1 #grayfilter } Convertir en niveaux de gris : GrayFilter
{2 #apply_gray } Appliquer le filtre à une image
{3 #dependance } Une première relation entre objets : la dépendence
{4} Organiser le traitement des images
{5} Processeur d'images : ImageProcessor
{6 #composition } Une nouvelle relation : la composition
{7} Comparaison avec Rust

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

À retenir.
La programmation orientée objet ne consiste pas uniquement à créer des classes.
Elle consiste également à organiser les responsabilités et les collaborations entre les objets.

Répartition des responsabilités
Une bonne conception consiste à attribuer à chaque classe une responsabilité claire.
Dans notre application :
Cette séparation facilite la compréhension, la maintenance et l'évolution du programme.

Collaborations entre les objets
Nous avons également étudié deux relations fondamentales entre objets :

Dépendance
Une dépendance apparaît lorsqu'un objet utilise temporairement un autre objet pour réaliser une tâche.

Composition
Une composition apparaît lorsqu'un objet est constitué d'un autre objet.
La composition correspond à une collaboration forte entre deux objets :

Les concepts objets restent les mêmes d'un langage à l'autre.
En revanche, chaque langage propose des mécanismes différents pour les exprimer.
Certaines propriétés doivent être assurées par le concepteur, tandis que d'autres peuvent être garanties directement par le langage.