Štirje stebri so Encapsulation, Abstraction, Inheritance in Polymorphism. Skupaj opisujejo, kako OOP organizira in ponovno uporabi kodo.
| Steber | Temeljno zamisel |
|---|
| Encapsulation | Povezovanje podatkov in vedenja; skrivanje notranjega stanja za nadzorovanim vmesnikom |
| Abstraction | Razkrij kaj objekt naredi, skrij kako to naredi |
| Inheritance | Podrazred ponovno uporablja in razširja nadrazred |
| Polymorphism | Ena sučelje, več implementacij izbranih med izvajanjem |
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
To so orodja, ne cilji. Forsiranje dedovanja ali abstrakcije, kjer niso potrebni, povzroči kompleksnost. Posegni po stebru, ki se prilega problemu.
Ta štiri besede so skupni besednjak OOP oblikovanja — intervjuji in pregledi kode predpostavljajo, da jih poznaš.
Vsak steber se preslika na konkretno korist: encapsulation ščiti invariante, abstrakcija zmanjša, kar moraš razumeti, dedovanje in polimorfizem omogočata ponovno uporabnost in razširljivost.