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.

Hermetyzacja w Java

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.

Hermetyzacja w Java

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.

Hermetyzacja w Java

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”.

Hermetyzacja w Java

Ale implementacja metody sprawdza wartości ujemne. Zatem drugie podejście również kończy się niepowodzeniem.

Hermetyzacja w Java

Dzięki temu nigdy nie udostępniasz swoich danych podmiotom zewnętrznym. Dzięki temu Twoja aplikacja będzie bezpieczna.

Hermetyzacja w Java

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.