Πίνακας περιεχομένων:
Βίντεο: From C to Python by Ross Rheingans-Yoo 2024
Η Java είναι αντικειμενοστρεφής. Τι σημαίνει αυτό? Σε αντίθεση με τις γλώσσες, όπως το FORTRAN, οι οποίες επικεντρώνονται στο να δώσουν στον υπολογιστή τις επιταγές "Κάνε αυτό / Κάνε ότι", οι αντικειμενοστρεφείς γλώσσες επικεντρώνονται στα δεδομένα. Φυσικά, τα αντικειμενοστραφή προγράμματα εξακολουθούν να λένε στον υπολογιστή τι πρέπει να κάνουν. Ξεκινούν, ωστόσο, με την οργάνωση των δεδομένων, και οι εντολές έρχονται αργότερα.
Οι αντικειμενοστρεφείς γλώσσες είναι καλύτερες από τις γλώσσες "Κάνε αυτό / κάνε αυτό" επειδή οργανώνουν δεδομένα με τρόπο που επιτρέπει στους ανθρώπους να κάνουν όλα τα πράγματα με αυτό. Για να τροποποιήσετε τα δεδομένα, μπορείτε να βασιστείτε σε αυτά που έχετε ήδη και όχι να καταργήσετε όλα όσα έχετε κάνει και να αρχίσετε κάθε φορά που χρειάζεται να κάνετε κάτι νέο. Αν και οι προγραμματιστές υπολογιστών είναι γενικά έξυπνοι άνθρωποι, πήραν λίγο χρόνο για να το καταλάβουν.
Αντικείμενα και κλάσεις τους
Σε μια αντικειμενοστρεφή γλώσσα, χρησιμοποιείτε αντικείμενα και για να οργανώσετε τα δεδομένα σας.
Φανταστείτε ότι γράφετε ένα πρόγραμμα ηλεκτρονικού υπολογιστή για να παρακολουθείτε τα σπίτια σε μια νέα κατασκευή συγκυριαρχία (ακόμα υπό κατασκευή). Τα σπίτια διαφέρουν ελάχιστα μεταξύ τους. Κάθε σπίτι έχει ένα ξεχωριστό χρώμα παρασκηνίου, ένα χρώμα εσωτερικού χρώματος, ένα στυλ ντουλαπιού κουζίνας και ούτω καθεξής. Στο αντικειμενοστραφικό πρόγραμμα υπολογιστή, κάθε σπίτι είναι ένα αντικείμενο.
Αλλά τα αντικείμενα δεν είναι ολόκληρη η ιστορία. Αν και τα σπίτια διαφέρουν ελαφρά μεταξύ τους, όλα τα σπίτια μοιράζονται τον ίδιο κατάλογο χαρακτηριστικών. Για παράδειγμα, κάθε σπίτι έχει ένα χαρακτηριστικό γνωστό ως χρώμα παρακαμπτήριος. Κάθε σπίτι έχει ένα άλλο χαρακτηριστικό γνωστό ως στυλ ντουλαπιού κουζίνας. Στο πρόγραμμα αντικειμενοστραφής, χρειάζεστε μια κύρια λίστα που περιέχει όλα τα χαρακτηριστικά που μπορεί να έχει ένα αντικείμενο σπιτιού. Αυτή η κύρια λίστα χαρακτηριστικών ονομάζεται κατηγορία .
Έτσι το έχετε. Ο αντικειμενοστραφής προγραμματισμός είναι εσφαλμένος. Θα πρέπει πραγματικά να ονομάζεται "προγραμματισμός με τάξεις και αντικείμενα. "
Παρατηρήστε ότι η λέξη τάξεις αναφέρθηκε πρώτα; Σκεφτείτε ξανά για μια ανάπτυξη κατοικιών που βρίσκεται υπό κατασκευή. Κάπου στο μέρος, σε ένα ραγισμένο ρυμουλκούμενο που βρίσκεται σε γυμνή βρωμιά, είναι ένας κύριος κατάλογος χαρακτηριστικών γνωστών ως σχέδιο. Το σχέδιο ενός αρχιτέκτονα είναι σαν μια τάξη προγραμματιστή αντικειμένων. Ένα σχέδιο είναι ένας κατάλογος χαρακτηριστικών που κάθε σπίτι θα έχει. Το σχέδιο λέει, "παρακαμπτήριος. "Το πραγματικό αντικείμενο του σπιτιού έχει γκριση. Το σχέδιο λέει, "ντουλάπι κουζίνας. "Το πραγματικό αντικείμενο σπίτι έχει ντουλάπια κουζίνα Louis XIV.
Ένα χρόνο μετά τη δημιουργία του σχεδίου, το χρησιμοποιείτε για να χτίσετε δέκα σπίτια. Είναι το ίδιο με τα μαθήματα και τα αντικείμενα. Πρώτον, ο προγραμματιστής γράφει κώδικα για να περιγράψει μια τάξη. Στη συνέχεια, όταν εκτελείται το πρόγραμμα, ο υπολογιστής δημιουργεί αντικείμενα από την κλάση (σχεδίασης).
Αυτή είναι η πραγματική σχέση μεταξύ τάξεων και αντικειμένων. Ο προγραμματιστής ορίζει μια κλάση και από τον ορισμό της κλάσης ο υπολογιστής δημιουργεί μεμονωμένα αντικείμενα.
Τι είναι τόσο καλό για μια αντικειμενοστραφή γλώσσα;
Φανταστείτε ότι έχετε ήδη γράψει ένα πρόγραμμα ηλεκτρονικών υπολογιστών για να παρακολουθείτε τις οδηγίες κατασκευής κατοικιών σε μια νέα εξέλιξη. Στη συνέχεια, το μεγάλο αφεντικό αποφασίζει για ένα τροποποιημένο σχέδιο - ένα σχέδιο στο οποίο τα μισά σπίτια έχουν τρία υπνοδωμάτια, και το άλλο μισό έχει τέσσερα.
Εάν χρησιμοποιείτε το παλιό FORTRAN / C στυλ προγραμματισμού υπολογιστών, οι οδηγίες σας μοιάζουν με αυτό:
Βγάλτε ένα χαντάκι για το υπόγειο.
Τοποθετήστε σκυρόδεμα γύρω από τις πλευρές του τάφρου.
Τοποθετήστε τα δύο προς τα τέσσερα κατά μήκος των πλευρών για το πλαίσιο του υπογείου.
…
Αυτό θα ήταν σαν ένας αρχιτέκτονας που δημιούργησε μια μακρά λίστα οδηγιών αντί για ένα σχέδιο. Για να τροποποιήσετε το σχέδιο, θα πρέπει να ταξινομήσετε τη λίστα για να βρείτε τις οδηγίες για την κατασκευή υπνοδωματίων. Για να χειροτερέψουν τα πράγματα, οι οδηγίες θα μπορούσαν να διασκορπιστούν μεταξύ των σελίδων 234, 394-410, 739, 10 και 2. Εάν ο οικοδόμος έπρεπε να αποκρυπτογραφήσει τις σύνθετες οδηγίες των άλλων ανθρώπων, το έργο θα ήταν δέκα φορές πιο δύσκολο.
Ξεκινώντας όμως με μια τάξη, είναι σαν να ξεκινάτε με ένα σχέδιο. Εάν αποφασίσετε να έχετε σπίτια τριών και τεσσάρων υπνοδωματίων, μπορείτε να ξεκινήσετε με ένα σχέδιο που ονομάζεται σπίτι σπίτι σχέδιο που έχει ένα ισόγειο και ένα δεύτερο όροφο, αλλά δεν έχει εσωτερικούς τοίχους που σχεδιάζονται στον δεύτερο όροφο. Στη συνέχεια, κάνετε δύο ακόμα σχέδια στο δεύτερο όροφο - ένα για το σπίτι τριών υπνοδωματίων και ένα άλλο για το σπίτι τεσσάρων υπνοδωματίων. (Μπορείτε να ονομάσετε αυτά τα νέα σχέδια σχέδιο κατοικιών με τρία υπνοδωμάτια και το σχέδιο κατοικία τεσσάρων υπνοδωματίων )
Οι συνεργάτες του οικοδόμου σας εκπλήσσονται με την αίσθηση λογικής και οργάνωσής σας, αλλά έχουν ανησυχίες. Θέτουν μια ερώτηση. "Κάλεσα ένα από τα σχέδια του σχεδίου« σπίτι τριών υπνοδωματίων ». Πώς μπορείτε να το κάνετε αυτό αν είναι ένα σχέδιο για έναν δεύτερο όροφο και όχι για ένα ολόκληρο σπίτι; "
Χαμογελίσετε ενσυνείδητα και απαντήστε," Το σχέδιο του σπιτιού τριών υπνοδωματίων μπορεί να πει, "Για πληροφορίες σχετικά με τους κάτω ορόφους, δείτε το αρχικό σχέδιο κατοικίας. «Έτσι, το σχέδιο των τριών υπνοδωματίων περιγράφει ένα ολόκληρο σπίτι. Το σχέδιο τεσσάρων υπνοδωματίων μπορεί να πει το ίδιο πράγμα. Με αυτή τη ρύθμιση, μπορούμε να επωφεληθούμε από όλη την εργασία που κάναμε ήδη για να δημιουργήσουμε το αρχικό σχέδιο και να εξοικονομήσουμε χρήματα. "
Στη γλώσσα του αντικειμενοστρεφούς προγραμματισμού, οι τάξεις τριών και τεσσάρων δωματίων κληρονομούν τα χαρακτηριστικά της αρχικής κατηγορίας κατοικιών. Μπορείτε επίσης να πείτε ότι τα μαθήματα κατοικιών τριών και τεσσάρων υπνοδωματίων είναι επεκτείνοντας την αρχική τάξη των σπιτιών.
Η αρχική κατηγορία κατοικιών ονομάζεται superclass των τάξεων τριών και τεσσάρων υπνοδωματίων.Σε αυτή την κατεύθυνση, οι τάξεις τριών και τεσσάρων υπνοδωματίων είναι υποκατηγορίες της αρχικής κατηγορίας κατοικιών. Με άλλο τρόπο, η αρχική κατηγορία κατοικιών ονομάζεται γονική τάξη κατηγοριών κατοικιών τριών και τεσσάρων υπνοδωματίων. Τα μαθήματα κατοικιών τριών και τεσσάρων υπνοδωματίων είναι τάξεις παιδιών της αρχικής κατηγορίας κατοικιών.
Περιττό να πούμε ότι οι συνάδελφοί σας στο σπίτι-οικοδόμος ζηλεύουν. Ένα πλήθος οικοδόμων κατοικεί γύρω σας για να ακούσει για τις μεγάλες ιδέες σας. Έτσι, εκείνη την στιγμή, αφήνετε μια ακόμα βόμβα: "Δημιουργώντας μια τάξη με υποκατηγορίες, μπορούμε να ξαναχρησιμοποιούμε το σχέδιο στο μέλλον. Αν κάποιος έρθει μαζί και θέλει ένα σπίτι πέντε υπνοδωματίων, μπορούμε να επεκτείνουμε το αρχικό σχέδιο των σπιτιών κάνοντας ένα σχέδιο κατοικίας πέντε υπνοδωματίων. Ποτέ δεν θα χρειαστεί να δαπανήσουμε ξανά χρήματα για ένα πρωτότυπο σχέδιο κατοικίας. "
" Αλλά, "λέει ένας συνάδελφος στην πίσω σειρά," τι συμβαίνει εάν κάποιος θέλει έναν διαφορετικό σχεδιασμό στον πρώτο όροφο; Μήπως σκουπίσουμε το αρχικό σχέδιο του σπιτιού ή αρχίσουμε να γράψουμε σε όλο το αρχικό σχέδιο; Αυτό θα κοστίσει μεγάλα δολάρια, έτσι δεν είναι; "
Σε ένα σίγουρο τόνο, απαντάτε:" Δεν χρειάζεται να χάσουμε το αρχικό σχέδιο του σπιτιού. Εάν κάποιος θέλει ένα τζακούζι στο σαλόνι του, μπορούμε να φτιάξουμε ένα νέο, μικρό σχέδιο που θα περιγράφει μόνο το νέο σαλόνι και θα το ονομάσουμε αυτό το σχέδιο τζακούζι-στο-σαλόνι . Στη συνέχεια, αυτό το νέο σχέδιο μπορεί να αναφέρεται στο αρχικό σχέδιο του σπιτιού για πληροφορίες σχετικά με το υπόλοιπο του σπιτιού (το μέρος που δεν είναι στο σαλόνι). "Στη γλώσσα του αντικειμενοστρεφούς προγραμματισμού, το σχέδιο του σπιτιού Jacuzzi-in-living-room ακόμα εκτείνεται το αρχικό σχέδιο του σπιτιού. Το τζακούζι σχέδιο εξακολουθεί να είναι μια υποκατηγορία του αρχικού σχεδίου σπίτι. Στην πραγματικότητα, ισχύει όλη η ορολογία για την κλάση υπερκλάσης, γονικής τάξης και κατηγορίας παιδιών. Το μόνο που είναι νέο είναι ότι το τζακούζι σχέδιο υπερισχύει το σαλόνι διαθέτει στο αρχικό σχέδιο του σπιτιού.
Τις ημέρες πριν από τις αντικειμενοστρεφείς γλώσσες, ο κόσμος του προγραμματισμού αντιμετώπισε κρίση στην ανάπτυξη λογισμικού. Οι προγραμματιστές έγραψαν κώδικα, ανακάλυψαν νέες ανάγκες και στη συνέχεια έπρεπε να σκουπίσουν τον κώδικα τους και να ξεκινήσουν από το μηδέν. Αυτό συνέβη ξανά και ξανά επειδή ο κώδικας που γράφουν οι προγραμματιστές δεν μπορούσε να επαναχρησιμοποιηθεί. Ο αντικειμενοστραφής προγραμματισμός άλλαξε όλα αυτά προς το καλύτερο.