Neljä pilaria ovat Encapsulation, Abstraction, Inheritance ja Polymorphism. Yhdessä ne kuvaavat, kuinka OOP organisoi ja uudelleenkäyttää koodia.
Neljä pilaria ovat Encapsulation, Abstraction, Inheritance ja Polymorphism. Yhdessä ne kuvaavat, kuinka OOP organisoi ja uudelleenkäyttää koodia.
| Pilari | Ydinajatus |
|---|
| Encapsulation | Yhdistä data + käyttäytyminen; piilota sisäinen tila hallitun rajapinnan takana |
| Abstraction | Näytä mitä objekti tekee, piilota kuinka se sen tekee |
| Inheritance | Aliluokka uudelleenkäyttää ja laajentaa yläluokkaa |
| Polymorphism | Yksi rajapinta, monia toteutuksia valittuna ajonaikaisesti |
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
Nämä ovat välineitä, ei tavoitteita. Periytymisen tai abstraktion pakottaminen tilanteisiin, joissa niitä ei tarvita, luo monimutkaisuutta. Valitse pilari, joka sopii ongelmaan.
Nämä neljä sanaa ovat OOP-suunnittelun yhteinen sanasto — haastattelut ja code review -prosessit olettavat, että tunnet ne.
Jokaisella pilarilla on konkreettinen hyöty: encapsulation suojelee invariantteja, abstraction vähentää sitä, mitä sinun on ymmärrettävä, inheritance ja polymorphism mahdollistavat uudelleenkäytön ja laajennettavuuden.