Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Don't low coupling and high cohesion depend on each other?

Tags:

oop

uml

coupling

I am supposed to write two versions of the same code. One with low coupling and high cohesion and another still with low coupling but this time with low cohesion. I don't really understand what the difference is? How can I have low coupling and low cohesion? They seem so related that this is impossible to do.

Can someone explain this? Perhaps with an example? Thanks!

like image 313
qwerty qwerty Avatar asked Oct 31 '22 06:10

qwerty qwerty


1 Answers

In short:

Cohesion in software engineering, as in real life, is how much the elements consisting a whole(in our case let's say a class) can be said that they actually belong together. Thus, it is a measure of how strongly related each piece of functionality expressed by the source code of a software module is.

One way of looking at cohesion in terms of OO is if the methods in the class are using any of the private attributes.

Now the discussion is bigger than this but High Cohesion (or the cohesion's best type - the functional cohesion) is when parts of a module are grouped because they all contribute to a single well-defined task of the module.

Coupling in simple words, is how much one component (again, imagine a class, although not necessarily) knows about the inner workings or inner elements of another one, i.e. how much knowledge it has of the other component.

Loose coupling is a method of interconnecting the components in a system or network so that those components, depend on each other to the least extent practically possible…

In long:

I wrote a blog post about this. It discusses all this in much detail, with examples etc. It also explains the benefits of why you should follow these principles. I think it could help...

like image 95
TheBoyan Avatar answered Nov 26 '22 20:11

TheBoyan