Abstrakcja w informatyce
Abstrakcja to forma uproszczenia analizowanego problemu, która polega na ograniczeniu zakresu cech obiektów do tych kluczowych dla algorytmu, niezależnych od konkretnej implementacji. W tym kontekście, abstrakcja można traktować jako rodzaj formalizmu matematycznego. Główne cele stosowania abstrakcji to ułatwienie rozwiązania problemu oraz zwiększenie jego ogólności.
Języki programowania, w szczególności te obiektowe, mogą oferować specjalne narzędzia do tworzenia określonych typów abstrakcji. Należy jednak podkreślić, że pojęcie to nie jest związane z żadnym konkretnym językiem. Każde uogólnienie problemu, które ma na celu wyodrębnienie jego kluczowych aspektów, stanowi abstrakcję.
Na przykład, dany program komputerowy może przetwarzać różne zbiory obiektów, które mimo różnic mają wspólną cechę – w określonych warunkach można je traktować jako listę z następującymi operacjami: pierwszy(), ostatni(), następny() oraz predykatem czy_ostatni(). W związku z tym, dla fragmentów zajmujących się przetwarzaniem list, wprowadzenie abstrakcji iteratora, która udostępnia te operacje, jest wygodne. W języku Java, deklaracja interfejsu realizującego tę abstrakcję mogłaby wyglądać w ten sposób:
W przeciwieństwie do tego, w języku Python nie ma potrzeby formalnej deklaracji; kod przetwarzający listy po prostu odwołuje się do odpowiednich metod obiektu:
W rzeczywistości, w Pythonie abstrakcja iteratora jest wbudowana w język, co pozwala na przepisanie powyższego fragmentu w prostszy sposób:
Pętla for zastosowana w tym przypadku doskonale ilustruje przydatność abstrakcji – pomijając wszelkie charakterystyczne cechy przetwarzanych kolekcji obiektów, for może z powodzeniem obsługiwać każdy z nich, pod warunkiem, że dany typ implementuje odpowiedni zestaw operacji. Dzięki temu for można stosować do list, słowników, krotek, zbiorów itd. Równocześnie unika się angażowania w szczegóły implementacji, które nie są istotne dla rozwiązywanego problemu, takie jak przeglądanie kolekcji obiektów.
Inne zastosowania
Termin „abstrakcja” jest również używany w informatyce do określenia pokrewnej, choć nie identycznej techniki ukrywania implementacji za pomocą wspólnego interfejsu, który może korzystać z różnych bibliotek w celu osiągnięcia pożądanej funkcjonalności. Można więc mówić o abstrakcji bazy danych, mając na myśli kod, który dostosowuje interfejs konkretnej bazy danych do wspólnej formy, oczekiwanej przez program.
W praktyce wiele popularnych bibliotek, zwłaszcza biblioteki standardowe oraz te, które ułatwiają pisanie przenośnych programów, stanowią przykłady użytecznych abstrakcji, zarówno w pierwszym, jak i w drugim znaczeniu tego terminu.