চারটি স্তম্ভ হল Encapsulation, Abstraction, Inheritance, এবং Polymorphism। একসাথে তারা বর্ণনা করে কীভাবে OOP কোড সংগঠিত এবং পুনর্ব্যবহার করে।
| স্তম্ভ | মূল ধারণা |
|---|
| Encapsulation | ডেটা + আচরণ একসাথে বান্ডেল করা; একটি নিয়ন্ত্রিত ইন্টারফেসের পিছনে অভ্যন্তরীণ অবস্থা লুকানো |
| Abstraction | একটি অবজেক্ট কী করে তা প্রকাশ করা, কীভাবে করে তা লুকানো |
| Inheritance | একটি সাবক্লাস একটি প্যারেন্ট ক্লাস পুনর্ব্যবহার এবং সম্প্রসারণ করে |
| Polymorphism | একটি ইন্টারফেস, অনেক বাস্তবায়ন রানটাইমে নির্বাচিত |
abstract class Shape { // ABSTRACTION: "what", not "how"
abstract double area(); // each shape decides its own formula
}
class Circle extends Shape { // INHERITANCE: Circle is a Shape
private double r; // ENCAPSULATION: r is private
Circle(double r) { this.r = r; }
double area() { return Math.PI * r * r; } // POLYMORPHISM: own area()
}
class Square extends Shape {
private double s;
Square(double s) { this.s = s; }
double area() { return s * s; }
}
Shape shape = new Circle(2); // POLYMORPHISM in action:
System.out.println(shape.area()); // calls Circle.area() at runtime
এগুলি টুলস, লক্ষ্য নয়। যেখানে inheritance বা abstraction প্রয়োজন নেই সেখানে জোর করে ব্যবহার করলে জটিলতা তৈরি হয়। সমস্যার জন্য উপযুক্ত স্তম্ভটি বেছে নিন।
এই চারটি শব্দ OOP ডিজাইনের ভাগ করা শব্দভাণ্ডার — interviews এবং code reviews ধরে নেয় যে আপনি সেগুলি জানেন।
প্রতিটি স্তম্ভ একটি বাস্তব সুবিধার সাথে সম্পৃক্ত: encapsulation invariants রক্ষা করে, abstraction আপনাকে যা বুঝতে হবে তা হ্রাস করে, inheritance এবং polymorphism পুনর্ব্যবহার এবং সম্প্রসারণযোগ্যতা সক্ষম করে।n