Abstrakcja i enkapsulacja
Abstrakcja i enkapsulacja to podstawowe pojęcia programowania obiektowego (OOP), które umożliwiają implementację rzeczywistych obiektów w programy i kody. Podczas gdy obie strony idą w parze, są bardzo różne od siebie. Chociaż każda metoda jest hermetyzacją, jest to również abstrakcja. W prostych słowach, kiedy tworzysz różne rzeczy w celu stworzenia bytu, tworzysz koncepcję - streszczenie. Chociaż oba są technicznie nierozłączne, nie mają dosłownie nic wspólnego. Prawdą jest, że każde hermetyzowanie jest abstrakcją, ponieważ obydwoje coś ukrywają, jednak mają one sprawiedliwy udział w różnicach.
Czym jest abstrakcja?
Abstrakcja to podstawowa koncepcja OOP, która koncentruje się na samych istotnych danych obiektu i ukrywa wszystkie nieistotne szczegóły, które mogą, ale nie muszą, dla ogólnego lub specjalistycznego zachowania. Ukrywa szczegóły tła i podkreśla najważniejsze punkty, aby zmniejszyć złożoność i zwiększyć wydajność. Zasadniczo, abstrakcja jest narzędziem programistycznym do zarządzania złożonością. Abstrakcja skupia się na ideach, a nie na wydarzeniach. Ukrywa szczegóły na poziomie projektu, zapewniając funkcjonalność dla użytkowników. Powstały obiekt można również nazwać abstrakcją. Programista upewnia się, że nazwany podmiot będzie zawierał wszystkie istotne aspekty, a nie wszystkie nieistotne.
Weźmy przykład abstrakcji w realnym świecie. Rozważmy przypadek pojazdu, który w tym przypadku jest twoim pojazdem. Mechanik próbuje naprawić twój samochód lub powiedzmy konkretną część twojego samochodu. Tutaj jesteś użytkownikiem i nie chcesz, abyś zapoznał się ze specyfiką swojego samochodu lub z jaką częścią faktycznie się zepsuł. W rzeczywistości nie dbasz o te rzeczy; po prostu chcesz swój samochód z powrotem w oryginalnym stanie, nie martwiąc się o szczegóły. Powiedziałeś więc mechanikowi, czego chcesz, oddzielając część implementacyjną. To jest abstrakcja. Skupiłeś się na najważniejszej rzeczy, jaką jest naprawienie samochodu, zamiast skupiać się na szczegółach.
Czym jest enkapsulacja?
Enkapsulacja to kolejna koncepcja OOP, która wiąże dane i funkcje w jeden komponent, jednocześnie ograniczając dostęp do niektórych komponentów. Jest to jedna z podstawowych koncepcji OOP, która opakowuje dane i informacje w ramach jednej jednostki. Pod względem technicznym enkapsulacja oznacza ukrywanie atrybutów w celu ochrony zmiennych przed dostępem z zewnątrz, tak aby zmiana w jednej części aplikacji nie wpłynęła na pozostałe części. Wręcz przeciwnie, dzięki większej otwartości informacji ryzykujesz nadużycie danych. Zapewnia podstawową integralność danych, chroniąc je przed światem zewnętrznym. Mówiąc prosto, ukrywa dodatkowe szczegóły ze świata zewnętrznego.
Weźmy przykład myszy Bluetooth. Musisz tylko wiedzieć, jak zachowuje się urządzenie, nie martwiąc się o szczegóły dotyczące implementacji, takie jak rodzaje czujników myszy, czy jest to sieć bezprzewodowa itp. Każdy pojedynczy szczegół opisuje mysz, ale niezależnie od szczegółów, to tylko mysz. Wystarczy użyć interfejsu, aby użyć myszy, która w tym przypadku jest wskaźnikiem myszy. To jest hermetyzacja.
Różnica między abstrakcją a enkapsulacją
Chociaż oba są podstawowymi pojęciami związanymi z OOP i są technicznie nierozłączne, wciąż mają swoje różnice pod wieloma względami.
- Różnice w "Definicji" abstrakcji i enkapsulacji - Abstrakcja jest podstawową koncepcją OOP, która kładzie nacisk na wszystkie zasadnicze aspekty obiektu poprzez ukrywanie nieistotnych szczegółów w celu zwiększenia wydajności i wyeliminowania złożoności. Z drugiej strony, enkapsulacja jest mechanizmem ukrywania danych, który opakowuje dane i informacje w kapsuły, aby ograniczyć dostęp ze świata zewnętrznego.
- Różnice w "Funkcjonalności" Abstrakcji i enkapsulacji- Abstrakcja jest mechanizmem ukrywania danych, który uwypukla jedynie podstawowe cechy, które upraszczają złożone programy, podczas gdy enkapsulacja jest metodą wiązania danych i kodów w jedną całość. Chodzi o to, aby chronić szczegóły implementacji przed dostępem zewnętrznym.
- Różnice w "implementacji" abstrakcji i enkapsulacji - Abstrakcja jest realizowana za pomocą klasy abstrakcyjnej i interfejsu, podczas gdy enkapsulacja jest realizowana za pomocą modyfikatorów dostępu. W celu hermetyzacji danych stosuje się pięć typów modyfikatorów: prywatny, publiczny, wewnętrzny, chroniony i chroniony wewnętrzny.
- Różnice w "Koncepcji" Abstrakcji i enkapsulacji- Ideą abstrakcji jest skupienie się na tym, co zamiast na sposobie. Enkapsulacja ukrywa wewnętrzną mechanikę tego, jak. Na przykład, kiedy prowadzisz samochód, dokładnie wiesz, co robi pedał hamulca, ale możesz nie znać całego mechanizmu za nim, ponieważ dane są hermetyzowane.
- Różnice w "Przykładzie" abstrakcji i enkapsulacji - Weźmy przykład smartfona. Wiesz, co robi, ale możesz nie wiedzieć, jak robi to, co robi. Dbasz tylko o ekran wyświetlacza i przyciski klawiatury, a nie martwiąc się o jego wewnętrzny obwód. W tym przypadku smartfon jest abstrakcją, w której wewnętrzne szczegóły implementacji są hermetyzowane.
Abstrakcja vs. enkapsulacja przy pomocy tabeli porównawczej
Abstrakcja | Kapsułkowanie |
Zajmuje się tylko istotnymi szczegółami, ukrywając te nieistotne, aby zmniejszyć złożoność, zwiększając tym samym efektywność. | Łączy dane i informacje w jedną całość, aby chronić dane przed zewnętrznymi źródłami. |
Odnosi się do idei ukrywania danych, które nie są wymagane do celów prezentacji. | Ukrywa dane i kod, aby ograniczyć niepożądany dostęp. |
Skupia się na tym, co bardziej niż 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ą oddzielane od odpowiednich danych. | Informacje są ukryte w kapsule, aby uzyskać bliski dostęp. |
Zajmuje się pomysłami, a nie wydarzeniami. | Chodzi o to, aby chronić dane z zewnątrz. |
Jest zaimplementowany przy użyciu klasy abstrakcyjnej i interfejsu. | Jest zaimplementowany przy użyciu chronionych, prywatnych i pakietowych modyfikatorów dostępu. |
streszczenie
Chociaż oba są pojęciami OOP związanymi z ukrywaniem danych, są one bardzo różne od siebie. Abstrakcja dotyczy również ukrywania się jak enkapsulacji, ale podczas gdy pierwsza ukrywa złożoność, ta ostatnia utrzymuje dane, które hermetyluje, 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, zwiększając w ten sposób wydajność. 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.