Hermetyzacja w Javie - jak opanować OOP za pomocą enkapsulacji?



Ten artykuł o enkapsulacji w Javie pomoże Ci zrozumieć podstawowe koncepcje ukrywania szczegółów implementacji wraz z różnymi prostymi przykładami.

Programowanie zorientowane obiektowo lub lepiej znane jako OOP jest jednym z głównych filarów języka Java, który wykorzystał jego moc i łatwość użycia. Aby zostać profesjonalnym programistą Java, musisz mieć bezbłędną kontrolę nad różnymi lubić , Abstrakcja , Kapsułkowanie i polimorfizm. Za pośrednictwem tego artykułu dam ci pełny wgląd w jedną z najważniejszych koncepcji OOP, tj. Hermetyzację w Javie i sposób jej osiągnięcia.

Poniżej znajdują się tematy, które będę omawiać w tym artykule:





Możesz również przejrzeć to nagranie gdzie możesz szczegółowo zrozumieć tematy z przykładami.



Wprowadzenie do hermetyzacji

Hermetyzacja odnosi się do pakowania danych w pojedynczą jednostkę. Jest to mechanizm, który wiąże kod i dane, którymi manipuluje. Innym sposobem myślenia o hermetyzacji jest to, że jest to tarcza ochronna, która zapobiega dostępowi do danych przez kod poza tą osłoną. W tym przypadku zmienne lub dane pliku jest ukryty przed żadną inną klasą i można uzyskać do niego dostęp tylko za pośrednictwem dowolnej funkcji składowej własnej klasy, w której są zadeklarowane.

Weźmy teraz przykład kapsułki medycznej, w której lek jest zawsze bezpieczny w kapsułce. Podobnie, dzięki hermetyzacji, metody i zmienne klasy są dobrze ukryte i bezpieczne.



Enkapsulacja -Encapsulation w Javie-EdurekaHermetyzację w Javie można osiągnąć poprzez:

  • Deklarowanie zmiennych klasy jako prywatnych.
  • Udostępnianie publicznych metod ustawiających i pobierających do modyfikowania i przeglądania wartości zmiennych.

Spójrzmy teraz na kod, aby lepiej zrozumieć hermetyzację:

public class Student {private String name public String getName () {return name} public void setName (String name) {this.name = name}} class Test {public static void main (String [] args) {Student s = new Student () s.setName ('Harry Potter') System.out.println (s.getName ())}}

Jak widać w powyższym kodzie, utworzyłem klasę Student, która ma prywatny Nazwa . Następnie utworzyłem getter i setter, aby pobrać i ustawić imię i nazwisko ucznia. Z pomocą tych metod każda klasa, która chce uzyskać dostęp do zmiennej name, musi to zrobić za pomocą tych metod pobierających i ustawiających.

Zobaczmy teraz jeszcze jeden przykład i szczegółowo poznajmy hermetyzację. W tym przykładzie klasa Car ma dwa pola –name i topSpeed. Tutaj oba są zadeklarowane jako prywatne, co oznacza, że ​​nie można uzyskać do nich dostępu bezpośrednio poza klasą. Mamy kilka metod pobierających i ustawiających, takich jak getName, setName, setTopSpeed ​​itp., Które są zadeklarowane jako publiczne. Metody te są narażone na „osoby z zewnątrz” i mogą być używane do zmiany i pobierania danych z obiektu Car. Mamy jedną metodę ustawiania maksymalnej prędkości pojazdu i dwie metody pobierające w celu pobrania wartości maksymalnej prędkości w MPH lub KMHt. Zasadniczo to właśnie robi enkapsulacja - ukrywa implementację i daje nam pożądane wartości. Spójrzmy teraz na poniższy kod.

pakiet Edureka public class Car {private String name private double topSpeed ​​public Car () {} public String getName () {nazwa zwrotna} public void setName (nazwa ciągu) {this.name = name} public void setTopSpeed ​​(double speedMPH) {topSpeed = speedMPH} public double getTopSpeedMPH () {return topSpeed} public double getTopSpeedKMH () {return topSpeed ​​* 1.609344}}

W tym przypadku program główny tworzy obiekt Car o podanej nazwie i używa metody ustawiającej do przechowywania maksymalnej prędkości dla tej instancji. Robiąc to, możemy łatwo uzyskać prędkość w MPH lub KMH bez dbania o to, jak prędkość jest konwertowana w klasie Car.

