ΥπολογιστέςΠρογραμματισμός

OOP είναι τι; Βασικές αρχές αντικειμενοστρεφούς προγραμματισμού

Γιατί προτιμάται ο αντικειμενοστρεφής προγραμματισμός στα περισσότερα έργα; Το OOP προσφέρει έναν αποτελεσματικό τρόπο αντιμετώπισης της πολυπλοκότητάς τους. Αντί να θεωρεί το πρόγραμμα ως ακολουθία εκτελέσιμων οδηγιών, το αντιπροσωπεύει ως ομάδα αντικειμένων με συγκεκριμένες ιδιότητες και εκτελεί ορισμένες ενέργειες μαζί τους. Αυτό οδηγεί στη δημιουργία πιο σαφών, πιο αξιόπιστων και εύχρηστων εφαρμογών.

Οι βασικές αρχές του αντικειμενοστρεφούς προγραμματισμού (OOP) διαμορφώθηκαν επειδή εντοπίστηκαν περιορισμοί στις προηγούμενες προσεγγίσεις. Μεταξύ αυτών - απεριόριστη πρόσβαση σε δεδομένα και μεγάλο αριθμό δεσμών που επιβάλλουν περιορισμούς στην εισαγωγή αλλαγών. Η συνειδητοποίηση και οι λόγοι είναι σημαντικοί για να κατανοήσουμε τι είναι ο προγραμματισμός των προγραμμάτων και ποια είναι τα οφέλη του.

Διαδικαστικές γλώσσες

C, Pascal, FORTRAN και παρόμοιες γλώσσες είναι διαδικαστικές. Δηλαδή, κάθε ένας από τους χειριστές τους διατάζει τον υπολογιστή να κάνει κάτι: να πάρει τα δεδομένα, να προσθέσει τους αριθμούς, να διαιρέσει με έξι, να εμφανίσει το αποτέλεσμα. Η αίτηση διαδικαστικής γλώσσας είναι ένας κατάλογος οδηγιών. Εάν είναι μικρό, δεν απαιτείται άλλη οργανωτική αρχή (συχνά αποκαλούμενη παράδειγμα). Ο προγραμματιστής δημιουργεί μια λίστα με οδηγίες και ο υπολογιστής τις εκτελεί.

Διαχωρισμός σε λειτουργίες

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

Η εφαρμογή χωρίζεται σε λειτουργίες, κάθε μία από τις οποίες έχει σαφώς καθορισμένο σκοπό και διεπαφή.

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

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

Προβλήματα διαρθρωτικού προγραμματισμού

Καθώς οι εφαρμογές αυξάνονταν, ο δομικός προγραμματισμός άρχισε να αντιμετωπίζει δυσκολίες. Τα έργα έγιναν πολύ περίπλοκα. Τα γράμματα μετατοπίστηκαν. Υπήρξε ένας μεγαλύτερος αριθμός προγραμματιστών. Η πολυπλοκότητα αυξήθηκε. Το κόστος πέταξε στα ύψη, το γράφημα άλλαξε περαιτέρω και ήρθε η κατάρρευση.

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

Ποιες είναι οι αιτίες αυτών των προβλημάτων που συνδέονται με τις γλώσσες διαδικασίας; Πρώτον, οι λειτουργίες έχουν απεριόριστη πρόσβαση σε παγκόσμια δεδομένα. Δεύτερον, οι άσχετες διαδικασίες και έννοιες δεν μοντελοποιούν τον πραγματικό κόσμο.

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

Απεριόριστη πρόσβαση

Σε ένα πρόγραμμα γραπτό, για παράδειγμα, στο C, υπάρχουν δύο είδη δεδομένων. Οι τοπικοί είναι κρυμμένοι μέσα στη λειτουργία και δεν χρησιμοποιούνται άλλες διαδικασίες.

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

Σε ένα μεγάλο πρόγραμμα υπάρχουν πολλές λειτουργίες και πολλά παγκόσμια στοιχεία. Το πρόβλημα με το διαδικαστικό πρότυπο είναι ότι αυτό οδηγεί σε ακόμη μεγαλύτερο αριθμό πιθανών δεσμών μεταξύ τους.

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

