Md Obydullah Follow I'm Md Obydullah. I build open-source projects and write about Laravel, Linux server, modern JavaScript and web development.

Understanding OOP Concepts: Coupling

Published on February 28, 2020 52 sec read

Today we’ll try to get the idea of Coupling. Let’s get started:

Table of Contents

  1. Coupling
  2. Tight Coupling
  3. Loose Coupling

Coupling

Coupling is a situation where an object can be used by another object. It can also be termed as collaboration.

There are two types of coupling:

  1. Tight Coupling
  2. Loose Coupling

Tight Coupling

We can say tight coupling is when a group of classes are highly dependent on one another. It’s a bad programming design. Let’s see an example:

class Volume {
    public static void main(String[] args) {
        Box box = new Box(5, 10, 5);
        System.out.println(box.volume);
    }
}

class Box {
    public int volume;

    Box(int length, int width, int height) {
        this.volume = length * width * height;
    }
}

In the above example, Volume & Box classes are independent. But there is a strong inter-dependency between the classes. If there is any change in Box class then they reflect in the result of class Volume.

Loose Coupling

We can say loose coupling is when an object gets the object to be used from external sources. It’s a good programming design. Let’s see an example:

class Volume {
    public static void main(String[] args) {
        Box box = new Box(5, 10, 5);
        System.out.println(box.getVolume());
    }
}

final class Box {
    private int volume;

    Box(int length, int width, int height) {
        this.volume = length * width * height;
    }

    public int getVolume() {
        return volume;
    }
}

In the above example, if we change anything in the Box class then we don’t have to change anything in Volume class. There is no dependency between the classes.

You're welcome to suggest any article to write!

Md Obydullah Follow I'm Md Obydullah. I build open-source projects and write about Laravel, Linux server, modern JavaScript and web development.

Leave a Reply

Your email address will not be published. Required fields are marked *