Αν έχετε κάνει κάποιο προγραμματισμό για αρχάριους ή ακόμα και έχετε αρχίσει να βλέπετε διαφορετικές γλώσσες, πιθανότατα θα συναντήσετε τη φράση "αντικειμενοστρεφές προγραμματισμός" (ή "OOP").
Υπάρχουν διάφορες τεχνικές εξηγήσεις σχετικά με το τι είναι, αλλά σήμερα πρόκειται να ρίξουμε μια ματιά στον ορισμό του αντικειμενοστρεφούς προγραμματισμού με έναν απλό τρόπο.
Πριν ξεκινήσουμε: Γλώσσες διαδικασίας
Για να καταλάβετε τι είναι μια αντικειμενοστραφή γλώσσα προγραμματισμού, πρέπει να καταλάβετε τι αντικατέστησε. Οι πρώιμες γλώσσες προγραμματισμού ήταν διαδικαστικές-λεγόμενες επειδή ο προγραμματιστής θα ορίσει ένα πολύ συγκεκριμένο σύνολο διαδικασιών που θα αναλάμβανε ο υπολογιστής.
Τις πρώτες μέρες, οι διαδικασίες γράφονταν με κάρτες διάτρησης. Αυτά τα βήματα έλαβαν δεδομένα, πραγματοποίησαν μια σειρά ενεργειών σε αυτά τα δεδομένα και έδωσαν νέα δεδομένα.
Οι διαδικαστικές γλώσσες λειτουργούσαν καλά για κάποιο χρονικό διάστημα (και ορισμένες εξακολουθούν να χρησιμοποιούνται). Αλλά όταν θέλετε να προγραμματίσετε κάτι πέρα από μια βασική ακολουθία βημάτων, οι διαδικαστικές γλώσσες μπορεί να είναι δύσκολο να διαχειριστούν. Εκεί μπαίνει ο αντικειμενοστραφής προγραμματισμός.
Το αντικείμενο αντικειμενοστρεφούς προγραμματισμού
Τότε λοιπόν, τι είναι ο αντικειμενοστρεφής προγραμματισμός;
Η πρώτη αντικειμενοστρεφής γλώσσα (γενικά συμφωνήθηκε να είναι Simula) εισήγαγε την ιδέα των αντικειμένων . Τα αντικείμενα είναι συλλογές πληροφοριών που αντιμετωπίζονται ως μοναδική οντότητα.
Θα εμβαθύνουμε βαθύτερα σε αυτό που πραγματικά σημαίνει σε ένα δευτερόλεπτο με ένα παράδειγμα, αλλά πρώτα πρέπει να μιλήσουμε για τις τάξεις . Οι τάξεις είναι σαν προ-αντικείμενα. Περιέχουν μια λίστα χαρακτηριστικών τα οποία, όταν ορίζονται, γίνονται αντικείμενο.
Ας πάρουμε το παράδειγμα προγραμματισμού ενός παιχνιδιού σκάκι. Μπορεί να έχουμε μια τάξη που ονομάζεται Piece. Εντός του Piece, έχουμε μια λίστα χαρακτηριστικών:
- Χρώμα
- Υψος
- Σχήμα
- Επιτρέπεται η κίνηση
Ένα αντικείμενο απλά ορίζει μια συγκεκριμένη περίπτωση ενός αντικειμένου που ανήκει σε αυτή την τάξη.
Έτσι θα μπορούσαμε να έχουμε ένα αντικείμενο που ονομάζεται WhiteQueen. Αυτό το αντικείμενο θα έχει ορισμούς και για τα τέσσερα χαρακτηριστικά (άσπρο, ψηλό, κυλινδρικό με κροταρίες, οποιοσδήποτε αριθμός χώρων σε οποιαδήποτε κατεύθυνση). Μπορεί επίσης να έχει μεθόδους ή λειτουργίες.
Τι κάνει αυτό τόσο πολύ καλύτερα από τη διαδικαστική προσέγγιση;
Εν ολίγοις, οι αντικειμενοστραφείς γλώσσες προγραμματισμού (όπως η Java) διευκολύνουν την οργάνωση δεδομένων και κωδικοποίησης με τρόπο πιο ευπροσάρμοστο για μεγαλύτερα έργα.
Για να το συζητήσουμε λίγο πιο λεπτομερώς, θα μιλήσουμε για τα τέσσερα βασικά του αντικειμενοστρεφούς προγραμματισμού.
Αντικειμενοστρεφής Προγραμματισμός: Αφαίρεση
Απλά επειδή θέλετε να χρησιμοποιήσετε κάτι δεν σημαίνει ότι πρέπει να ξέρετε πώς λειτουργεί. Μια μηχανή εσπρέσο, για παράδειγμα, είναι πολύπλοκη. Αλλά δεν χρειάζεται να ξέρετε πώς λειτουργεί. Απλά πρέπει να ξέρετε ότι όταν χτυπήσετε "On", θα πάρετε εσπρέσο.
Το ίδιο ισχύει και για τα αντικείμενα στον αντικειμενοστραφή προγραμματισμό. Στο παράδειγμα σκακιού μας, μπορεί να έχουμε μια μέθοδο κίνησης (). Αυτή η μέθοδος μπορεί να απαιτήσει πολλά δεδομένα και άλλες μεθόδους. Μπορεί να χρειαστούν τις αρχικές μεταβλητές θέσης και τελικής θέσης. Θα μπορούσε να χρησιμοποιήσει μια άλλη μέθοδο για να καθορίσει εάν έχει συλληφθεί ένα κομμάτι.
Αλλά δεν χρειάζεται να το ξέρετε. Το μόνο που χρειάζεται να γνωρίζετε είναι ότι όταν πείτε στο κομμάτι να κινηθεί, κινείται. Αυτή είναι η αφαίρεση.
Αντικειμενοστρεφής Προγραμματισμός: Ενθυλάκωση
Η ενθυλάκωση είναι ένας από τους τρόπους με τους οποίους ο προγραμματισμός αντικειμένων προσδίδει αφαίρεση. Κάθε αντικείμενο είναι μια συλλογή δεδομένων που αντιμετωπίζεται ως ενιαία οντότητα. Και μέσα σε αυτά τα αντικείμενα υπάρχουν δεδομένα - και οι μεταβλητές και οι μέθοδοι.
Οι μεταβλητές μέσα σε ένα αντικείμενο παραμένουν γενικά ιδιωτικές, πράγμα που σημαίνει ότι άλλα αντικείμενα και μέθοδοι δεν μπορούν να έχουν πρόσβαση σε αυτά. Τα αντικείμενα μπορούν να επηρεαστούν μόνο με τη χρήση των μεθόδων τους.
Ένα αντικείμενο Bishop μπορεί να περιέχει αρκετές πληροφορίες. Για παράδειγμα, θα μπορούσε να έχει μια μεταβλητή που ονομάζεται "θέση". Αυτή η μεταβλητή είναι απαραίτητη για τη χρήση της μεθόδου move (). Και, φυσικά, έχει ένα χρώμα.
Κάνοντας τη μεταβλητή θέσης ιδιωτική και τη μέθοδο move () δημόσια, ένας προγραμματιστής προστατεύει τη μεταβλητή κίνησης από το να επηρεάζεται από οτιδήποτε άλλο. Και αν το χρώμα είναι μια ιδιωτική μεταβλητή, δεν υπάρχει τρόπος για άλλο αντικείμενο να το αλλάξει εκτός αν υπάρχει μια μέθοδος που επιτρέπει την αλλαγή. (Που πιθανώς δεν θα έχετε, καθώς το χρώμα του κομματιού θα πρέπει να παραμείνει σταθερό.)
Αυτές οι μεταβλητές και οι μέθοδοι διατηρούνται στο αντικείμενο Bishop. Επειδή είναι εγκλωβισμένοι, ένας προγραμματιστής μπορεί να κάνει μια αλλαγή στη δομή ή τα περιεχόμενα του αντικειμένου χωρίς να ανησυχεί για τη δημόσια διεπαφή.
Αντικειμενοστρεφής Προγραμματισμός: Κληρονομικότητα
Εκτός από τις τάξεις, οι αντικειμενοστραφείς γλώσσες προγραμματισμού έχουν επίσης υποκατηγορίες. Αυτά περιέχουν όλα τα χαρακτηριστικά από την κλάση γονέα, αλλά μπορούν επίσης να περιέχουν και άλλα χαρακτηριστικά.
Στο παιχνίδι σκακιού μας, τα κομμάτια του πιόνου χρειάζονται μια μέθοδο που μπορεί να τα μετατρέψει σε άλλα κομμάτια εάν τα φτάσουν στο τέλος του πίνακα. Θα την ονομάσουμε τη μέθοδο transformPiece ().
Δεν κάθε κομμάτι χρειάζεται τη μέθοδο transformPiece (). Έτσι δεν θα θέλαμε να το βάλουμε στην τάξη Piece. Αντ 'αυτού, μπορούμε να δημιουργήσουμε μια υποκατηγορία που ονομάζεται Πιόνι. Επειδή είναι μια υποκατηγορία, κληρονομεί όλα τα χαρακτηριστικά από το Piece. Έτσι, ένα παράδειγμα του υποτίτλου Πένα περιλαμβάνει ένα χρώμα, ύψος, σχήμα και κίνηση επιτρέπεται.
Αλλά περιλαμβάνει επίσης τη μέθοδο transformPiece (). Τώρα δεν πρέπει ποτέ να ανησυχούμε για τυχαία χρήση αυτής της λειτουργίας σε ένα βράχο. Ακολουθεί μια τεχνική εξήγηση:
Η δημιουργία υποκατηγοριών εξοικονομεί επίσης πολύ χρόνο. Αντί να δημιουργούν νέες τάξεις για τα πάντα, οι προγραμματιστές μπορούν να δημιουργήσουν μια βασική κλάση και στη συνέχεια να την επεκτείνουν σε νέες υποκατηγορίες όταν χρειαστεί. (Ωστόσο, αξίζει να σημειωθεί ότι η υπερβολική εξάρτηση από την κληρονομιά είναι κακή 10 Βασικές Αρχές Προγραμματισμού Κάθε Προγραμματιστής πρέπει να ακολουθεί 10 Βασικές Αρχές Προγραμματισμού Κάθε Προγραμματιστής πρέπει να ακολουθεί Πάντα να γράφετε κώδικα που μπορεί να διατηρηθεί από οποιονδήποτε μπορεί να καταλήξει να εργάζεται στο λογισμικό σας. τέλος, εδώ υπάρχουν αρκετές αρχές προγραμματισμού που θα σας βοηθήσουν να καθαρίσετε την πράξη σας.
Αντικειμενοστρεφής Προγραμματισμός: Πολυμορφισμός
Ο πολυμορφισμός είναι αποτέλεσμα κληρονομικότητας. Η πλήρης κατανόηση του πολυμορφισμού απαιτεί κάποιες γνώσεις προγραμματισμού, γι 'αυτό απλά θα μείνουμε με τα βασικά εδώ. Εν ολίγοις, ο πολυμορφισμός επιτρέπει στους προγραμματιστές να χρησιμοποιούν μεθόδους με το ίδιο όνομα, αλλά με διαφορετικά αντικείμενα .
Για παράδειγμα, η κλάση Piece μας μπορεί να έχει μια μέθοδο κίνησης () που μετακινεί ένα κομμάτι ένα χώρο προς οποιαδήποτε κατεύθυνση. Αυτό λειτουργεί για το κομμάτι βασιλιά, αλλά όχι για τίποτα άλλο. Για να διορθώσουμε αυτό το πρόβλημα, μπορούμε να ορίσουμε τη νέα μέθοδο move () στην υποκατηγορία Rook που ορίζει την κίνηση ως απεριόριστο αριθμό χώρων προς τα εμπρός, προς τα πίσω, προς τα αριστερά ή προς τα δεξιά.
Τώρα, όταν ένας προγραμματιστής επικαλείται τη μέθοδο move () και χρησιμοποιεί ένα κομμάτι ως το επιχείρημα, το πρόγραμμα θα γνωρίζει ακριβώς πώς πρέπει να κινηθεί το κομμάτι. Αυτό εξοικονομεί έναν τόνο χρόνου για να προσπαθήσετε να καταλάβετε ποια από τις πολλές διαφορετικές μεθόδους που πρέπει να χρησιμοποιήσετε.
Αντικειμενοστρεφής προγραμματισμός σε λίγα λόγια
Εάν το κεφάλι σας γυρίζει λίγο μετά τους τελευταίους τέσσερις ορισμούς, μην ανησυχείτε πάρα πολύ. Εδώ είναι τα κύρια πράγματα που πρέπει να θυμάστε:
- Ο αντικειμενοστραφής προγραμματισμός συλλέγει πληροφορίες σε οντότητες που ονομάζονται αντικείμενα.
- Κάθε αντικείμενο είναι μια μοναδική εμφάνιση μιας κλάσης.
- Η αφαίρεση κρύβει την εσωτερική λειτουργία ενός αντικειμένου όταν δεν είναι απαραίτητο να τα δείτε.
- Το Encapsulation αποθηκεύει σχετικές μεταβλητές και μεθόδους μέσα σε αντικείμενα και τις προστατεύει.
- Η κληρονομιά επιτρέπει στις υποκατηγορίες να χρησιμοποιούν χαρακτηριστικά από τις κλάσεις γονέων.
- Ο πολυμορφισμός επιτρέπει σε αντικείμενα και μεθόδους να αντιμετωπίζουν πολλαπλές διαφορετικές καταστάσεις με μία μόνο διεπαφή.
Εάν μπορείτε να θυμηθείτε αυτά τα σημεία, θα έχετε μια καλή λαβή για το τι είναι αντικειμενοστραφή προγραμματισμός. Οι τέσσερις βασικές αρχές του αντικειμενοστρεφούς προγραμματισμού, όπως ανέφερα, μπορεί να είναι λίγο δύσκολο να αποκτήσουν μια λαβή. Αλλά μόλις αρχίσετε να προγραμματίζετε, θα γίνουν πιο σαφείς.
Θυμηθείτε ότι συζητήσαμε μόνο τις γενικότητες σε αυτό το άρθρο. Οι διαφορετικές αντικειμενοστρεφείς γλώσσες θα έχουν τις δικές τους ιδιορρυθμίες και τους τρόπους για να συμβούν τα πράγματα. Μόλις επιλέξετε τη σωστή γλώσσα για εσάς Ψάχνετε για τις καλύτερες γλώσσες προγραμματισμού; Ξεκινήστε εδώ! Ψάχνετε για τις καλύτερες γλώσσες προγραμματισμού; Ξεκινήστε εδώ! Είτε είστε εντελώς νέοι στις γλώσσες προγραμματισμού είτε θέλετε να μεταβείτε σε ένα νέο είδος προγραμματισμού, μια από τις πιο σημαντικές ερωτήσεις είναι: "Ποια γλώσσα προγραμματισμού είναι κατάλληλη για μένα;" Διαβάστε περισσότερα, θα αρχίσετε να μαθαίνετε πώς εφαρμόζει τις αρχές OOP στην πράξη.