Για παράδειγμα, στο λογιστικό πρόγραμμα, κάποιος αποφασίζει ότι ο κωδικός του αντικειμένου που εξετάζεται πρέπει να αποτελείται από όχι περισσότερο από 5 ψηφία και από τα 12. Αυτό θα απαιτήσει την αλλαγή του τύπου δεδομένων από σύντομη σε μακρά. Τώρα οι λειτουργίες που σχετίζονται με τον κώδικα πρέπει να αλλάξουν για να λειτουργήσουν με τη νέα μορφή.

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

Μοντελοποίηση πραγματικού κόσμου

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

Χαρακτηριστικά

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

Συμπεριφορά

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

Αντιμετώπιση προβλημάτων

Το αντικείμενο στο OOP αντιπροσωπεύεται ως συλλογή δεδομένων και λειτουργιών. Μόνο οι διαδικασίες που καλούνται λειτουργίες μελών στη C ++ σάς επιτρέπουν να λάβετε τις τιμές της. Τα δεδομένα αποκρύπτονται και προστατεύονται από την αλλαγή. Οι τιμές και οι λειτουργίες ενσωματώνονται σε μία μονάδα. Η ενθυλάκωση και η απόκρυψη είναι οι κύριοι όροι στην περιγραφή των γλωσσών OO.

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

Μια εφαρμογή, κατά κανόνα, αποτελείται από πολλά αντικείμενα που αλληλεπιδρούν μεταξύ τους, επικαλούμενα τις λειτουργίες των μελών.

Σήμερα, η πλέον διαδεδομένη γλώσσα του OOP (αντικειμενοστρεφής προγραμματισμός) είναι η C ++ (plus-plus). Το Java δεν διαθέτει ορισμένες λειτουργίες, όπως δείκτες, πρότυπα και πολλαπλή κληρονομικότητα, γεγονός που το καθιστά λιγότερο ισχυρό και ευπροσάρμοστο από το C ++. Το C # δεν έχει ακόμη φτάσει στη δημοτικότητα του C + +.

Θα πρέπει να σημειωθεί ότι τα λεγόμενα λειτουργικά μέλη στη C ++ ονομάζονται μέθοδοι σε ορισμένες άλλες γλώσσες OO, όπως το Smalltalk. Τα στοιχεία δεδομένων ονομάζονται ιδιότητες. Η κλήση μιας μεθόδου αντικειμένου αποστέλλει ένα μήνυμα σε αυτήν.

Αναλογική

Μπορείτε να υποβάλλετε αντικείμενα στα τμήματα της εταιρείας. Στις περισσότερες οργανώσεις, οι εργαζόμενοι δεν εργάζονται μια μέρα με στελέχη, την επόμενη φορά που πληρώνουν τους μισθούς, και στη συνέχεια περάσουν μια εβδομάδα που κάνει λιανικές επιχειρήσεις. Κάθε τμήμα έχει δικό του προσωπικό με σαφώς καθορισμένες ευθύνες. Υπάρχουν επίσης και δικά τους δεδομένα: οι μισθοί, τα στοιχεία πωλήσεων, τα αρχεία υπαλλήλων κλπ. Οι άνθρωποι των τμημάτων συνεργάζονται με τις πληροφορίες τους. Ο διαχωρισμός της εταιρείας διευκολύνει έτσι τον έλεγχο των δραστηριοτήτων της και διατηρεί την ακεραιότητα των δεδομένων. Η λογιστική είναι υπεύθυνη για τη μισθοδοσία. Εάν πρέπει να γνωρίζετε το συνολικό ποσό των μισθών που καταβάλλονται στο νότιο υποκατάστημα τον Ιούλιο, δεν χρειάζεται να διαστρέψετε το αρχείο. Αρκεί να στείλετε μια σημείωση στον υπεύθυνο, να περιμένετε να έχει πρόσβαση αυτό το άτομο και να στείλει μια απάντηση με τις απαιτούμενες πληροφορίες. Αυτό εξασφαλίζει τη συμμόρφωση με τους κανονισμούς και την απουσία εξωτερικών παρεμβολών. Με τον ίδιο τρόπο, το αντικείμενο στο OOP παρέχει την οργάνωση της εφαρμογής.

