Ενθυλάκωση

Ξεκίνησε από turn_on, 13 Απρ 2024, 01:00:35 ΜΜ

« προηγούμενο - επόμενο »

turn_on

Καλημέρα, σας παρακαλώ μπορεί να μου πει κανείς λίγα πράγματα παραπάνω από το βιβλίο για την ενθυλάκωση στον αντικειμενοστραφή προγραμματισμό; 

Ευχαριστώ πολύ :)

pgrontas

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

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

Ή ένα παράδειγμα που αξιοποιεί τις προηγούμενες γνώσεις που πιθανώς έχεις.
Στη στοίβα ίσως έχεις μάθει ότι απαγορεύεται να πειράξεις οποιοδήποτε στοιχείο του πίνακα εκτός από αυτό δείχνει η κορυφή. Δηλαδή αν κορυφή = 5 απαγορεύεται να προσπελάσεις το Α[1].
Όμως στην υλοποίηση που έχει το βιβλίο μπορείς να το κάνεις.
Αν η στοίβα ήταν κλάση, τότε ο πίνακας θα ήταν ενθυλακωμένος (κρυμμένος δηλαδή) και δεν θα τον έβλεπες ώστε να κάνεις τυχαία προσπέλαση. Η πρόσβαση στην στοίβα θα ήταν μέσω των μεθόδων ώθηση, απώθηση (η διεπαφή για τη στοίβα). Και μάλιστα, δεν θα ήξερες αν η στοίβα ήταν εσωτερικά πίνακας (θα μπορούσε κάλλιστα να είχε λίστα).
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

NIKOS_KALYVAS

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

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

Όταν δημιουργούμε ένα αντικείμενο δηλαδή ένα αυτοκίνητο (μοντέλο: BMW coupe, χρώμα: Μαύρο, έτος κατασκευής: 2024, ταχύτητα: 0) τα δεδομένα αυτά ανήκουν αποκλειστικά στο συγκεκριμένο αυτοκίνητο που δημιουργήσαμε και διαχειρίζονται μέσω του αντίστοιχου αντικειμένου. Ενθυλακώνονται δηλαδή μέσα στο συγκεκριμένο αυτοκίνητο.

Επίσης οι μέθοδοι επιτάχυνση, επιβράδυνση θα προσδιορίζουν την συμπεριφορά και τη λειτουργία πάλι του συγκεκριμένου αυτοκινήτου. Αν επομένως χρησιμοποιήσει το συγκεκριμένο αυτοκίνητο (ΒΜW) την μέθοδο επιτάχυνση θα επιταχύνει το ίδιο αυτό αντικείμενο και όχι κάποιο άλλο αντικείμενο (κάποιο άλλο αυτοκίνητο).  Δηλαδή oi μέθοδοι εφαρμόζονται αποκλειστικά στο συγκεκριμένο αυτοκίνητο. Ενθυλακώνονται δηλαδή και αυτές μέσα στο συγκεκριμένο αυτοκίνητο.

Με άλλα λόγια, η ενθυλάκωση στο παράδειγμα του αυτοκινήτου σημαίνει ότι συγκεντρώνουμε όλες τις σχετικές πληροφορίες και λειτουργίες που αφορούν ένα αυτοκίνητο και τις οργανώνουμε μέσα σε ένα μόνο αντικείμενο. Αυτό μας επιτρέπει να διαχειριζόμαστε και να εκτελούμε ενέργειες στα αυτοκίνητά μας με οργάνωση και αποτελεσματικότητα.
ΝΙΚΟΣ ΚΑΛΥΒΑΣ
Καθηγητής Πληροφορικής (ΠΕ86)

petrosp13

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

Πέτρος = new Ποδοσφαιριστής

δηλαδή, δημιουργείς με μια εντολή ένα αντικείμενο που χρησιμοποιεί τα πάντα-όλα της κλάσης ποδοσφαιριστής που είναι κρυμμένα εκεί

Όπως δηλώνεις μεταβλητές στην ΓΛΩΣΣΑ, έτσι δημιουργείς αντικείμενα από μια κλάση που έβαλες τα πάντα εκεί γι'αυτήν
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

turn_on

Ευχαριστώ πάρα πολύ. Βοήθησαν αρκετά όλα όσα μου στείλατε. Δεν καταλαβαίνω όμως πως θα μπορούσε να μπει σαν θέμα όλο αυτό. Μόνο σαν ορισμός βιβλίου π.χ.?

Ευχαριστώ πολύ