Hermetyzacja w Java OOP z przykładem

Spisie treści:

Anonim

Co to jest enkapsulacja w Javie?

Hermetyzacja w Javie to mechanizm opakowywania zmiennych (danych) i metod (kodu) w jedną jednostkę. Jest to proces ukrywania szczegółów informacji oraz ochrony danych i zachowania obiektu. Jest to jedna z czterech ważnych koncepcji OOP. Klasa hermetyzowana jest łatwa do przetestowania, więc jest również lepsza do testowania jednostkowego.

W tym samouczku nauczysz się:

  • Co to jest enkapsulacja w Javie?
  • Naucz się hermetyzacji na przykładzie
  • Ukrywanie danych w Javie
  • Metody pobierające i ustawiające w Javie
  • Abstrakcja a hermetyzacja
  • Zalety enkapsulacji w Javie

Kliknij tutaj, jeśli wideo nie jest dostępne

Naucz się hermetyzacji na przykładzie

Aby szczegółowo zrozumieć, czym jest hermetyzacja, rozważ poniższą klasę kont bankowych z depozytem i pokaż metody sald

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} elseaccount_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? Zbadajmy.

Zwykle zmienna w klasie jest ustawiana jako „prywatna”, jak pokazano poniżej. Dostęp do niego można uzyskać tylko za pomocą metod zdefiniowanych w klasie. Żadna inna klasa lub obiekt nie ma do nich dostępu.

Jeśli członek danych jest prywatny, oznacza to, że można uzyskać do niego dostęp tylko w ramach tej samej klasy. Żadna klasa zewnętrzna nie ma dostępu do prywatnych składowych danych ani zmiennych innej klasy.

W naszym przypadku haker nie może więc wpłacić kwoty -100 na Twoje konto.

Podejście 2 : Pierwsze podejście hakera nie zdeponowało kwoty. Następnie próbuje zdeponować kwotę -100 za pomocą metody „wpłaty”.

Ale implementacja metody ma sprawdzanie wartości ujemnych. Zatem drugie podejście również zawodzi.

Dlatego nigdy nie udostępniasz swoich danych podmiotom zewnętrznym. Co sprawia, że ​​Twoja aplikacja jest bezpieczna.

Cały kod można traktować jako kapsułę i można komunikować się tylko za pośrednictwem wiadomości. Stąd nazwa hermetyzacja.

Ukrywanie danych w Javie

Ukrywanie danych w Javie to ukrywanie zmiennych klasy przed innymi klasami. Można uzyskać do niego dostęp tylko za pomocą metody ich bieżącej klasy. Ukrywa szczegóły implementacji przed użytkownikami. Ale nie tylko ukrywanie danych, ma na celu lepsze zarządzanie lub grupowanie powiązanych danych.

Aby uzyskać mniejszy stopień hermetyzacji w Javie, możesz użyć modyfikatorów, takich jak „protected” lub „public”. Dzięki hermetyzacji programiści mogą łatwo zmienić jedną część kodu bez wpływu na inne.

Getter i Setter w Javie

Getter i Setter w Javie 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 ustawiająca służy do aktualizowania wartości, a metoda pobierająca służy do odczytywania lub pobierania wartości. Są również znane jako akcesor i mutator.

Poniższy kod jest przykładem metod pobierających i ustawiających:

class Account{private int account_number;private int account_balance;// getter methodpublic int getBalance() {return this.account_balance;}// setter methodpublic void setNumber(int num) {this.account_number = num;}}

W powyższym przykładzie metoda getBalance () jest metodą pobierającą, która odczytuje wartość zmiennej account_balance, a metoda setNumber () jest metodą ustawiającą, która ustawia lub aktualizuje wartość zmiennej numer_konta.

Abstrakcja a hermetyzacja

Często hermetyzacja jest mylona z abstrakcją. Pouczmy się-

  • W enkapsulacji chodzi bardziej o „Jak” osiągnąć funkcjonalność
  • W abstrakcji chodzi raczej o to, „co” klasa może zrobić.

Prostym przykładem zrozumienia tej różnicy jest telefon komórkowy. Tam, gdzie złożona logika na płytce drukowanej jest zamknięta w ekranie dotykowym, a interfejs ma na celu jej wyodrębnienie.

Zalety enkapsulacji w Javie

  • Hermetyzacja wiąże dane z powiązanymi funkcjami. Tutaj funkcjonalności oznaczają „metody”, a dane „zmienne”
  • Dlatego trzymamy zmienne i metody w jednym miejscu. To miejsce to „klasa”. Klasa jest podstawą hermetyzacji.
  • Dzięki enkapsulacji Java możesz ukrywać (ograniczać dostęp) do krytycznych elementów danych w kodzie, co poprawia bezpieczeństwo
  • Jak omówiliśmy wcześniej, jeśli element członkowski danych jest zadeklarowany jako „prywatny”, wówczas można uzyskać do niego dostęp tylko w ramach tej samej klasy. Żadna klasa zewnętrzna nie może uzyskać dostępu do składowej danych (zmiennej) innej klasy.
  • Jeśli jednak potrzebujesz dostępu do tych zmiennych, musisz użyć publicznych metod „pobierających” i „ustawiających” .