Cztery filary to Encapsulation, Abstraction, Inheritance i Polymorphism. Razem opisują, jak OOP organizuje i ponownie wykorzystuje kod.
| Filar | Główna idea |
|---|
| Encapsulation | Zabuduj dane + zachowanie; ukryj stan wewnętrzny za kontrolowanym interfejsem |
| Abstraction | Ujawniaj co robi obiekt, ukrywaj jak to robi |
| Inheritance | Podklasa ponownie wykorzystuje i rozszerza klasę nadrzędną |
| Polymorphism | Jeden interfejs, wiele implementacji wybieranych w czasie wykonania |
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 są narzędzia, nie cele. Wymuszanie dziedziczenia lub abstrakcji tam, gdzie nie są potrzebne, tworzy złożoność. Wybierz filar, który pasuje do problemu.
Te cztery słowa to wspólny słownictwo projektowania OOP — rozmowy kwalifikacyjne i przeglądy kodu zakładają, że je znasz.
Każdy filar odnosi się do konkretnej korzyści: hermetyzacja chroni niezmienniki, abstrakcja zmniejsza to, co musisz zrozumieć, dziedziczenie i polimorfizm umożliwiają ponowne wykorzystanie i rozszerzalność.
Biblioteka pytań rekrutacyjnych IT ze szczegółowymi odpowiedziami — od Juniora do Seniora.
Wesprzyj