Inheritance, Polymorphism, এবং Encapsulation তিনটি মূল ধারণা যা Object-Oriented Programming (OOP) এর ভিত্তি। এই ধারণাগুলির মাধ্যমে সফটওয়্যার ডেভেলপমেন্টে কোডের পুনঃব্যবহারযোগ্যতা, ডেটা সুরক্ষা এবং লজিকের উন্নয়ন সম্ভব হয়। নিচে এই তিনটি ধারণার বিস্তারিত ব্যাখ্যা দেওয়া হলো:
১. Inheritance (উত্তরাধিকার)
Inheritance হলো একটি OOP ধারণা যা পূর্ববর্তী (parent বা superclass) ক্লাসের বৈশিষ্ট্য এবং আচরণকে (attributes and methods) একটি নতুন (child বা subclass) ক্লাসে উত্তরাধিকারসূত্রে পাওয়া। এর মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি পায় এবং কম্প্লেক্সিটি কম হয়।
ব্যবহার:
Childক্লাস একটিParentক্লাসের সকল বৈশিষ্ট্য ও আচরণ (properties and methods) পায়।Childক্লাসে অতিরিক্ত ফিচার বা কাস্টম ফাংশনালিটি যোগ করা সম্ভব হয়, যাParentক্লাসের বৈশিষ্ট্যগুলোকে পরিবর্তন না করে।
উদাহরণ:
// Parent class
class Animal {
public void makeSound() {
System.out.println("Animal makes a sound");
}
}
// Child class inheriting from Animal class
class Dog extends Animal {
public void makeSound() {
System.out.println("Dog barks");
}
}
// Main class to test Inheritance
public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
dog.makeSound(); // Output: Dog barks
}
}ব্যাখ্যা:
- এখানে,
Dogক্লাসটিAnimalক্লাসেরmakeSound()মেথডটি উত্তরাধিকারসূত্রে পেয়েছে এবং এটি কাস্টমাইজ করে নিজের মতো করে পরিবর্তন করেছে।
২. Polymorphism (পলিমরফিজম)
Polymorphism হলো OOP এর একটি ধারণা যার মাধ্যমে একই নামের মেথড বা অপারেশন বিভিন্ন ধরণের আচরণ দেখাতে পারে। এটি প্রধানত দুটি ধরনের হয়ে থাকে:
- Method Overloading: একাধিক মেথড একই ক্লাসে একই নামের সাথে কিন্তু বিভিন্ন প্যারামিটার নিয়ে থাকতে পারে।
- Method Overriding: সুপারক্লাসের মেথডকে সাবক্লাসে নতুনভাবে ইমপ্লিমেন্ট করা।
ব্যবহার:
- Polymorphism কোডের পুনঃব্যবহারযোগ্যতা বাড়ায় এবং বিভিন্ন ক্লাসের সাথে কাজ করার সময় একক ইন্টারফেসের মাধ্যমে বিভিন্ন আচরণ পাওয়া যায়।
উদাহরণ (Method Overriding):
// Parent class
class Animal {
public void makeSound() {
System.out.println("Animal makes a sound");
}
}
// Child class overriding the makeSound method
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog barks");
}
}
// Main class to test Polymorphism
public class Test {
public static void main(String[] args) {
Animal myAnimal = new Animal(); // Animal object
Animal myDog = new Dog(); // Dog object
myAnimal.makeSound(); // Output: Animal makes a sound
myDog.makeSound(); // Output: Dog barks
}
}ব্যাখ্যা:
- এখানে,
Dogক্লাসটিmakeSound()মেথডকেAnimalক্লাসেরmakeSound()মেথডেOverrideকরেছে। - একেই Method Overriding বলা হয়। ফলে,
myDogএর জন্যDogক্লাসেরmakeSound()মেথডটি কার্যকর হয়, এবংmyAnimalএর জন্যAnimalক্লাসের মেথডটি কার্যকর হয়। এটা Polymorphism এর একটি উদাহরণ।
৩. Encapsulation (এনক্যাপসুলেশন)
Encapsulation হলো একটি OOP ধারণা যা ডেটা (ভ্যারিয়েবল) এবং এর আচরণ (মেথড) একত্রে একটি ক্লাসে প্যাকেজড করে রাখে এবং ডেটার সরাসরি অ্যাক্সেসকে সীমাবদ্ধ করে। এর মাধ্যমে ডেটার সুরক্ষা নিশ্চিত করা হয় এবং ক্লাসের বাইরের কোড থেকে অপ্রয়োজনীয় বা ঝুঁকিপূর্ণ পরিবর্তন রোধ করা যায়।
ব্যবহার:
- Access Modifiers ব্যবহার করে ডেটার অ্যাক্সেস নিয়ন্ত্রণ করা হয়, যেমন
private,public, এবংprotected। - ক্লাসের বাইরের কোড থেকে ডেটার পরিবর্তন প্রতিরোধ করার জন্য getter এবং setter মেথড ব্যবহার করা হয়।
উদাহরণ:
class Person {
// Private variables, cannot be accessed directly outside this class
private String name;
private int age;
// Getter method for 'name'
public String getName() {
return name;
}
// Setter method for 'name'
public void setName(String name) {
this.name = name;
}
// Getter method for 'age'
public int getAge() {
return age;
}
// Setter method for 'age'
public void setAge(int age) {
if (age >= 0) {
this.age = age;
} else {
System.out.println("Age cannot be negative");
}
}
}
public class Test {
public static void main(String[] args) {
Person person = new Person();
person.setName("John");
person.setAge(25);
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
}
}ব্যাখ্যা:
- এখানে,
nameএবংageভ্যারিয়েবলগুলো privateভাবে ঘোষণা করা হয়েছে, যাতে এগুলোর সরাসরি অ্যাক্সেস বাইরের কোড থেকে করা না যায়। setName()এবংsetAge()মেথডের মাধ্যমে এই ভ্যারিয়েবলগুলোকে সেট করা হয় এবংgetName()এবংgetAge()মেথডের মাধ্যমে এগুলোর মান অ্যাক্সেস করা হয়। এটি Encapsulation এর একটি উদাহরণ।
সারাংশ:
- Inheritance: একটি ক্লাস তার প্যারেন্ট ক্লাসের বৈশিষ্ট্য এবং আচরণ পায়।
- Polymorphism: একই মেথড বা ফাংশন বিভিন্ন ক্লাসে বিভিন্ন আচরণ প্রদর্শন করতে পারে।
- Encapsulation: ডেটা এবং তার আচরণ একত্রে প্যাকেজ করা হয় এবং ডেটার সরাসরি অ্যাক্সেস নিয়ন্ত্রণ করা হয়।
এই তিনটি OOP ধারণা কোডের পুনঃব্যবহারযোগ্যতা, সুরক্ষা, এবং লজিকের উন্নত ব্যবহার নিশ্চিত করে, যার মাধ্যমে সফটওয়্যার ডেভেলপমেন্টে আরও কার্যকরী ও রক্ষণাবেক্ষণযোগ্য কোড লেখা সম্ভব হয়।
Read more