C ++ Encapsulation (με παραδείγματα)

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

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

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

C ++ Ενθυλάκωση

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

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

 class Rectangle ( public: int length; int breadth; int getArea() ( return length * breadth; ) );

Στο παραπάνω πρόγραμμα, η συνάρτηση getArea()υπολογίζει την περιοχή ενός ορθογωνίου. Για τον υπολογισμό της περιοχής, χρειάζεται μήκος και πλάτος.

Ως εκ τούτου, τα μέλη δεδομένων (μήκος και πλάτος) και η συνάρτηση getArea()διατηρούνται μαζί στην Rectangleτάξη.

Ενθυλάκωση σε C ++

Παράδειγμα 1: Εγκλεισμός C ++

 // Program to calculate the area of a rectangle #include using namespace std; class Rectangle ( public: // Variables required for area calculation int length; int breadth; // Constructor to initialize variables Rectangle(int len, int brth) : length(len), breadth(brth) () // Function to calculate area int getArea() ( return length * breadth; ) ); int main() ( // Create object of Rectangle class Rectangle rect(8, 6); // Call getArea() function cout << "Area = " << rect.getArea(); return 0; )

Παραγωγή

 Περιοχή = 48

Στο παραπάνω παράδειγμα, υπολογίζουμε την περιοχή ενός ορθογωνίου.

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

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

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

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

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

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

  • Στο C ++, η ενθυλάκωση μας βοηθά να διατηρούμε τα σχετικά δεδομένα και λειτουργίες μαζί, γεγονός που καθιστά τον κώδικα καθαρότερο και ευανάγνωστο.
    • Βοηθά στον έλεγχο της τροποποίησης των μελών των δεδομένων μας.
      Σκεφτείτε μια κατάσταση όπου θέλουμε το πεδίο μήκους σε μια τάξη να μην είναι αρνητικό. Εδώ μπορούμε να κάνουμε τη μεταβλητή μήκους ιδιωτική και να εφαρμόσουμε τη λογική μέσα στη μέθοδο setAge(). Για παράδειγμα,
       class Rectangle ( private: int age; public: void setLength(int len) ( if (len>= 0) length = len; ) );
    • Οι λειτουργίες getter και setter παρέχουν πρόσβαση μόνο για ανάγνωση ή μόνο για εγγραφή στα μέλη της τάξης μας. Για παράδειγμα,
       getLength() // provides read-only access setLength() // provides write-only access
    • Βοηθά στην αποσύνδεση στοιχείων ενός συστήματος. Για παράδειγμα, μπορούμε να ενσωματώσουμε τον κώδικα σε πολλές δέσμες.
      Αυτά τα αποσυνδεδεμένα στοιχεία (δέσμες) μπορούν να αναπτυχθούν, να δοκιμαστούν και να εντοπιστούν σφαλμάτων ανεξάρτητα και ταυτόχρονα Και οποιεσδήποτε αλλαγές σε ένα συγκεκριμένο στοιχείο δεν επηρεάζουν άλλα συστατικά.
    • Μπορούμε επίσης να επιτύχουμε απόκρυψη δεδομένων χρησιμοποιώντας ενθυλάκωση. Στο Παράδειγμα 1 , εάν αλλάξουμε τις μεταβλητές μήκους και πλάτους σε privateή protected, τότε η πρόσβαση σε αυτά τα πεδία είναι περιορισμένη.
      Και, παραμένουν κρυμμένα από τις εξωτερικές τάξεις. Αυτό ονομάζεται απόκρυψη δεδομένων .

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

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

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

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

     #include using namespace std; class Rectangle ( private: // Variables required for area calculation int length; int breadth; public: // Setter function for length void setLength(int len) ( length = len; ) // Setter function for breadth void setBreadth(int brth) ( breadth = brth; ) // Getter function for length int getLength() ( return length; ) // Getter function for breadth int getBreadth() ( return breadth; ) // Function to calculate area int getArea() ( return length * breadth; ) ); int main() ( // Create object of Rectangle class Rectangle rectangle1; // Initialize length using Setter function rectangle1.setLength(8); // Initialize breadth using Setter function rectangle1.setBreadth(6); // Access length using Getter function cout << "Length = " << rectangle1.getLength() << endl; // Access breadth using Getter function cout << "Breadth = " << rectangle1.getBreadth() << endl; // Call getArea() function cout << "Area = " << rectangle1.getArea(); return 0; )

    Παραγωγή

     Μήκος = 8 Πλάτος = 6 Περιοχή = 48

    Εδώ, έχουμε κάνει τις μεταβλητές μήκους και πλάτους private.

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

    Για να αποκτήσετε πρόσβαση σε αυτές τις ιδιωτικές μεταβλητές, έχουμε χρησιμοποιήσει publicλειτουργίες setLength(), getLength(), setBreadth()και getBreadth(). Αυτά ονομάζονται συναρτήσεις getter και setter.

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

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

     // error: rectangle1.length is inaccessible rectangle1.length = 8; // error: rectangle1.breadth is inaccessible rectangle1.length = 6;

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