Θα πρέπει να θυμόμαστε ότι ο προσανατολισμός στα αντικείμενα δεν αφορά τις λεπτομέρειες του προγράμματος. Οι περισσότερες εντολές C ++ αντιστοιχούν σε χειριστές διαδικαστικών γλωσσών όπως το C. Πράγματι, οι λειτουργίες μελών στη C ++ είναι πολύ παρόμοιες με τις λειτουργίες του C. Μόνο ένα ευρύτερο πλαίσιο θα επιτρέψει να προσδιοριστεί εάν η οδηγία είναι διαδικαστική ή αντικειμενοστρεφής.

Αντικείμενο σε OOP: ορισμός

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

Τι πράγματα γίνονται αντικείμενα στο OOP; Παρακάτω είναι τυπικές κατηγορίες.

Το φυσικό αντικείμενο στο OOP είναι:

  • Μεταφορά σε μοτίβα ροής.
  • Ηλεκτρικά στοιχεία σε προγράμματα σχεδιασμού κυκλωμάτων.
  • Χώρες στο μοντέλο της οικονομίας.
  • Αεροσκάφη στο σύστημα ελέγχου εναέριας κυκλοφορίας.

Στοιχεία του περιβάλλοντος υπολογιστή του χρήστη:

  • Μενού
  • Windows?
  • Γραφικά (γραμμή, ορθογώνιο, κύκλο).
  • Πληκτρολόγιο, ποντίκι, εκτυπωτής, μονάδες δίσκου.

Άνθρωποι:

  • Εργαζόμενοι
  • Φοιτητές;
  • Πελάτες;
  • Πωλητές.

Δεδομένα:

  • Λογιστικό βιβλίο.
  • Ένα ιδιωτικό θέμα.
  • Λεξικό.
  • Πίνακας γεωγραφικών αποστάσεων και γεωγραφικών διαστημάτων.

Η σύνδεση μεταξύ αντικειμένων πραγματικού κόσμου και OOP ήταν το αποτέλεσμα ενός συνδυασμού λειτουργιών και δεδομένων: επαναστάτησαν τον προγραμματισμό. Δεν υπάρχει τόσο στενή αλληλογραφία στις γλώσσες διαδικασίας.

Κατηγορίας

Τα αντικείμενα στο OOP είναι μέλη των τάξεων. Τι σημαίνει αυτό; Οι γλώσσες προγραμματισμού έχουν ενσωματωμένους τύπους δεδομένων. Ο τύπος int, δηλαδή ένας ακέραιος αριθμός, είναι προκαθορισμένος σε C ++. Μπορείτε να δηλώσετε οποιοδήποτε αριθμό μεταβλητών int.

Ομοίως, ορίζεται ένα σύνολο αντικειμένων της ίδιας κατηγορίας. Ορίζει τις λειτουργίες και τα δεδομένα που περιλαμβάνονται στα αντικείμενα χωρίς να τα δημιουργεί, όπως και το int δεν δημιουργεί μεταβλητές.

Μια κλάση στο OOP είναι μια περιγραφή ενός αριθμού παρόμοιων αντικειμένων. Ο Πρίγκιπας, ο Σινγκ και η Μαδόνι είναι τραγουδιστές Δεν υπάρχει ούτε ένα άτομο με αυτό το όνομα, αλλά οι άνθρωποι μπορούν να αποκαλούνται αν έχουν τα κατάλληλα χαρακτηριστικά. Το αντικείμενο OOP είναι ένα παράδειγμα της κλάσης.

Κληρονομικότητα

Στη ζωή, τα μαθήματα χωρίζονται σε υποκατηγορίες. Για παράδειγμα, τα ζώα χωρίζονται σε αμφίβια, θηλαστικά, πουλιά, έντομα κλπ.

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

