Logo David Burdelak
Słownik · Programowanie i wzorce projektowe

Co to jest abstrakcja?

Ostatnia aktualizacja:

Abstrakcja (abstraction) to zasada projektowania polegająca na skupieniu się na tym, co obiekt robi, a nie jak to robi. Wyodrębnia istotne cechy i ukrywa szczegóły, dzięki czemu użytkownik klasy lub funkcji nie musi znać jej wnętrza, by z niej korzystać.

Abstrakcja w kodzie

Wyraża się ją przez interfejsy i klasy abstrakcyjne. Interfejs Magazyn z metodami zapisz() i odczytaj() nie mówi, czy dane lądują na dysku, w bazie czy w chmurze. Klienci zależą od ogólnego kontraktu, a nie od szczegółów.

Abstrakcja a hermetyzacja

Hermetyzacja ukrywa dane i wnętrze obiektu, a abstrakcja upraszcza sposób myślenia o nim, pokazując tylko to, co istotne. Obie idą w parze: ukryte szczegóły umożliwiają prosty interfejs.

Granice abstrakcji

Zbyt wczesne lub nadmierne abstrahowanie prowadzi do warstw, które niczego nie upraszczają. Dobra abstrakcja jest wynikiem zrozumienia problemu, a nie zgadywania przyszłych potrzeb.

Przykład: abstrakcja płatności

Sklep może zdefiniować interfejs BramkaPlatnosci z metodą zaplac(). Kod zamówień wywołuje tylko ten interfejs, a konkretne klasy obsługują różne operatory płatności. Dodanie nowej bramki nie zmienia logiki zamówień. Jednocześnie sam interfejs powinien opisywać potrzeby sklepu, a nie kopiować API jednego dostawcy, bo wtedy abstrakcja nie chroni przed zmianą.

Powiązane pojęcia

Wszystkie hasła z kategorii Programowanie i wzorce projektowe