Hermetyzacja w Java
W czym jest enkapsulacja Java?
Hermetyzacja w Java jest mechanizmem do pakowania zmiennych (danych) i metod (kodu) razem jako pojedynczą jednostkę. Jest to proces ukrywania szczegółów informacji i ochrony danych i zachowania obiektu. Jest to jeden z czterech ważnych konceptów OOP. Klasa enkapsulacji jest łatwa do przetestowania, więc jest również lepsza do testowania jednostkowego.
Kliknij tutaj jeśli film nie jest dostępny
Poznaj enkapsulację w Java z Przykładem
Aby zrozumieć szczegółowo, czym jest enkapsulacja, rozważ następującą klasę kont bankowych z metodami depozytu i salda
class Account { private int account_number; private int account_balance; public void show Data() { //code to show data } public void deposit(int a) { if (a < 0) { //show error } else account_balance = account_balance + a; } }
Załóżmy, że hakerowi udało się uzyskać dostęp do kodu twojego konta bankowego. Teraz próbuje wpłacić kwotę -100 na twoje konto na dwa sposoby. Zobaczmy jego pierwszą metodę lub podejście.
Podejście 1: Próbuje wpłacić nieprawidłową kwotę (powiedzmy -100) na Twoje konto bankowe, manipulując kodem.
Teraz pytanie brzmi – Czy to możliwe? Przyjrzyjmy się temu. Zwykle zmienna w klasie jest ustawiona jako „prywatna”, jak pokazano poniżej. Dostęp do niej jest możliwy tylko za pomocą metod zdefiniowanych w klasie. Żadna inna klasa ani obiekt nie może uzyskać do nich dostępu.
Jeśli członek danych jest prywatny, oznacza to, że dostęp do niego jest możliwy tylko w obrębie tej samej klasy. Żadna klasa zewnętrzna nie może uzyskać dostępu do prywatnego członka danych lub zmiennej innej klasy. Tak więc w naszym przypadku haker nie może wpłacić kwoty -100 na Twoje konto.
Podejście 2: Pierwsze podejście hakera nie przyniosło rezultatu w postaci wpłaty kwoty. Następnie próbuje wpłacić kwotę -100, używając metody „depozyt”.
Ale implementacja metody sprawdza wartości ujemne. Zatem drugie podejście również kończy się niepowodzeniem.
Dzięki temu nigdy nie udostępniasz swoich danych podmiotom zewnętrznym. Dzięki temu Twoja aplikacja będzie bezpieczna.
Cały kod można uznać za kapsułkę, a komunikować się można tylko za pomocą wiadomości. Stąd nazwa enkapsulacja.
Ukrywanie danych w Java
Ukrywanie danych w Java ukrywa zmienne klasy przed innymi klasami. Dostęp do nich jest możliwy tylko poprzez metodę bieżącej klasy. Ukrywa szczegóły implementacji przed użytkownikami. Ale bardziej niż ukrywanie danych, jest to przeznaczone do lepszego zarządzania lub grupowania powiązanych danych. Aby osiągnąć mniejszy stopień enkapsulacji w Java, możesz używać modyfikatorów takich jak „protected” lub „public”. Dzięki enkapsulacji programiści mogą łatwo zmienić jedną część kodu bez wpływu na inną.
Getter i Setter wchodzą Java
Getter i Setter wchodzą Java to dwie konwencjonalne metody używane do pobierania i aktualizowania wartości zmiennej. Służą głównie do tworzenia, modyfikowania, usuwania i przeglądania wartości zmiennych. Metoda setter służy do aktualizowania wartości, a metoda getter służy do odczytywania lub pobierania wartości. Są one również znane jako akcesor i mutator.
Poniższy kod jest przykładem metod getter i setter:
class Account{ private int account_number; private int account_balance; // getter method public int getBalance() { return this.account_balance; } // setter method public void setNumber(int num) { this.account_number = num; } }
W powyższym przykładzie metoda getBalance() jest metodą pobierającą, która odczytuje wartość zmiennej saldo_konta, a metoda setNumber() jest metodą ustawiającą, która ustawia lub aktualizuje wartość zmiennej numer_konta.
Abstrakcja a enkapsulacja
Często enkapsulacja jest źle rozumiana Abstrakcja. Pouczmy się-
- Hermetyzacja to bardziej kwestia „jak” osiągnąć funkcjonalność
- Abstrakcja dotyczy raczej „Co” może zrobić klasa.
Prostym przykładem zrozumienia tej różnicy jest telefon komórkowy. Gdzie złożona logika na płytce drukowanej jest zamknięta w ekranie dotykowym, a interfejs jest dostarczany w celu jej abstrakcji.
Zalety enkapsulacji w Java
- Hermetyzacja wiąże dane z powiązanymi funkcjami. Tutaj funkcjonalności oznaczają „metody”, a dane oznaczają „zmienne”
- Dlatego trzymamy zmienne i metody w jednym miejscu. To miejsce to „klasa”. Klasa jest podstawą enkapsulacji.
- Wraz z Java Dzięki enkapsulacji możesz ukryć (ograniczyć dostęp) krytyczne elementy danych w swoim kodzie, co poprawia bezpieczeństwo
- Jak już wcześniej omawialiśmy, jeśli element danych jest zadeklarowany jako „prywatny”, to dostęp do niego jest możliwy tylko w obrębie tej samej klasy. Żadna klasa zewnętrzna nie może uzyskać dostępu do elementu danych (zmiennej) innej klasy.
- Jeśli jednak chcesz uzyskać dostęp do tych zmiennych, musisz użyć publiczny „getter” i „setter” Metody.