Παρομοίως, η βασική κλάση μπορεί να γίνει η μητρική μερικών προερχόμενων υποκατηγοριών που μπορούν να οριστούν έτσι ώστε να μοιράζονται τα χαρακτηριστικά της με την προσθήκη της δικής της. Η κληρονομικότητα είναι παρόμοια με μια λειτουργία που απλοποιεί το διαδικαστικό πρόγραμμα. Εάν πολλά τμήματα του κώδικα κάνουν σχεδόν το ίδιο, μπορείτε να εξάγετε τα κοινά στοιχεία και να τα βάζετε σε μία διαδικασία. Τρία τμήματα εφαρμογής μπορούν να καλέσουν μια λειτουργία για να εκτελέσουν κοινές ενέργειες, αλλά μπορούν επίσης να εκτελέσουν τις δικές τους λειτουργίες. Ομοίως, η βασική κλάση περιέχει δεδομένα κοινά για την παραγόμενη ομάδα. Όπως και οι λειτουργίες, η κληρονομιά μειώνει το πρόγραμμα OO και αποσαφηνίζει τη διασύνδεση των στοιχείων του.

Επαναχρησιμοποίηση

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

Στο OOP, η κληρονομιά αποτελεί επέκταση της ιδέας της πολλαπλής χρήσης. Από την υπάρχουσα κλάση, χωρίς να την αλλάξετε, μπορείτε να δημιουργήσετε ένα νέο με την προσθήκη άλλων λειτουργιών. Η ευκολία επαναχρησιμοποίησης του υπάρχοντος λογισμικού αποτελεί σημαντικό πλεονέκτημα του OOP. Πιστεύεται ότι αυτό παρέχει μια αύξηση στις αποδόσεις της αρχικής επένδυσης.

Δημιουργία νέων τύπων δεδομένων

Τα αντικείμενα είναι κατάλληλα για τη δημιουργία νέων τύπων δεδομένων. Υποθέστε ότι το πρόγραμμα χρησιμοποιεί δισδιάστατες τιμές (για παράδειγμα, συντεταγμένες ή γεωγραφικό πλάτος και γεωγραφικό μήκος) και υπάρχει η επιθυμία να εκφράζονται ενέργειες με αριθμητικές πράξεις:

Θέση1 = θέση + προέλευση,

Όπου η θέση1, η θέση και η προέλευση είναι ζεύγη ανεξάρτητων αριθμητικών τιμών. Δημιουργώντας μια κλάση που περιλαμβάνει αυτές τις δύο τιμές και δηλώνοντας μεταβλητές με τα αντικείμενά της δημιουργεί έναν νέο τύπο δεδομένων.

Πολυμορφισμός, υπερφόρτωση

Οι χειριστές = (ίσοι) και + (συν) που χρησιμοποιούνται στη αριθμητική θέσης παραπάνω δεν δρουν με τον ίδιο τρόπο όπως με τους ενσωματωμένους τύπους, όπως το int. Η θέση αντικειμένων και άλλες δεν είναι προκαθορισμένες, αλλά έχουν προγραμματιστεί. Πώς γνωρίζουν αυτοί οι χειριστές πώς να τα χειριστούν; Η απάντηση έγκειται στο γεγονός ότι μπορείτε να ορίσετε νέα πρότυπα συμπεριφοράς για αυτούς. Αυτές οι λειτουργίες είναι λειτουργίες μελών της κλάσης Θέσης.

Η χρήση χειριστών ή διαδικασιών, ανάλογα με το τι συνεργάζονται, ονομάζεται πολυμορφισμός. Όταν ένας υφιστάμενος χειριστής, όπως ο + ή =, μπορεί να εργαστεί με έναν νέο τύπο δεδομένων, λέγεται ότι είναι υπερφορτωμένος. Η υπερφόρτωση στο OOP είναι ένα είδος πολυμορφισμού. Είναι το σημαντικό χαρακτηριστικό του.

Το βιβλίο για το OOP "Object-Oriented Programming for Dummies" θα επιτρέψει σε όλους να εξοικειωθούν με αυτό το θέμα με περισσότερες λεπτομέρειες.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 el.unansea.com. Theme powered by WordPress.