Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Μήνυμα ξεκίνησε από: turn_on στις 13 Απρ 2024, 01:00:35 ΜΜ

Τίτλος: Ενθυλάκωση
Αποστολή από: turn_on στις 13 Απρ 2024, 01:00:35 ΜΜ
Καλημέρα, σας παρακαλώ μπορεί να μου πει κανείς λίγα πράγματα παραπάνω από το βιβλίο για την ενθυλάκωση στον αντικειμενοστραφή προγραμματισμό; 

Ευχαριστώ πολύ :)
Τίτλος: Απ: Ενθυλάκωση
Αποστολή από: pgrontas στις 13 Απρ 2024, 07:44:55 ΜΜ
Επειδή δεν μπορούμε να γράφουμε κατεβατά θα κάνω μια αρχή και ό,τι θες ρωτάς. Υποθέτω ότι είσαι μαθητής.

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

Ή ένα παράδειγμα που αξιοποιεί τις προηγούμενες γνώσεις που πιθανώς έχεις.
Στη στοίβα ίσως έχεις μάθει ότι απαγορεύεται να πειράξεις οποιοδήποτε στοιχείο του πίνακα εκτός από αυτό δείχνει η κορυφή. Δηλαδή αν κορυφή = 5 απαγορεύεται να προσπελάσεις το Α[1].
Όμως στην υλοποίηση που έχει το βιβλίο μπορείς να το κάνεις.
Αν η στοίβα ήταν κλάση, τότε ο πίνακας θα ήταν ενθυλακωμένος (κρυμμένος δηλαδή) και δεν θα τον έβλεπες ώστε να κάνεις τυχαία προσπέλαση. Η πρόσβαση στην στοίβα θα ήταν μέσω των μεθόδων ώθηση, απώθηση (η διεπαφή για τη στοίβα). Και μάλιστα, δεν θα ήξερες αν η στοίβα ήταν εσωτερικά πίνακας (θα μπορούσε κάλλιστα να είχε λίστα).
Τίτλος: Απ: Ενθυλάκωση
Αποστολή από: NIKOS_KALYVAS στις 13 Απρ 2024, 08:30:21 ΜΜ
Σκέψου την ενθυλάκωση σαν ένα πακέτο που περιέχει σχετικές πληροφορίες και λειτουργίες μαζί. Στην πραγματικότητα, αυτό το "πακέτο" είναι ένα αντικείμενο.

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

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

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

Με άλλα λόγια, η ενθυλάκωση στο παράδειγμα του αυτοκινήτου σημαίνει ότι συγκεντρώνουμε όλες τις σχετικές πληροφορίες και λειτουργίες που αφορούν ένα αυτοκίνητο και τις οργανώνουμε μέσα σε ένα μόνο αντικείμενο. Αυτό μας επιτρέπει να διαχειριζόμαστε και να εκτελούμε ενέργειες στα αυτοκίνητά μας με οργάνωση και αποτελεσματικότητα.
Τίτλος: Απ: Ενθυλάκωση
Αποστολή από: petrosp13 στις 13 Απρ 2024, 09:16:51 ΜΜ
Αυτό που μου άρεσε στον αντικειμενοστραφή και μάλλον ταιριάζει σε αυτό που συζητάμε είναι ότι δημιουργείς την κλάση π.χ. ποδοσφαιριστής, βάζεις μέσα τα πάντα-όλα για αυτόν και μετά

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

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

Όπως δηλώνεις μεταβλητές στην ΓΛΩΣΣΑ, έτσι δημιουργείς αντικείμενα από μια κλάση που έβαλες τα πάντα εκεί γι'αυτήν
Τίτλος: Απ: Ενθυλάκωση
Αποστολή από: turn_on στις 13 Απρ 2024, 10:22:11 ΜΜ
Ευχαριστώ πάρα πολύ. Βοήθησαν αρκετά όλα όσα μου στείλατε. Δεν καταλαβαίνω όμως πως θα μπορούσε να μπει σαν θέμα όλο αυτό. Μόνο σαν ορισμός βιβλίου π.χ.?

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