Le tout est plus grand que la somme de ses parties
-Aristote

Cette citation est attribuée à Aristote. L’idée de base est celle de la synergie. Dans le livre à succès de Stephen Covey, The 7 Habits of Highly Effective People, la sixième habitude est de Synergiser. Ce qui est vrai pour les organisations l’est aussi pour l’informatique. Le corps d’un objet a plus de valeur que son individu. En informatique, nous utilisons le terme de composition.

Alors qu’entendons-nous par composition ? « La composition est l’un des concepts fondamentaux de la programmation orientée objet. Elle décrit une classe qui fait référence à un ou plusieurs objets d’autres classes dans des variables d’instance. Cela permet de modéliser une association has-a entre des objets. » C’est ainsi que Stackify le décrit ici. Pensez-y comme à un orchestre. Un seul interprète, c’est bien, mais lorsque vous avez tout le groupe ensemble, la musique est plus riche et plus profonde.

Bénéfices

Le principal avantage du code créé avec une composition appropriée est la réutilisation. Si vous le concevez correctement, il devrait être facile à réutiliser. Si ce n’est pas le cas, il peut être assez encombrant. En plus de cela, il faut une API ou interface de programmation d’application intuitive et propre. En tant que programmeur Java expérimenté, j’ai entendu de nombreuses personnes se plaindre de la conception de l’API de threading de Java. Une bonne conception devrait vous permettre de changer quelque chose en interne et ne pas changer la façon dont les autres interagissent avec elle.

Exemples

Créons un exemple pour voir à quoi ressemble la composition en Java.

Ici, nous avons notre classe Rôle définie.

La classe Rôle est utilisée dans cette classe Employé. En composition, vous diriez que la classe Employee « a-un » Role.

Hiding

Dans notre exemple d’API, les classes HotDogGrinder et HotDogGrill sont package-private et ne peuvent pas être accédées de l’extérieur.

Voici la face publique de notre API, HotDogMachine. Cette classe a une référence aux deux classes internes que nous cachons avec notre conception d’API.

Composition vs héritage

La composition et l’héritage peuvent être confondus par les développeurs. Comme Steven Lowe le souligne dans ce billet de blog ThoughtWorks, nous devons choisir avec soin lequel utiliser.

Il partage la règle empirique souvent entendue, « privilégier la composition à l’héritage ». Comme avec toute règle empirique, nous devons comprendre qu’elles ne s’appliquent pas toujours. Mettons donc quelques choses au clair avant d’aller plus loin.

Définissons l’héritage puisque nous avons déjà longuement parlé de la composition. L’héritage est l’un des fondements de la programmation orientée objet. Par exemple, si nous avons une classe de nourriture, alors la classe de pain hériterait de la classe de nourriture. Alors que la composition traite des éléments qui font partie d’une plus grande unité.

Lowe nous rappelle que lorsque vous pourriez utiliser l’un ou l’autre, nous devons poser deux questions différentes. Premièrement, « La représentation/implémentation des concepts de votre domaine est une dimension. » Essentiellement, si les deux sont dans le même domaine, l’héritage est probablement votre meilleur pari. Deuxièmement, « La sémantique de vos concepts de domaine et leur relation les uns avec les autres est une deuxième dimension ». Les composants que vous créez commencent à transmettre à un autre cela pourrait être un signe que vous pourriez avoir besoin de reconsidérer l’utilisation de l’héritage à la place.

La composition est un grand principe dans le développement de logiciels que beaucoup d’entre nous, les professionnels, gâchent. Je l’ai fait moi-même car j’ai créé des solutions en ne l’abordant pas correctement. Une discussion rapide sur le tableau blanc avec un collègue ou l’esquisse de quelque chose sur une feuille de papier peut vous aider à comprendre quand il y a une relation « has-a » entre deux objets. Après avoir lu ce document, vous devriez également en comprendre les avantages et savoir comment l’utiliser dans un exemple. Essayez de construire quelques exemples et de l’utiliser alors vous devriez savoir si vous êtes sur la bonne voie ou peut-être que l’héritage pourrait être une meilleure voie.

Check out more great content and subscribe at MyITCareerCoach.com

admin

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

lg