Ενθυλάκωση σε Java OOP με παράδειγμα

Πίνακας περιεχομένων:

Anonim

Τι είναι το Encapsulation στην Java;

Η ενθυλάκωση σε Java είναι ένας μηχανισμός για την ολοκλήρωση μεταβλητών (δεδομένων) και μεθόδων (κωδικός) μαζί ως μία μονάδα. Είναι η διαδικασία απόκρυψης λεπτομερειών πληροφοριών και προστασίας δεδομένων και συμπεριφοράς του αντικειμένου. Είναι μια από τις τέσσερις σημαντικές έννοιες OOP. Η κατηγορία ενθυλάκωσης είναι εύκολο να ελεγχθεί, επομένως είναι επίσης καλύτερο για δοκιμή μονάδας.

Σε αυτό το σεμινάριο, θα μάθετε-

  • Τι είναι το Encapsulation στην Java;
  • Μάθετε Encapsulation με ένα παράδειγμα
  • Απόκρυψη δεδομένων σε Java
  • Μέθοδοι λήψης και ρύθμισης στην Java
  • Αφαίρεση έναντι ενθυλάκωσης
  • Πλεονεκτήματα του Encapsulation στην Java

Κάντε κλικ εδώ εάν το βίντεο δεν είναι προσβάσιμο

Μάθετε Encapsulation με ένα παράδειγμα

Για να κατανοήσετε λεπτομερώς τι είναι η ενθυλάκωση, εξετάστε την ακόλουθη τάξη τραπεζικού λογαριασμού με μεθόδους κατάθεσης και υπολοίπου

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;}}

Ας υποθέσουμε ότι ένας εισβολέας κατάφερε να αποκτήσει πρόσβαση στον κωδικό του τραπεζικού σας λογαριασμού. Τώρα, προσπαθεί να καταθέσει το ποσό -100 στο λογαριασμό σας με δύο τρόπους. Ας δούμε την πρώτη του μέθοδο ή προσέγγιση.

Προσέγγιση 1: Προσπαθεί να καταθέσει ένα μη έγκυρο ποσό (ας πούμε -100) στον τραπεζικό σας λογαριασμό χειραγωγώντας τον κωδικό.

Τώρα, η ερώτηση είναι - Είναι δυνατόν; Ας ερευνήσουμε.

Συνήθως, μια μεταβλητή σε μια κατηγορία ορίζεται ως "ιδιωτική" όπως φαίνεται παρακάτω. Η πρόσβαση είναι δυνατή μόνο με τις μεθόδους που ορίζονται στην τάξη. Κανένα άλλο μάθημα ή αντικείμενο δεν μπορεί να έχει πρόσβαση σε αυτά.

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

Επομένως, στην περίπτωσή μας, ο εισβολέας δεν μπορεί να καταθέσει ποσό -100 στον λογαριασμό σας.

Προσέγγιση 2 : Η πρώτη προσέγγιση του χάκερ απέτυχε να καταθέσει το ποσό. Στη συνέχεια, προσπαθεί να καταθέσει ένα ποσό -100 χρησιμοποιώντας τη μέθοδο "κατάθεση".

Αλλά η εφαρμογή μεθόδου έχει έλεγχο για αρνητικές τιμές. Έτσι, η δεύτερη προσέγγιση αποτυγχάνει.

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

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

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

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

Για να επιτύχετε μικρότερο βαθμό ενθυλάκωσης στην Java, μπορείτε να χρησιμοποιήσετε τροποποιητές όπως "προστατευμένο" ή "δημόσιο". Με την ενθυλάκωση, οι προγραμματιστές μπορούν να αλλάξουν εύκολα ένα μέρος του κώδικα χωρίς να επηρεάσουν άλλο.

Getter and Setter στην Ιάβα

Το Getter και το Setter στην Java είναι δύο συμβατικές μέθοδοι που χρησιμοποιούνται για την ανάκτηση και την ενημέρωση τιμών μιας μεταβλητής. Χρησιμοποιούνται κυρίως για τη δημιουργία, τροποποίηση, διαγραφή και προβολή των μεταβλητών τιμών. Η μέθοδος ρύθμισης χρησιμοποιείται για την ενημέρωση τιμών και η μέθοδος λήψης χρησιμοποιείται για την ανάγνωση ή την ανάκτηση των τιμών. Είναι επίσης γνωστοί ως βοηθητικοί και μεταλλαγμένοι.

Ο ακόλουθος κώδικας είναι ένα παράδειγμα μεθόδων λήψης και ρύθμισης:

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;}}

Στο παραπάνω παράδειγμα, η μέθοδος getBalance () είναι η μέθοδος getter που διαβάζει την τιμή της μεταβλητής account_balance και η μέθοδος setNumber () είναι η μέθοδος setter που ορίζει ή ενημερώνει την τιμή για τη μεταβλητή account_number.

Αφαίρεση έναντι ενθυλάκωσης

Συχνά η ενθυλάκωση παρεξηγείται με την αφαίρεση. Ας διαβάσουμε-

  • Η ενθυλάκωση αφορά περισσότερο το "Πώς" να επιτύχετε μια λειτουργικότητα
  • Η αφαίρεση αφορά περισσότερο το "Τι" μπορεί να κάνει μια τάξη.

Ένα απλό παράδειγμα για την κατανόηση αυτής της διαφοράς είναι το κινητό τηλέφωνο. Όπου η σύνθετη λογική στην πλακέτα κυκλώματος είναι ενθυλακωμένη σε μια οθόνη αφής και παρέχεται η διεπαφή για να την αφαιρέσει.

Πλεονεκτήματα του Encapsulation στην Java

  • Το Encapsulation δεσμεύει τα δεδομένα με τις σχετικές λειτουργίες του. Εδώ λειτουργικότητες σημαίνουν "μεθόδους" και δεδομένα σημαίνει "μεταβλητές"
  • Έτσι διατηρούμε μεταβλητές και μεθόδους σε ένα μέρος. Αυτό το μέρος είναι "τάξη". Η τάξη είναι η βάση για ενθυλάκωση.
  • Με το Java Encapsulation, μπορείτε να αποκρύψετε (να περιορίσετε την πρόσβαση) σε κρίσιμα μέλη δεδομένων στον κώδικά σας, γεγονός που βελτιώνει την ασφάλεια
  • Όπως συζητήσαμε νωρίτερα, εάν ένα μέλος δεδομένων έχει δηλωθεί "ιδιωτικό", τότε μπορεί να έχει πρόσβαση μόνο στην ίδια τάξη. Κανένα εξωτερικό μάθημα δεν έχει πρόσβαση σε μέλος δεδομένων (μεταβλητή) άλλης κλάσης.
  • Ωστόσο, εάν πρέπει να αποκτήσετε πρόσβαση σε αυτές τις μεταβλητές, πρέπει να χρησιμοποιήσετε δημόσιες μεθόδους "getter" και "setter" .