239 votes

Que signifie "faible taux de couplage et fort taux de cohésion" ?

J'ai du mal à comprendre la déclaration low in coupling and high in cohesion . J'ai fait des recherches sur Internet et lu beaucoup de choses à ce sujet, mais j'ai toujours du mal à comprendre.

Ce que je comprends, c'est que High cohesion signifie que nous devrions avoir des classes qui sont spécialisées pour exécuter une fonction particulière. J'espère que c'est correct ? Comme une classe de validation de carte de crédit, qui est spécialisée pour valider uniquement les cartes de crédit.

Et vous ne comprenez toujours pas ce que signifie un couplage faible ?

4 votes

Pour une explication plus détaillée, vous pouvez préférer la réponse de ce post Cohésion et couplage

0 votes

Cette réponse est certainement meilleure et plus concise que celles données ici.

0 votes

En fait, il s'agit d'un doublon. Answer by Infinity est le seul doublon qui n'a pas été mentionné jusqu'à présent.

8voto

CardCastle Studio Points 266

Cohésion - à quel point tout est étroitement lié les uns aux autres.
Accouplement - comment tout est connecté les uns aux autres.

Prenons un exemple : nous voulons concevoir une voiture à conduite autonome.

(1) Nous avons besoin du moteur pour fonctionner correctement.

(2) Nous avons besoin que la voiture roule toute seule.

Toutes les classes et fonctions de (1) démarrer le moteur et le faire tourner fonctionnent très bien ensemble, mais n'aident pas la voiture à se diriger. Nous plaçons donc ces classes derrière un contrôleur de moteur.

Toutes les classes et fonctions de (2) fonctionnent parfaitement pour que la voiture se dirige, accélère et freine. Elles n'aident pas la voiture à démarrer ou à envoyer de l'essence aux pistons. Nous plaçons donc ces classes derrière son propre contrôleur de conduite.

Ces contrôleurs sont utilisés pour communiquer avec toutes les classes et fonctions disponibles. Les contrôleurs ne communiquent ensuite qu'entre eux. Cela signifie que je ne peux pas appeler une fonction de la classe du piston depuis la classe de la pédale d'accélérateur pour que la voiture aille plus vite.

La classe des pédales doit demander au contrôleur de conduite de parler au contrôleur du moteur qui demande alors à la classe des pistons d'aller plus vite. Cela nous permet, à nous programmeurs, de trouver les problèmes et de combiner de gros programmes sans nous inquiéter. Ceci est dû au fait que tout le code fonctionne derrière le contrôleur.

6voto

KJ Sudarshan Points 378

Prenons l'exemple d'une vieille carte mère de PC.

  • La souris avait son propre port PS/2.
  • L'imprimante avait son propre port d'imprimante.
  • Le moniteur avait son propre port VGA.

Cela signifie qu'un port particulier n'était destiné qu'à un appareil particulier, et à aucun autre.

C'est Couplage fort / élevé

Étant donné qu'une souris ne sert qu'à actionner le curseur et les fonctionnalités connexes, qu'un clavier sert à taper les touches, etc., c'est-à-dire qu'ils n'effectuent que la tâche pour laquelle ils sont prévus, c'est Cohésion élevée

Si une souris a quelques boutons 'a', 'b', 'c' pour entrer, alors elle fait plus que ce qu'elle devrait faire, puisqu'un clavier le fait déjà, c'est Faible cohésion

L'utilisation désuète de ports exclusifs a heureusement été remplacée par une norme (interface) que nous appelons USB . C'est Accouplement lâche / faible

En regardant ces attributs physiques, il semble évident que c'est ainsi que cela doit être, mais lors de l'écriture d'un logiciel, il est très facile de perdre la trace de la fonctionnalité qui doit être placée où, etc. et donc comme un rappel, dans tout dans la vie, toujours s'en tenir :

Cohésion élevée et couplage lâche".

5voto

David I. Samudio Points 449

Métaphoriquement, si votre chat aboiements il a pauvre cohésion, et si votre chien besoins un chat à ses côtés pour aboyer, il est hautement couplé.

"Les chiens aboient et les chats ronronnent, s'ils vomissent, votre demande sera rejetée".

1 votes

Ce devrait être la meilleure réponse !

4voto

wonderwall Points 104

Pour faire court, j'ai compris que le couplage faible signifiait que les composants pouvaient être remplacés sans affecter le bon fonctionnement d'un système. En gros, modulez votre système en composants fonctionnels qui peuvent être mis à jour individuellement sans casser le système.

1 votes

N'est-ce pas la même chose qu'une forte cohésion ?

4voto

Clarius Points 167

Vous avez un téléphone intelligent ? Y a-t-il une seule grande application ou beaucoup de petites ? Une application répond-elle à une autre ? Pouvez-vous utiliser une application tout en installant, mettant à jour et/ou désinstallant une autre ? La cohésion est élevée lorsque chaque application est autonome. Que chaque application soit indépendante des autres est un couplage faible. DevOps privilégie cette architecture car elle permet d'effectuer des déploiements continus discrets sans perturber l'ensemble du système.

0 votes

>Est-ce qu'une application répond à une autre ? . . et bien oui, certaines le font. De nombreuses applications utilisent l'application Appareil photo, l'application Entraînement transmet les données relatives au cœur et à l'entraînement à Santé et Activités. Je peux partager un extrait d'une application avec plusieurs autres. Mon application d'alarme connaît l'heure et joue un morceau de l'application Musique...

0 votes

@MaxHodges cette chose (faible cohésion et couplage élevé) est dépréciée et devrait être minimisée dans la mesure du possible. Dans certains cas, comme vous l'avez mentionné. Il n'est pas possible de l'éliminer complètement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X