Encapsulation vs. Abstraction
Enkapsulacja i abstrakcja to dwa różne, ale powiązane pojęcia występujące w językach OOP (Object Oriented Programming). Hermetyzacja to koncepcja łączenia danych i zachowania razem jako pojedynczej jednostki. Z drugiej strony, Abstrakcja jest procesem prezentowania, jak zachowuje się jednostka \ wygląda, a nie jak jest implementowana.
Co to jest kapsułkowanie?
Hermetyzacja to proces owijania danych i operacji, które na nich działają, w jedną całość. Zasadniczo oznacza to, że w celu uzyskania dostępu do danych należy zastosować pewne predefiniowane metody. Innymi słowy, enkapsulowane dane nie są bezpośrednio dostępne. Zapewnia to zachowanie integralności danych, ponieważ użytkownik nie jest w stanie uzyskać bezpośredniego dostępu do danych ani ich modyfikować, jak chce. Użytkownicy otrzymają lub ustawią wartości danych tylko za pomocą metod, które są publicznie dostępne dla użytkowników. Metody te zwykle zapewniają sprawdzanie poprawności danych, tak że tylko dane w odpowiednim formacie mogą być wstawiane do pól. Dlatego zalety kapsułkowania są trzykrotnie. Poprzez enkapsulację programista może tworzyć pola klasy tylko do odczytu lub tylko do zapisu. Po drugie, klasa może mieć całkowitą kontrolę nad tym, co jest przechowywane w jej polach. Wreszcie użytkownicy klasy nie muszą się martwić, w jaki sposób są przechowywane jej dane. W Javie programista może zadeklarować wszystkie zmienne instancji jako prywatne i zapewnić metody get i set (które są publiczne), aby uzyskać dostęp i modyfikować pola prywatne.
Co to jest abstrakcja?
Abstrakcja to proces oddzielania szczegółów prezentacji od szczegółów implementacji. Odbywa się to w ten sposób, że programista jest zwolniony z bardziej skomplikowanych szczegółów implementacji. Zamiast tego programista może skupić się na prezentacji lub szczegółach behawioralnych bytu. Mówiąc prościej, abstrakcja koncentruje się na tym, jak można użyć określonego bytu, a nie na tym, jak jest on wdrażany. Abstrakcja zasadniczo ukrywa szczegóły implementacji, dzięki czemu nawet jeśli metodologia implementacji zmienia się w czasie, programista nie musi się martwić, jak wpłynie to na jego program. System można wydzielić z kilku warstw lub poziomów. Na przykład warstwy abstrakcji niskiego poziomu ujawnią szczegóły sprzętowe, natomiast abstrakcja wysokiego poziomu ujawni jedynie logikę biznesową encji. Termin abstrakcja może być używany zarówno w odniesieniu do bytu, jak i procesu, co prowadzi do pewnych nieporozumień. Jako proces abstrakcja oznacza wydobywanie istotnych szczegółów, ignorując nieistotne szczegóły przedmiotu lub grupy przedmiotów, podczas gdy jako byt, abstrakcja oznacza model lub widok bytu z jedynie istotnymi szczegółami. W Javie programista może użyć słowa kluczowego abstract, aby zadeklarować klasę jako encję abstrakcyjną, która reprezentuje podstawowe cechy charakterystyczne encji świata rzeczywistego.
Jaka jest różnica między enkapsulacją a abstrakcją?
Mimo że enkapsulacja i abstrakcja są wysoce powiązanymi pojęciami występującymi w językach programowania zorientowanego obiektowo, mają one kluczowe różnice. Abstrakcja jest techniką, która pomaga nam zidentyfikować, co powinno być widoczne, a co ukryć. Kapsułkowanie to techniki pakowania informacji w taki sposób, aby uwidoczniało to, co powinno być widoczne, i ukrywa to, co powinno być ukryte. Innymi słowy, kapsułkowanie można zidentyfikować jako jeden krok poza abstrakcję. Podczas gdy abstrakcja sprowadza obiekt ze świata rzeczywistego do jego podstawowych cech definiujących, enkapsulacja rozszerza tę ideę poprzez modelowanie i łączenie tej funkcjonalności tego bytu.