« Bonjour, Amigo ! J'aimerais te parler d'un autre avantage de la POO. Tu vois, les programmes ressemblent plus à des animaux qu'à des bâtiments. Ils ne sont pas construits, ils sont élevés. Le développement signifie des changements constants. En construction, tu peux avoir un bon plan et le suivre à la lettre. Mais en développement logiciel, ce n'est pas le cas. »

Très souvent, tu ne peux pas faire quelque chose comme tu le voudrais, et tu dois beaucoup retravailler tes programmes. Et encore plus souvent, les exigences du client changent.

« Mais si le client a fourni un cahier des charges très détaillé ? »

« Observons ce qui se passe au fil du temps. Si un produit réussit, le client voudra sortir une nouvelle version, puis une autre, puis encore une autre. Et bien sûr, cela nécessitera d'apporter quelques 'petits changements' au produit existant. Le développement logiciel n'est qu'une longue série de changements. Seule la cadence varie. Une nouvelle version peut être publiée chaque semaine, une fois par mois ou deux fois par an. »

« Alors que devons-nous conclure de tout cela ? »

« La structure interne du produit doit être maintenue d'une façon qui permette aux changements majeurs (et mineurs) d'être apportés avec un minimum de retravail. »

« Comment est-ce qu'on s'y prend ? »

« Nous avons déjà parlé de la façon dont un programme était composé d'objets qui interagissent les uns avec les autres. Utilisons de gros points pour représenter tous les objets de notre programme sur le tableau. Nous allons dessiner des flèches de chaque objet (point) vers tous les objets (points) avec lesquels il interagit. »

Maintenant, nous allons rassembler les objets (points) en groupes. Les points appartiennent à un même groupe s'ils sont beaucoup plus connectés entre eux qu'avec les autres points. Si la plupart des flèches d'un point vont vers des points de son groupe, alors nous avons groupé les objets correctement. On dit que les points appartenant au même groupe sont étroitement couplés, tandis que les points dans des groupes différents sont lâchement couplés.

C'est ce qu'on appelle le 'principe de couplage lâche'. Un programme est divisé en plusieurs parties, souvent des couches, dont la logique est fortement liée à leur structure interne et faiblement liée aux autres couches/parties. L'interaction entre couches est généralement très compartimentée. Une couche peut en appeler une autre seulement à l'aide d'un petit sous-ensemble de ses classes.

« C'est le même principe de 'division du travail', mais à plus grande échelle ? »

« Précisément. Cela nous permet de réorganiser un service, de le rendre plus efficace et d'engager encore plus de personnes, et si nous ne modifions pas les protocoles entre services, tous nos changements seront locaux. Personne ne doit être formé à nouveau. Nous n'avons pas à retravailler le système entier. Chaque service peut optimiser ses affaires internes de cette façon si les mécanismes d'interaction entre les services sont bien choisis. »

« S'ils sont bien choisis. Et si ce n'est pas le cas ? »

« Alors tu seras vite à court de 'marge de manœuvre' pour apporter des changements, et tu devras retravailler le système entier. Cela arrive de temps en temps. Nous ne pouvons pas prédire l'avenir, mais nous pouvons réduire le nombre de fois où nous devrons réécrire le programme. »

« OK. Je comprends l'avantage de diviser le programme comme ça, mais comment la POO entre en scène ? »

« Quand nous choisissons la façon de structurer les services et les interactions entre eux, nous appliquons le 'principe d'abstraction'. En programmation, l'abstraction est utilisée pour déterminer la meilleure façon de diviser le programme et la façon dont les parties doivent interagir. Ce principe peut également être appliqué aux éléments constitutifs encore et encore, jusqu'à ce que nous ayons décomposé notre programme en classes individuelles. »

« Et en cachant la structure interne de ces parties ainsi qu'en limitant strictement la façon dont elles interagissent avec les autres parties, nous mettons en œuvre le principe d'encapsulation, c'est ça ? »

« Exactement. L'encapsulation et l'abstraction sont les pierres angulaires de la POO. Un bon programme doit respecter ces deux principes. Plus tard, nous allons jeter un œil à d'autres principes et essayer de comprendre leurs avantages. »

« Intéressant. J'ai vraiment hâte ! »