चार स्तंभ म्हणजे Encapsulation, Abstraction, Inheritance, आणि Polymorphism. एकत्रितपणे, ते OOP कोड कसे संघटित करते आणि पुन्हा वापरते याचे वर्णन करतात.
| Pillar | मूळ विचार |
|---|
| 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
हे साधने आहेत, लक्ष्य नाहीत. इनहेरिटन्स किंवा अॅबस्ट्रॅक्शन जेथे आवश्यक नाही तेथे लागू केल्यास जटिलता निर्माण होते. समस्येला अनुरूप असलेल्या स्तंभचा वापर करा.
ही चार शब्दे OOP डिজाइनची सामायिक शब्दावली आहेत — मुलाखत आणि कोड पुनरावलोकने असे गृहीत धरतात की आपल्याला हे माहित आहे.
प्रत्येक स्तंभ एक ठोस लाभाचा नकाशा तयार करते: कॅप्सुलेशन अपरिवर्तनीयांची संरक्षण करते, अॅबस्ट्रॅक्शन आपल्याला समजून घेणे आवश्यक आहे त्याचे कमी करते, इनहेरिटन्स आणि पॉलिमॉर्फिজम पुन्हा वापर आणि विस्तारशीलता सक्षम करतात.