I quattro pilastri sono Encapsulation, Abstraction, Inheritance e Polymorphism. Insieme descrivono come la OOP organizza e riutilizza il codice.
| Pillar | Idea centrale |
|---|
| Encapsulation | Raggruppa dati + comportamento; nascondi lo stato interno dietro un'interfaccia controllata |
| Abstraction | Esponi cosa fa un oggetto, nascondi come lo fa |
| Inheritance | Una sottoclasse riutilizza ed estende una classe padre |
| Polymorphism | Un'interfaccia, molte implementazioni scelte a runtime |
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
Questi sono strumenti, non obiettivi. Forzare l'ereditarietà o l'astrazione dove non servono crea complessità. Usa il pilastro che si adatta al problema.
Queste quattro parole sono il vocabolario condiviso della progettazione OOP — le interviste e le code review presuppongono che le conosca.
Ogni pilastro corrisponde a un beneficio concreto: l'incapsulamento protegge gli invarianti, l'astrazione riduce ciò che devi capire, l'ereditarietà e il polimorfismo abilitano il riutilizzo e l'estensibilità.
Una raccolta di domande di colloquio IT con risposte dettagliate — da Junior a Senior.
Dona