Διαφορά μεταξύ αφαίρεσης και εγκλεισμού Διαφορά

Anonim

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

Τι είναι η αφαίρεση;

Η αφαίρεση είναι μια βασική ιδέα OOP η οποία επικεντρώνεται μόνο στα σχετικά δεδομένα ενός αντικειμένου και αποκρύπτει όλες τις άσχετες λεπτομέρειες που μπορεί ή δεν μπορεί να είναι για γενική ή εξειδικευμένη συμπεριφορά. Κρύβει τις λεπτομέρειες φόντου και δίνει έμφαση στα βασικά σημεία για να μειώσει την πολυπλοκότητα και να αυξήσει την αποδοτικότητα. Βασικά, η αφαίρεση είναι ένα εργαλείο προγραμματισμού για τη διαχείριση της πολυπλοκότητας. Η αφαίρεση επικεντρώνεται σε ιδέες και όχι σε γεγονότα. Κρύβει τις λεπτομέρειες στο επίπεδο σχεδιασμού παρέχοντας λειτουργικότητα στους χρήστες. Το προκύπτον αντικείμενο μπορεί επίσης να ονομάζεται αφαίρεση. Ο προγραμματιστής βεβαιώνεται ότι η ονομαζόμενη οντότητα θα έχει όλες τις βασικές πτυχές που περιλαμβάνονται και καμία από τις άσχετες.

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

Τι είναι το Encapsulation;

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

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

Η διαφορά μεταξύ αφαίρεσης και εγκλεισμού

Ενώ και οι δύο είναι θεμελιώδεις έννοιες που σχετίζονται με τους OOP και είναι τεχνικά αδιαχώριστες, εξακολουθούν να έχουν τις διαφορές τους σε πολλές πτυχές.

  1. Διαφορές στον ορισμό της αφαίρεσης και της εγκλεισμού - Η αφαίρεση είναι μια θεμελιώδης ιδέα του OOP που δίνει έμφαση σε όλες τις βασικές πτυχές ενός αντικειμένου, αποκρύπτοντας τις άσχετες λεπτομέρειες για την αύξηση της αποδοτικότητας και την εξάλειψη της πολυπλοκότητας. Ενσωμάτωση, από την άλλη πλευρά, είναι ένας μηχανισμός απόκρυψης δεδομένων που περιβάλλει τα δεδομένα και τις πληροφορίες σε μια κάψουλα για να περιορίσει την πρόσβαση από τον έξω κόσμο.
  2. Διαφορές στη Λειτουργικότητα της Αφαίρεσης και της Ενθυλάκωσης - Η αφαίρεση είναι ένας μηχανισμός απόκρυψης δεδομένων που υπογραμμίζει μόνο τα βασικά χαρακτηριστικά για την απλούστευση των σύνθετων προγραμμάτων ενώ η ενθυλάκωση από την άλλη είναι μια μέθοδος δέσμευσης δεδομένα και κωδικούς σε μια ενιαία οντότητα. Η ιδέα είναι να προστατεύονται οι λεπτομέρειες εφαρμογής από την εξωτερική πρόσβαση.
  3. Διαφορές στην "εφαρμογή" της αφαίρεσης και της εγκλεισμού - Η αφαίρεση εφαρμόζεται με τη χρήση αφηρημένης κλάσης και διεπαφής, ενώ η ενθυλάκωση υλοποιείται χρησιμοποιώντας τροποποιητές πρόσβασης. Χρησιμοποιούνται πέντε τύποι τροποποιητών για την ενσωμάτωση δεδομένων: Ιδιωτικό, Δημόσιο, Εσωτερικό, Προστατευόμενο και Προστατευμένο Εσωτερικό.
  4. Διαφορές στην "Αντίληψη" της Αφαίρεσης και της Ενθυλάκωσης - Η ιδέα πίσω από την αφαίρεση είναι να επικεντρωθεί σε αυτό που μάλλον παρά στον τρόπο. Η ενθυλάκωση κρύβει την εσωτερική μηχανική του τρόπου. Για παράδειγμα, όταν οδηγείτε ένα αυτοκίνητο, γνωρίζετε ακριβώς τι κάνει το πεντάλ του φρένου, αλλά ίσως δεν γνωρίζετε ολόκληρο τον μηχανισμό πίσω από αυτό επειδή τα δεδομένα είναι εγκλωβισμένα.
  5. Διαφορές στο παράδειγμα του Abstraction and Encapsulation - Ας πάρουμε ένα παράδειγμα ενός smartphone. Ξέρεις τι κάνει, αλλά μπορεί να μην ξέρεις πώς κάνει τι κάνει. Εσείς ενδιαφέρεστε μόνο για την οθόνη και τα κουμπιά του πληκτρολογίου αντί να ανησυχείτε για τα εσωτερικά κυκλώματα. Εδώ, το smartphone είναι μια περίληψη στην οποία ενσωματώνονται οι εσωτερικές λεπτομέρειες υλοποίησης.

Abstraction vs. Encapsulation με τον πίνακα σύγκρισης

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

Περίληψη

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