Katër shtyllat janë Encapsulation, Abstraction, Inheritance dhe Polymorphism. Së bashku, ato përshkruajnë se si OOP organizon dhe rillogarit kodin.
| Shtylla | Ideja qendrore |
|---|
| Encapsulation | Paketimi i të dhënave + sjellja; fshehja e gjendjes së brendshme pas një ndërfaqeje të kontrolluar |
| Abstraction | Zbulo çfarë bën një objekt, fshih si e bën |
| Inheritance | Një nënklasë rillogarit dhe përshtatin një klasë prindi |
| Polymorphism | Një ndërfaqe, shumë zbatime të zgjedhura në kohën e ekzekutimit |
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
Këto janë mjete, jo qëllime. Detyrimi i dëdimit ose abstraktimit ku nuk nevojiten krijon kompleksitet. Arritni për shtylla që përshtaten problemit.
Këto katër fjalë janë fjalori i përbashkët i dizajnit OOP — intervjumet dhe shikimet e kodit supozojnë se i njohe.
Çdo shtylla harton në një përfitim konkret: enkapsulimi mbron invariantet, abstraktion zvogëlon atë që duhet të kuptosh, dëdimi dhe polimorfizmi mundësojnë rifrytim dhe zgjatje.