Ποια είναι η ακριβής διαφορά μεταξύ της αφαίρεσης, της εγκλεισμού και της κρυπτογράφησης πληροφοριών στον OOP (αντικειμενοστρεφές προγραμματισμό);


Απάντηση 1:

Τελικά, η απόκρυψη και η απόκρυψη πληροφοριών είναι αλληλοσυνδεδεμένες μεταξύ τους, όπου το Encapsulation είναι αρκετά διαφορετικό από τα παραπάνω.

Ενθυλάκωση - Τα στοιχεία σύνδεσης και οι συναφείς λειτουργίες τους απλά σαν (στοιχεία δεδομένων + λειτουργίες μελών). Μερικές φορές τα στοιχεία δεδομένων αναφέρονται ως "μεταβλητές" και οι λειτουργίες των μελών αναφέρονται ως "μέθοδοι".

Αφαίρεση - Απόκρυψη "μόνο" των απαραίτητων λεπτομερειών από τον τελικό χρήστη

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

(Στο ΣΔΒΔ - αναφέρεται ως "προβολές")

Πληροφορίες Απόκρυψη - Απόκρυψη των λεπτομερειών υλοποίησης για λόγους ασφαλείας. Σκεφτείτε λοιπόν το ATM μας .. Το μόνο που ξέρουμε είναι να αποσύρει το ποσό .. αλλά πώς λειτουργεί πραγματικά .. και πώς η συναλλαγή συμβαίνει είναι εντελώς κρυμμένη.


Απάντηση 2:

Δεν ήμουν σίγουρος αν μπορούσα να κάνω μια καλή διάκριση μεταξύ εγκλωβισμού και κρυπτογράφησης πληροφοριών, αλλά προσπάθησα να απαντήσω και στα 3 θέματα που ρωτήσατε στην απάντηση του Mark Miller στον αντικειμενοστραφή προγραμματισμό: διαφορά μεταξύ αφαίρεσης, εγκλεισμού και κρυπτογράφησης πληροφοριών;

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


Απάντηση 3:

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

Η ενθυλάκωση εκφράζει μια λειτουργική ιδέα σε μια μονάδα προγραμματισμού. Για παράδειγμα, σε ένα πρόγραμμα σκακιού μια τάξη Knight θα ενθυλάκωσε τα πράγματα που μπορεί να κάνει ένα σκάκι Knight - έτσι θα μπορούσατε να ζητήσετε από τον Ιππότη "Μπορείτε να μετακινηθείτε από το σημείο στο οποίο θα τοποθετήσετε το x, y;" Και ο Ιππότης θα μπορούσε να απαντήσει ναι ή όχι - ο Ιππότης ενσωματώνει τη γνώση του πώς κινούνται οι Ιππότες.

Η απόκρυψη πληροφοριών διασφαλίζει ότι τα πράγματα που δεν χρειάζεται να είναι ορατά στους χρήστες μιας κλάσης / αντικειμένου κρύβονται. Για παράδειγμα, ο Ιππότης μου θα μπορούσε να αποθηκεύσει τις γνώσεις του για τον τρόπο με τον οποίο οι Ιππότες κινούνται σε ένα πίνακα αναζήτησης ή σε κάποιο σύνολο αριθμητικών υπολογισμών. Ο χρήστης ενός Knight δεν χρειάζεται να το γνωρίζει - είναι πληροφορίες που πρέπει να αποκρύπτονται.

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


Απάντηση 4:

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

Η ενθυλάκωση εκφράζει μια λειτουργική ιδέα σε μια μονάδα προγραμματισμού. Για παράδειγμα, σε ένα πρόγραμμα σκακιού μια τάξη Knight θα ενθυλάκωσε τα πράγματα που μπορεί να κάνει ένα σκάκι Knight - έτσι θα μπορούσατε να ζητήσετε από τον Ιππότη "Μπορείτε να μετακινηθείτε από το σημείο στο οποίο θα τοποθετήσετε το x, y;" Και ο Ιππότης θα μπορούσε να απαντήσει ναι ή όχι - ο Ιππότης ενσωματώνει τη γνώση του πώς κινούνται οι Ιππότες.

Η απόκρυψη πληροφοριών διασφαλίζει ότι τα πράγματα που δεν χρειάζεται να είναι ορατά στους χρήστες μιας κλάσης / αντικειμένου κρύβονται. Για παράδειγμα, ο Ιππότης μου θα μπορούσε να αποθηκεύσει τις γνώσεις του για τον τρόπο με τον οποίο οι Ιππότες κινούνται σε ένα πίνακα αναζήτησης ή σε κάποιο σύνολο αριθμητικών υπολογισμών. Ο χρήστης ενός Knight δεν χρειάζεται να το γνωρίζει - είναι πληροφορίες που πρέπει να αποκρύπτονται.

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


Απάντηση 5:

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

Η ενθυλάκωση εκφράζει μια λειτουργική ιδέα σε μια μονάδα προγραμματισμού. Για παράδειγμα, σε ένα πρόγραμμα σκακιού μια τάξη Knight θα ενθυλάκωσε τα πράγματα που μπορεί να κάνει ένα σκάκι Knight - έτσι θα μπορούσατε να ζητήσετε από τον Ιππότη "Μπορείτε να μετακινηθείτε από το σημείο στο οποίο θα τοποθετήσετε το x, y;" Και ο Ιππότης θα μπορούσε να απαντήσει ναι ή όχι - ο Ιππότης ενσωματώνει τη γνώση του πώς κινούνται οι Ιππότες.

Η απόκρυψη πληροφοριών διασφαλίζει ότι τα πράγματα που δεν χρειάζεται να είναι ορατά στους χρήστες μιας κλάσης / αντικειμένου κρύβονται. Για παράδειγμα, ο Ιππότης μου θα μπορούσε να αποθηκεύσει τις γνώσεις του για τον τρόπο με τον οποίο οι Ιππότες κινούνται σε ένα πίνακα αναζήτησης ή σε κάποιο σύνολο αριθμητικών υπολογισμών. Ο χρήστης ενός Knight δεν χρειάζεται να το γνωρίζει - είναι πληροφορίες που πρέπει να αποκρύπτονται.

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


Απάντηση 6:

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

Η ενθυλάκωση εκφράζει μια λειτουργική ιδέα σε μια μονάδα προγραμματισμού. Για παράδειγμα, σε ένα πρόγραμμα σκακιού μια τάξη Knight θα ενθυλάκωσε τα πράγματα που μπορεί να κάνει ένα σκάκι Knight - έτσι θα μπορούσατε να ζητήσετε από τον Ιππότη "Μπορείτε να μετακινηθείτε από το σημείο στο οποίο θα τοποθετήσετε το x, y;" Και ο Ιππότης θα μπορούσε να απαντήσει ναι ή όχι - ο Ιππότης ενσωματώνει τη γνώση του πώς κινούνται οι Ιππότες.

Η απόκρυψη πληροφοριών διασφαλίζει ότι τα πράγματα που δεν χρειάζεται να είναι ορατά στους χρήστες μιας κλάσης / αντικειμένου κρύβονται. Για παράδειγμα, ο Ιππότης μου θα μπορούσε να αποθηκεύσει τις γνώσεις του για τον τρόπο με τον οποίο οι Ιππότες κινούνται σε ένα πίνακα αναζήτησης ή σε κάποιο σύνολο αριθμητικών υπολογισμών. Ο χρήστης ενός Knight δεν χρειάζεται να το γνωρίζει - είναι πληροφορίες που πρέπει να αποκρύπτονται.

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