Coupling
The degree of dependency between component is called coupling. If dependency is more then it is considered as tightly coupling and if dependency is less then it is considered as loosely coupling.
eg-:
class B{
static int y=C.x;
}
class C{
static int x=D.z;
}
class D{
static int z=E.m();
}
class E{
public static int m(){
return 10;
}
}
static int y=C.x;
}
class C{
static int x=D.z;
}
class D{
static int z=E.m();
}
class E{
public static int m(){
return 10;
}
}
The above component are said to be tightly coupled with each other because dependency between component is more.
Tightly coupling is not a good programming practice because it has several serious disvantages
- Without effecting remaining component, we can't modify and component and hence enhanced will become difficult.
- It subraces reusability
- if reduces maintainability of the application.
Hence, we have to maintain dependency between the components as less as possible that is loosely coupling is a good programming practice.
Cohesion
For every component a clear well define functionality is defined, then component is said to be followed high cohesion.
Low Cohesion-:In Java, cohesion refers to the degree to which the elements within a module (e.g., a class or a module) are related to each other and contribute to a single, well-defined purpose. Low cohesion occurs when a module performs multiple unrelated tasks or has elements that are not closely related. This can lead to several issues, such as increased complexity, maintainability problems, and difficulty in understanding and modifying the codebase.
High Cohesion-:In Java, high cohesion is a design principle that aims to create classes or modules that have a strong, clear, and focused purpose. Cohesion refers to how closely the elements within a module or class are related to each other. High cohesion means that the elements within the module work together and serve a single, well-defined purpose, making the module easier to understand, maintain, and modify. When a class has high cohesion, it typically indicates a well-designed and organized system.
High cohesion is always good programming practice because it has several advantages
- without effecting remaining components, we can modify any component, hence enhancement will become easy.
- It prompts reusability of the code (where ever validation is required, we can reuse the same validate servlet without rewriting.
- It improves maintainability of the application.
Note-: Loosely coupling and high cohesion are good programming practices.