V tomto výučbe sa pomocou príkladov dozviete o zapuzdrovaní a skrývaní údajov v prostredí Java.
Zapuzdrenie Java
Zapuzdrenie je jednou z kľúčových vlastností objektovo orientovaného programovania. Zapuzdrenie označuje spojenie polí a metód v jednej triede.
Bráni vonkajším triedam v prístupe a zmene polí a metód triedy. To tiež pomáha dosiahnuť skrytie údajov .
Príklad 1: Java zapuzdrenie
class Area ( // fields to calculate area int length; int breadth; // constructor to initialize values Area(int length, int breadth) ( this.length = length; this.breadth = breadth; ) // method to calculate area public void getArea() ( int area = length * breadth; System.out.println("Area: " + area); ) ) class Main ( public static void main(String() args) ( // create object of Area // pass value of length and breadth Area rectangle = new Area(5, 6); rectangle.getArea(); ) )
Výkon
Plocha: 30
Vo vyššie uvedenom príklade sme vytvorili triedu s názvom Area. Hlavným účelom tejto triedy je výpočet plochy.
Pre výpočet plochy, potrebujeme dve premenné: krížom krážom a metódy: getArea()
. Preto sme tieto polia a metódy spojili do jednej triedy.
Tu sú polia a metódy prístupné aj z iných tried. Nejde teda o skrývanie údajov .
Toto je iba zapuzdrenie . Podobné kódy len držíme pohromade.
Poznámka : Ľudia často považujú zapuzdrenie za skrytie údajov, ale nie je to tak úplne pravda.
Zapuzdrenie znamená spojenie podobných polí a metód dohromady. To možno použiť na dosiahnutie skrytia údajov. Samotné zapuzdrenie neskrýva údaje.
Prečo zapuzdrenie?
- V Jave nám zapuzdrenie pomáha udržiavať súvisiace polia a metódy pohromade, čo robí náš kód čistejším a ľahšie čitateľným.
- Pomáha kontrolovať hodnoty našich dátových polí. Napríklad,
class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )
Tu robíme vekovú premennúprivate
a uplatňujeme logiku vo vnútrisetAge()
metódy. Vek teraz nemôže byť negatívny. - Metódy getter a setter poskytujú prístup iba na čítanie alebo iba na zápis k našim poliam triedy. Napríklad,
getName() // provides read-only access setName() // provides write-only access
- Pomáha oddeliť komponenty systému. Napríklad môžeme kód zapuzdriť do viacerých zväzkov.
Tieto oddelené komponenty (zväzok) je možné vyvíjať, testovať a ladiť nezávisle a súčasne. Akékoľvek zmeny v konkrétnom komponente nemajú žiadny vplyv na ostatné komponenty. - Skrývanie údajov môžeme dosiahnuť aj pomocou zapuzdrenia. Ak vo vyššie uvedenom príklade zmeníme premennú dĺžky a šírky na súkromnú, potom je prístup k týmto poliam obmedzený.
A sú skryté pred vonkajšími triedami. Toto sa nazýva skrývanie údajov .
Skrývanie údajov
Skrývanie údajov je spôsob obmedzovania prístupu našich dátových členov skrytím podrobností implementácie. Zapuzdrenie tiež poskytuje spôsob skrývania údajov.
Na dosiahnutie skrytia údajov môžeme použiť modifikátory prístupu. Napríklad,
Príklad 2: Skrývanie údajov pomocou súkromného špecifikátora
class Person ( // private field private int age; // getter method public int getAge() ( return age; ) // setter method public void setAge(int age) ( this.age = age; ) ) class Main ( public static void main(String() args) ( // create an object of Person Person p1 = new Person(); // change age using setter p1.setAge(24); // access age using getter System.out.println("My age is " + p1.getAge()); ) )
Výkon
Môj vek je 24 rokov
Vo vyššie uvedenom príklade máme private
poľný vek. Pretože je private
, nie je k nim prístup mimo triedy.
Na prístup k veku sme použili public
metódy: getAge()
a setAge()
. Tieto metódy sa nazývajú metódy getra a setra.
Nastavenie veku na súkromné nám umožnilo obmedziť neoprávnený prístup mimo triedy. Toto je skrývanie údajov .
Ak sa pokúsime získať prístup k vekovému poľu z hlavnej triedy, zobrazí sa chyba.
// error: age has private access in Person p1.age = 24;