Zarówno abstrakcja, jak i enkapsulacja są podstawowymi pojęciami programowania obiektowego (OOP), które pozwalają na implementację rzeczywistych obiektów w programach i kodach. Podczas gdy oba idą w parze, bardzo się od siebie różnią. Chociaż każda metoda jest enkapsulacją, jest również abstrakcją. Mówiąc prościej, łącząc różne rzeczy w celu stworzenia bytu, tak naprawdę tworzysz koncepcję - streszczenie. Chociaż oba są technicznie nierozłączne, nie mają dosłownie nic wspólnego. Prawdą jest, że każda enkapsulacja jest abstrakcją, ponieważ obie coś ukrywają, jednak mają spory udział w różnicach.
Abstrakcja jest podstawową koncepcją OOP, która koncentruje się na odpowiednich danych obiektu i ukrywa wszystkie nieistotne szczegóły, które mogą, ale nie muszą dotyczyć ogólnych lub specjalistycznych zachowań. Ukrywa szczegóły tła i podkreśla istotne punkty w celu zmniejszenia złożoności i zwiększenia wydajności. Zasadniczo abstrakcja jest narzędziem programistycznym do zarządzania złożonością. Abstrakcja skupia się raczej na pomysłach niż wydarzeniach. Ukrywa szczegóły na poziomie projektu, zapewniając funkcjonalność użytkownikom. Powstały obiekt można również nazwać abstrakcją. Programista upewnia się, że nazwany byt będzie zawierał wszystkie istotne aspekty, a także żaden z nieistotnych.
Weźmy przykład abstrakcji w świecie rzeczywistym. Rozważmy przypadek pojazdu, którym w tym przypadku jest twój pojazd. Mechanik próbuje naprawić samochód lub, powiedzmy, określoną część samochodu. Tutaj jesteś użytkownikiem i nie chcesz wdawać się w specyfikę swojego samochodu ani tego, co faktycznie się zepsuło. Tak naprawdę nie przejmujesz się tymi rzeczami; chcesz po prostu przywrócić pojazd do pierwotnego stanu, nie martwiąc się o szczegóły. Tak więc właściwie powiedziałeś mechanikowi, czego chcesz, segregując część implementacyjną. To jest abstrakcja. Skoncentrowałeś się na najważniejszej rzeczy, jaką jest naprawienie samochodu, a nie na szczegółach.
Hermetyzacja to kolejna koncepcja OOP, która wiąże dane i funkcje w jednym komponencie, ograniczając dostęp do niektórych komponentów. Jest to jedna z głównych podstawowych koncepcji OOP, która łączy dane i informacje w jednym urządzeniu. Z technicznego punktu widzenia enkapsulacja oznacza ukrywanie atrybutów w celu ochrony zmiennych przed dostępem z zewnątrz, aby zmiana w jednej części aplikacji nie wpływała na inne części. Przeciwnie, czyniąc informacje bardziej otwartymi, ryzykujesz niewłaściwe wykorzystanie danych. Zapewnia podstawową integralność danych, chroniąc je przed światem zewnętrznym. Mówiąc prosto, ukrywa dodatkowe szczegóły przed światem zewnętrznym.
Weźmy przykład myszy Bluetooth. Musisz tylko wiedzieć o zachowaniu urządzenia, nie martwiąc się o szczegóły implementacji, takie jak jakiego rodzaju czujniki ma mysz, czy jest bezprzewodowa czy nie, itp. Każdy szczegół opisuje mysz, ale niezależnie od szczegółów, to tylko mysz. Potrzebujesz tylko interfejsu do korzystania z myszy, którym w tym przypadku jest wskaźnik myszy. To jest kapsułkowanie.
Chociaż oba są podstawowymi pojęciami związanymi z OOP i są technicznie nierozłączne, nadal mają różnice w wielu aspektach.
Abstrakcja | Kapsułkowanie |
Zajmuje się tylko istotnymi szczegółami, ukrywając te nieistotne w celu zmniejszenia złożoności, a tym samym zwiększenia wydajności. | Łączy dane i informacje w jedną całość, aby chronić dane przed źródłami zewnętrznymi. |
Odnosi się do pomysłu ukrywania danych, które nie są wymagane do celów prezentacji. | Ukrywa dane i kod w celu ograniczenia niepożądanego dostępu. |
Koncentruje się na czym, a nie jak. | Ukrywa wewnętrzną mechanikę tego, jak coś robi. |
Ukrywa niepotrzebne szczegóły na poziomie projektu. | Ukrywa również szczegóły, ale na poziomie implementacji. |
Informacje i dane są oddzielone od odpowiednich danych. | Informacje są ukryte w kapsułce, aby uzyskać do nich łatwy dostęp. |
Zajmuje się raczej pomysłami niż wydarzeniami. | Chodzi o ochronę danych przed światem zewnętrznym. |
Jest implementowany przy użyciu klasy abstrakcyjnej i interfejsu. | Jest implementowany przy użyciu chronionych, prywatnych i modyfikatorów dostępu do pakietu. |
Chociaż oba są koncepcjami OOP związanymi z ukrywaniem danych, różnią się od siebie. Abstrakcja odnosi się również do ukrywania się jak enkapsulacja, ale podczas gdy ta pierwsza kryje złożoność, ta druga zachowuje dane, które hermetyzuje, kontrolując dostęp do nich. Abstrakcja odnosi się do koncepcji reprezentowania tylko niezbędnych funkcji poprzez ukrywanie nieistotnych szczegółów w celu zmniejszenia złożoności aplikacji, a tym samym zwiększenia wydajności. Z kolei enkapsulacja odnosi się do koncepcji ukrywania całej wewnętrznej mechaniki programu w celu ochrony informacji przed niepożądanym dostępem. Łączy dane i informacje w jeden komponent, ograniczając dostęp do innych komponentów.