অ্যাবস্ট্রাকশন (Abstraction) এবং ইন্টারফেস (Interface) হলো অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের (OOP) দুটি গুরুত্বপূর্ণ ধারণা। অ্যাবস্ট্রাকশন ব্যবহার করে একটি প্রোগ্রামের জটিল অংশগুলোকে লুকানো হয় এবং প্রয়োজনীয় অংশগুলো প্রদর্শন করা হয়। ইন্টারফেসের মাধ্যমে বিভিন্ন ক্লাসে সাধারণ ফাংশনালিটি সংজ্ঞায়িত করা যায় যা পরবর্তীতে বিভিন্ন ক্লাসে বাস্তবায়িত হয়।
অ্যাবস্ট্রাকশন (Abstraction)
অ্যাবস্ট্রাকশন হলো প্রোগ্রামের জটিল অংশগুলো লুকিয়ে রেখে প্রয়োজনীয় অংশগুলো দেখানোর কৌশল। এটি প্রোগ্রামের এমন অংশের ওপর ফোকাস করে যা প্রোগ্রাম ব্যবহারকারীদের জন্য গুরুত্বপূর্ণ, আর অন্যান্য জটিল বিষয়গুলো আড়ালে রাখা হয়।
অ্যাবস্ট্রাকশন কিভাবে কাজ করে?
Java-তে অ্যাবস্ট্রাকশন করতে abstract ক্লাস এবং ইন্টারফেস ব্যবহার করা হয়। অ্যাবস্ট্রাকশন দ্বারা প্রোগ্রামের জটিল অংশ লুকিয়ে রেখে শুধুমাত্র প্রয়োজনীয় অংশগুলো প্রকাশ করা যায়।
Abstract ক্লাস
abstract ক্লাস হলো এমন একটি ক্লাস যার মধ্যে abstract এবং non-abstract উভয় ধরনের মেথড থাকতে পারে। abstract মেথড এমন একটি মেথড যেটির শুধু ডিক্লারেশন থাকে, কিন্তু কোনো ইমপ্লিমেন্টেশন থাকে না। এই মেথডের ইমপ্লিমেন্টেশন পরে সাবক্লাসে প্রদান করা হয়।
উদাহরণ:
// Abstract ক্লাস
abstract class Vehicle {
// Abstract মেথড
public abstract void start();
// Non-abstract মেথড
public void stop() {
System.out.println("Vehicle stopped.");
}
}
// চাইল্ড ক্লাস যা abstract মেথড ইমপ্লিমেন্ট করে
class Car extends Vehicle {
@Override
public void start() {
System.out.println("Car started.");
}
}
public class Main {
public static void main(String[] args) {
Car myCar = new Car();
myCar.start(); // আউটপুট: Car started.
myCar.stop(); // আউটপুট: Vehicle stopped.
}
}
ব্যাখ্যা:
Vehicleহলো একটি abstract ক্লাস, যার মধ্যে একটিabstractমেথডstart()এবং একটি সাধারণ মেথডstop()রয়েছে।Carক্লাসVehicleকে ইনহেরিট করে এবংstart()মেথড ইমপ্লিমেন্ট করে।
ইন্টারফেস (Interface)
ইন্টারফেস হলো এমন একটি রেফারেন্স টাইপ যা শুধু মেথডের সিগনেচার (declaration) সংজ্ঞায়িত করে। ইন্টারফেসের মেথডগুলোর কোনো ইমপ্লিমেন্টেশন থাকে না। যেকোনো ক্লাস ইন্টারফেসকে ইমপ্লিমেন্ট করে তার মেথডগুলোর ইমপ্লিমেন্টেশন প্রদান করে।
ইন্টারফেস কিভাবে কাজ করে?
Java-তে interface কীওয়ার্ড ব্যবহার করে ইন্টারফেস তৈরি করা হয়। ইন্টারফেস একধরনের সম্পূর্ণ অ্যাবস্ট্রাকশন প্রদান করে, কারণ এতে শুধুমাত্র মেথডের সিগনেচার থাকে এবং কোনো ইমপ্লিমেন্টেশন থাকে না।
উদাহরণ:
// ইন্টারফেস
interface Vehicle {
void start();
void stop();
}
// Car ক্লাস যা Vehicle ইন্টারফেসকে ইমপ্লিমেন্ট করে
class Car implements Vehicle {
@Override
public void start() {
System.out.println("Car started.");
}
@Override
public void stop() {
System.out.println("Car stopped.");
}
}
public class Main {
public static void main(String[] args) {
Car myCar = new Car();
myCar.start(); // আউটপুট: Car started.
myCar.stop(); // আউটপুট: Car stopped.
}
}
ব্যাখ্যা:
Vehicleইন্টারফেসেstart()এবংstop()মেথড ডিক্লারেশন রয়েছে।Carক্লাসVehicleইন্টারফেসকে ইমপ্লিমেন্ট করে এবংstart()এবংstop()মেথডের ইমপ্লিমেন্টেশন প্রদান করে।
অ্যাবস্ট্রাকশন বনাম ইন্টারফেসের পার্থক্য
| বৈশিষ্ট্য | Abstract ক্লাস | ইন্টারফেস |
|---|---|---|
| মেথড টাইপ | Abstract এবং non-abstract মেথড উভয়ই থাকতে পারে | শুধুমাত্র abstract মেথড থাকে (Java 8 পর্যন্ত) |
| ফিল্ড টাইপ | ভেরিয়েবল থাকতে পারে | শুধুমাত্র public static final কনস্ট্যান্ট থাকে |
| ইনহেরিটেন্স | একাধিক abstract ক্লাস ইনহেরিট করা যায় না | একাধিক ইন্টারফেস ইমপ্লিমেন্ট করা যায় |
| ব্যবহার | সাধারণ এবং নির্দিষ্ট বৈশিষ্ট্য সংজ্ঞায়িত করতে | সম্পূর্ণ অ্যাবস্ট্রাকশন এবং বহুল ব্যবহারযোগ্যতা |
| কীওয়ার্ড | abstract এবং extends | interface এবং implements |
অ্যাবস্ট্রাকশন এবং ইন্টারফেস কেন ব্যবহার করা হয়?
- কোড পুনরায় ব্যবহারযোগ্যতা বৃদ্ধি: অ্যাবস্ট্রাকশন এবং ইন্টারফেসের মাধ্যমে কোডকে মডুলার করে রাখা যায়।
- কোডের স্থিতিশীলতা: অ্যাবস্ট্রাকশন এবং ইন্টারফেসের ব্যবহার কোডের জটিলতা কমায় এবং বিভিন্ন অংশকে স্বাধীন করে।
- প্রবাহ নিয়ন্ত্রণ ও নিরাপত্তা বৃদ্ধি: প্রোগ্রামের প্রয়োজনীয় অংশ ব্যবহারকারীর সামনে দেখানো হয় এবং অপ্রয়োজনীয় অংশগুলো আড়ালে থাকে।
- বহু-প্রকার ব্যবহার: ইন্টারফেসের মাধ্যমে একই কাজ একাধিক ক্লাসে আলাদাভাবে ইমপ্লিমেন্ট করা যায়।
সংক্ষেপে
- অ্যাবস্ট্রাকশন: প্রোগ্রামের জটিলতা লুকিয়ে রেখে প্রয়োজনীয় অংশ প্রকাশ করা।
- Abstract ক্লাস: একসাথে abstract ও non-abstract মেথড রাখতে পারে।
- ইন্টারফেস: সম্পূর্ণ অ্যাবস্ট্রাকশন প্রদান করে এবং শুধুমাত্র মেথডের সিগনেচার ধারণ করে।
অ্যাবস্ট্রাকশন এবং ইন্টারফেস OOP প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ অংশ, যা কোডের পুনরায় ব্যবহারযোগ্যতা, মডুলারিটি এবং স্থিতিশীলতা বাড়াতে সহায়তা করে।
Read more