Cohésion et Découplage, que représentent-ils?
-
04-10-2019 - |
Question
Qu'est-ce que sont la cohésion et Découplage? J'ai trouvé des informations sur le couplage, mais pas de découplage.
La solution
Cet article d'Aaron est très bon pour la compréhension, aussi je vous recommande de lire les publications Printemps en action livre , ils donnent de très bons exemples sur la façon dont le printemps résout ce problème, il va certainement améliorer votre compréhension de ce sujet.
EDIT:
Je suis tombé sur ce dans ce grand livre intitulé Growing logiciel orienté objet guidé par des tests:
Coupling:
Les éléments sont couplés si un changement de une force un changement de l'autre. Pour Par exemple, si deux classes héritent d'un parent commun, puis un changement dans un classe peut nécessiter un changement dans la autre. Pensez à un système audio combo: Il est étroitement couplé parce que si nous veulent passer de l'analogique au numérique radio, nous devons reconstruire l'ensemble système. Si nous assemblons un système de SEPARE, il aurait couplage faible et nous pourrions échanger la destinataire. « Librement » caractéristiques couplées (À savoir, ceux ayant un faible couplage) sont plus facile à maintenir.
Cohésion:
Un élément de cohésion est une mesure si ses responsabilités forment un unité significative. Par exemple, une classe qui parse les deux dates et les URL ne sont pas cohérente, parce qu'ils sont sans rapport avec concepts. Pensez à une machine lave les vêtements et la vaisselle, il est peu probable de faire les deux well.2 Au autre extrême, une classe qui parse seule la ponctuation dans une URL est peu de chances d'être cohérent, car il ne représente pas un concept. À faire quoi que ce soit fait, le programmeur trouver d'autres parseurs pour protocole, hôte, ressources, et ainsi de suite. Caractéristiques avec cohérence « haut » sont plus facile à maintenir.
Autres conseils
Cohésion - liée au principe selon lequel une classe / méthode devrait être responsable d'une chose que i.e. il n'y a pas de méthodes errants qui ne appartiennent pas à l'encapsulation; une méthode ne fait qu'une seule chose. cohésion élevée / faible est le degré auquel cela est.
Couplage - comment différentes parties interdépendantes du système sont. comment et où par exemple il y a des dépendances. Si deux classes font appel à des méthodes de l'autre ils sont couplés étroitement, comme le changement signifierait un devoir changer l'autre. Découplage est le processus de faire quelque chose qui a été étroitement couplé moins, ou pas du tout.
Des systèmes flexibles ont une grande cohésion et lâche accouplement.
Pour le couplage, cet article de Wikipedia devrait répondre à toutes vos questions. Offres de cet article avec la cohésion.
« Découplage » est juste un autre nom pour « petit / couplage faible ».
Alors ces termes répondre à ces questions:
- Comment bien chaque partie de votre projet dépend d'une autre partie?
- Si vous voulez utiliser juste une partie de votre projet (comme pour résoudre un problème spécifique) combien vous devez savoir sur tout le reste du projet?
- Est chaque partie de votre projet était axé sur une seule solution à un problème spécifique ou ne solutions « fuite » à d'autres parties?
Voici mes réflexions sur la cohésion. Imaginez il y a un module. A l'intérieur de ce module, nous avons quelques tâches. Lorsque ces tâches sont étroitement liées les unes aux autres, on dit qu'elle a une forte cohésion. Lorsque ces tâches ne sont pas liés, on dit qu'elle a une faible cohésion. Ma meilleure tentative d'expliquer le découplage est que le découplage est le fait d'enlever le couplage.
faible couplage nous aide à obtenir une forte cohésion! Rappelez-vous que nous voulons que notre module ont des tâches connexes et une responsabilité unique. Mais qu'est-ce couplage? Le couplage est le degré de dépendance à l'égard d'autres modules pour atteindre notre responsabilité unique pour ce module. Donc, par couplage faible, nous disons que nous ne sommes pas très dépendants des modules externes d'où nous avons une forte cohésion.
Cependant, si nous avons beaucoup de dépendances aux modules externes, nous aurions élevé de couplage et une faible cohésion. Recevez votre article?
D'autres penseurs plus décorés et les groupes disent:
La cohésion est le degré auquel les tâches effectuées par un seul module sont fonctionnellement liés. « IEEE 1983 » la cohésion est la « colle » qui tient un module ensemble. Il peut être considéré comme le type d'association entre les éléments constitutifs d'un module. En général, on veut le plus haut niveau de cohésion possible. » Bergland, 1981
Un composant logiciel est dite présenter un degré élevé de cohésion si les éléments de cette unité présentent un degré élevé de parenté fonctionnelle. Cela signifie que chaque élément de l'unité de programme devraient être essentielles pour cette unité pour atteindre son but. Sommerville, 1989
découplage permet la séparation de l'interaction de l'objet à partir des classes et des successions en couches distinctes d'abstraction utilisées pour polymorphique-allié découpler l'encapsulation qui est la pratique consistant à utiliser réutilisable code pour empêcher les modules de code distincts d'interagir les uns avec les autres.