Zacznijmy od zera. Po pierwsze, czym tak naprawdę jest abstrakcja?
Problem / motyw
Podczas programowania często musisz rozwiązywać bardzo szczegółowe problemy.
Podstawowym motywem abstrakcji jest sytuacja, w której program traktuje cały problem jako jedną całość, z wieloma dyskretnymi drobiazgami, które wymagają uwagi i zrozumienia. Problem polega na tym, że ludziom trudno jest przetwarzać tak ogromne ilości danych na raz.
Rozwiązanie: abstrakcja
Abyś mógł zrozumieć, czego potrzebujesz, aby zrealizować swój pomysł , wyodrębniasz szczegółowe rozwiązania w uproszczonych abstrakcjach .
Na przykład spójrzmy na ORM (Object-Relational Mapping), w którym SQL jest abstrakcyjny na obiekty.
Aby wstawić nowy element do bazy danych bez abstrakcji, programista musi znać SQL. Aby wstawić nowy element, programista musi zapamiętać składnię SQL do wstawiania nowego elementu do tabeli:
INSERT INTO Items (field1, field2) VALUES (value1, value2)
Ale z abstrakcji, tylko programista musi zdawać sobie sprawę z idei tego, co chce zrobić. Abstrakcja obiektowa może wyglądać następująco:
Item item = new Item(value1, value2)
Możesz nawet pójść nieco dalej i pomyśleć o tym, że sam SQL jest ogromną abstrakcją dla mnóstwa wyrafinowanych struktur i algorytmów przechowywania danych, które są w pełni na wyciągnięcie ręki w cenie nauki prostego języka deklaratywnego.
Przeciwieństwo abstrakcji
W oparciu o to, co zdefiniowaliśmy teraz, że abstrakcja naprawdę polega na tym, aby wystarczająca była tylko znajomość kwintesencji koncepcji, możemy łatwo wywnioskować, że przeciwieństwem abstrakcji jest w rzeczywistości ezoteryka , w której użycie lub zrozumienie wymaga posiadania pewnego rodzaju specjalistycznej wiedzy na temat osobliwości podmiotu.