Java Encapsulation

Σε αυτό το σεμινάριο, θα μάθετε για την ενθυλάκωση και την απόκρυψη δεδομένων στην Java με τη βοήθεια παραδειγμάτων.

Java Encapsulation

Το Encapsulation είναι ένα από τα βασικά χαρακτηριστικά του αντικειμενοστρεφούς προγραμματισμού. Η ενθυλάκωση αναφέρεται στην ομαδοποίηση πεδίων και μεθόδων μέσα σε μία τάξη.

Αποτρέπει την πρόσβαση και αλλαγή των πεδίων και των μεθόδων μιας τάξης σε εξωτερικές τάξεις. Αυτό βοηθά επίσης στην επίτευξη απόκρυψης δεδομένων .

Παράδειγμα 1: Ενθυλάκωση Java

 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(); ) )

Παραγωγή

 Περιοχή: 30

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει μια τάξη που ονομάζεται Περιοχή. Ο κύριος σκοπός αυτής της τάξης είναι να υπολογίσει την περιοχή.

Για να υπολογίσετε μια περιοχή, χρειαζόμαστε δύο μεταβλητές: το μήκος και το πλάτος και μια μέθοδο: getArea(). Ως εκ τούτου, ομαδοποιήσαμε αυτά τα πεδία και τις μεθόδους σε μια ενιαία τάξη.

Εδώ, τα πεδία και οι μέθοδοι είναι προσβάσιμα και από άλλες κατηγορίες. Ως εκ τούτου, αυτό δεν κρύβει δεδομένα .

Αυτό είναι μόνο ενθυλάκωση . Διατηρούμε απλώς παρόμοιους κωδικούς μαζί.

Σημείωση : Οι άνθρωποι θεωρούν συχνά την ενθυλάκωση ως απόκρυψη δεδομένων, αλλά αυτό δεν είναι απολύτως αλήθεια.

Το Encapsulation αναφέρεται στην ομαδοποίηση σχετικών πεδίων και μεθόδων μαζί. Αυτό μπορεί να χρησιμοποιηθεί για την επίτευξη απόκρυψης δεδομένων. Η ενθυλάκωση από μόνη της δεν κρύβει δεδομένα.

Γιατί ενθυλάκωση;

  • Στην Java, η ενθυλάκωση μας βοηθά να διατηρούμε τα σχετικά πεδία και μεθόδους μαζί, γεγονός που καθιστά τον κώδικα καθαρότερο και ευανάγνωστο.
  • Βοηθά στον έλεγχο των τιμών των πεδίων δεδομένων μας. Για παράδειγμα,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Εδώ, κάνουμε την ηλικιακή μεταβλητή privateκαι εφαρμόζουμε λογική μέσα στη setAge()μέθοδο. Τώρα, η ηλικία δεν μπορεί να είναι αρνητική.
  • Οι μέθοδοι getter και setter παρέχουν πρόσβαση μόνο για ανάγνωση ή μόνο για εγγραφή στα πεδία της τάξης μας. Για παράδειγμα,
     getName() // provides read-only access setName() // provides write-only access
  • Βοηθά στην αποσύνδεση στοιχείων ενός συστήματος. Για παράδειγμα, μπορούμε να ενσωματώσουμε τον κώδικα σε πολλές δέσμες.
    Αυτά τα αποσυνδεδεμένα στοιχεία (δέσμη) μπορούν να αναπτυχθούν, να δοκιμαστούν και να εντοπιστούν σφαλμάτων ανεξάρτητα και ταυτόχρονα Και, τυχόν αλλαγές σε ένα συγκεκριμένο συστατικό δεν έχουν καμία επίδραση σε άλλα συστατικά.
  • Μπορούμε επίσης να επιτύχουμε απόκρυψη δεδομένων χρησιμοποιώντας ενθυλάκωση. Στο παραπάνω παράδειγμα, εάν αλλάξουμε τη μεταβλητή μήκους και πλάτους σε ιδιωτική, τότε η πρόσβαση σε αυτά τα πεδία είναι περιορισμένη.
    Και, παραμένουν κρυμμένα από τις εξωτερικές τάξεις. Αυτό ονομάζεται απόκρυψη δεδομένων .

Απόκρυψη δεδομένων

Η απόκρυψη δεδομένων είναι ένας τρόπος περιορισμού της πρόσβασης των μελών των δεδομένων μας απόκρυψη των λεπτομερειών εφαρμογής. Το Encapsulation παρέχει επίσης έναν τρόπο απόκρυψης δεδομένων.

Μπορούμε να χρησιμοποιήσουμε τροποποιητές πρόσβασης για να επιτύχουμε απόκρυψη δεδομένων. Για παράδειγμα,

Παράδειγμα 2: Απόκρυψη δεδομένων χρησιμοποιώντας τον ιδιωτικό προσδιοριστή

 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()); ) )

Παραγωγή

 Η ηλικία μου είναι 24

Στο παραπάνω παράδειγμα, έχουμε privateηλικία πεδίου. Δεδομένου ότι είναι private, δεν είναι προσβάσιμο από έξω από την τάξη.

Για να αποκτήσουμε πρόσβαση στην ηλικία, χρησιμοποιήσαμε publicμεθόδους: getAge()και setAge(). Αυτές οι μέθοδοι ονομάζονται μέθοδοι getter και setter.

Η ιδιωτική ηλικία μας επέτρεψε να περιορίσουμε τη μη εξουσιοδοτημένη πρόσβαση εκτός του μαθήματος. Αυτό κρύβει δεδομένα .

Εάν προσπαθήσουμε να αποκτήσουμε πρόσβαση στο πεδίο ηλικίας από την κύρια τάξη, θα λάβουμε ένα σφάλμα.

 // error: age has private access in Person p1.age = 24;

ενδιαφέροντα άρθρα...