pakiet Publiczna klasa Edureka Przykład {public static void main (String args []) Car car = new Car () car.setName ('Mustang GT 4,8-litrowy V8') car.setTopSpeed ​​(201) System.out.println (car. getName () + 'prędkość maksymalna w MPH to' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'prędkość maksymalna w KMH to' + car.getTopSpeedKMH ())

So, w ten sposób można osiągnąć enkapsulację w Javie. Przejdźmy teraz dalej i zobaczmy, dlaczego potrzebujemy enkapsulacji.

Dlaczego potrzebujemy enkapsulacji w Javie?

Hermetyzacja jest niezbędna w Javie, ponieważ:

  • Kontroluje sposób dostępu do danych
  • Modyfikuje kod na podstawie wymagań
  • Pomaga nam osiągnąć luźną parę
  • Osiąga prostotę naszej aplikacji
  • Umożliwia także zmianę części kodu bez zakłócania innych funkcji lub kodu obecnego w programie

Rozważmy teraz mały przykład ilustrujący potrzebę hermetyzacji.

class Student {int id String name} public class Demo {public static void main (String [] args) {Student s = new Student () s.id = 0 s.name = '' s.name = null}}

W powyższym przykładzie zawiera dwie zmienne instancji jako modyfikator dostępu. Zatem każda klasa w tym samym pakiecie może przypisywać i zmieniać wartości tych zmiennych, tworząc obiekt tej klasy. Dlatego nie mamy kontroli nad wartościami przechowywanymi w klasie Student jako zmienne. Aby rozwiązać ten problem, hermetyzujemy klasę Student.

binarny na dziesiętny kod Java

To było kilka wskazówek, które obrazują potrzebę kapsułkowania. Zobaczmy teraz niektóre zalety hermetyzacji.

Korzyści z kapsułkowania

    • Ukrywanie danych: Tutaj użytkownik nie będzie miał pojęcia o wewnętrznej implementacji klasy. Nawet użytkownik nie będzie wiedział, w jaki sposób klasa przechowuje wartości w zmiennych. Będzie tylko świadomy tego, że przekazujemy wartości do metody ustawiającej i zmienne są inicjalizowane tą wartością.
    • Zwiększona elastyczność: Tutaj możemy ustawić zmienne klasy jako tylko do odczytu lub tylko do zapisu, w zależności od naszych wymagań. Jeśli chcesz, aby zmienne były tylko do odczytu, musimy pominąć metody ustawiające, takie jak setName (),setAge() itp. lub jeśli chcemy, aby zmienne były tylko do zapisu, musimy pominąć metody get, takie jak getName (), getAge () itp. z powyższego programu.
    • Możliwość ponownego użycia: Poprawia także możliwość ponownego użycia i jest łatwa do zmiany przy nowych wymaganiach.

Teraz, gdy zrozumieliśmy już podstawy hermetyzacji, przejdźmy do ostatniego tematu tego artykułu i szczegółowo zapoznajmy się z hermetyzacją na przykładzie czasu rzeczywistego.

Przykład hermetyzacji w czasie rzeczywistym

Rozważmy przykład telewizji i zrozummy, jak wewnętrzne szczegóły implementacji są ukryte przed klasą zewnętrzną.Zasadniczo w tym przykładzie ukrywamy dane kodu wewnętrznego, tj. Obwody ze świata zewnętrznego za osłoną. Teraz w , można to osiągnąć za pomocą modyfikatorów dostępu. Modyfikatory dostępu określają dostęp lub poziom klasy, zmienne konstruktorów itp. Jak widać w poniższym kodzie, użyłem prywatnego modyfikatora dostępu, aby ograniczyć poziom dostępu klasy. Zmienne zadeklarowane jako prywatne są dostępne tylko w klasie telewizyjnej.

publiczna klasa Telewizja {prywatna podwójna szerokość prywatna podwójna wysokość prywatna podwójna Rozmiar ekranu prywatny int maxVolume print int głośność prywatna boolean power public Television (podwójna szerokość, podwójna wysokość, podwójny ekranSize) {this.width this.height this.screenSize = ScreenSize} publiczny podwójny kanał Tuning (int channel) {switch (channel) {case1: return 34.56 case2: return 54.89 case3: return 73.89 case1: return 94.98} return 0} public int zmniejszVolume () {if (0volume) volume ++ return volume}} class test {public static void main (String args []) {Television t = new Television (11.5,7,9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () telewizja. // Zgłasza błąd, ponieważ zmienna jest prywatna i nie można uzyskać do niej dostępu poza klasą}}

W powyższym przykładzie zadeklarowałem wszystkie zmienne jako prywatne, a metody, konstruktory i klasę jako publiczne. Tutaj konstruktory, metody są dostępne poza klasą. Kiedy tworzęobiektklasy Television, może uzyskać dostęp do metod i konstruktorów obecnych w klasie, podczas gdy zmienne zadeklarowane z modyfikatorem dostępu prywatnego są ukryte. Dlatego, gdy próbujesz uzyskać dostęp zmienna szerokości w powyższym przykładzie rzucabłąd. W ten sposób wewnętrzne szczegóły implementacji są ukryte przed innymi klasami. Tak właśnie osiąga się kapsułkowanie w Javie.

To prowadzi nas do końca artykułu „Hermetyzacja w Javie”. Mam nadzieję, że znalazłeś to pouczające i pomogło w dodaniu wartości do twojej wiedzy. Jeśli chcesz dowiedzieć się więcej o Javie, możesz zapoznać się z

Teraz, gdy zrozumiałeś już „czym jest enkapsulacja w Javie”, zapoznaj się z autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Szkolenie i certyfikacja J2EE i SOA firmy Edureka jest przeznaczony dla studentów i profesjonalistów, którzy chcą zostać programistą Java. Kurs ma na celu zapewnienie przewagi w programowaniu w języku Java i przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych struktur Java, takich jak Hibernate i Spring.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy na blogu „Encapsulation in Java”, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.