Αντικειμενοστρεφής προγραμματισμός

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

Οι περισσότερες γλώσσες προγραμματισμού είναι ένα μείγμα διαφορετικών τύπων τρόπων γραφής προγραμμάτων υπολογιστών. Για παράδειγμα, η Python επιτρέπει τη συγγραφή προγραμμάτων υπολογιστών τόσο με αντικειμενοστραφή προγραμματισμό όσο και με διαδικαστικό προγραμματισμό. Υπάρχουν πολλές γλώσσες προγραμματισμού που σας επιτρέπουν να γράφετε προγράμματα υπολογιστών σε OOP, Μερικές από αυτές τις γλώσσες προγραμματισμού είναι, για παράδειγμα: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, κ.λπ.

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

Η βασική ιδέα του αντικειμενοστραφούς προγραμματισμού είναι ότι τα πάντα είναι αντικείμενα. Ωστόσο, το αντικείμενο μπορεί να είναι διαφόρων τύπων:

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

Τα αντικείμενα είναι ένας όρος που χρησιμοποιείται για την αναφορά σε περιπτώσεις κλάσεων.

Παραδείγματα

Στα παραδείγματα που ακολουθούν, δημιουργούμε μια κλάση που ονομάζεται Human. Αυτή η κλάση περιέχει τα χαρακτηριστικά name (για το όνομα του ατόμου) και friend (για το όνομα του φίλου). Κάθε μία από τις μεθόδους της κλάσης Human περιέχει μια λίστα εντολών που κάνει χρήση των χαρακτηριστικών name και friend.

Python

Αυτός ο κώδικας είναι σε Python.

class Human(object): def __init__(self, name, friend=None): self. name = name self. friend = friend def say_name(self): print("Το όνομά μου είναι "+self. name) def say_goodnight(self): if self. friend is None: print("Καληνύχτα κανείς.") else: print("Καληνύχτα "+self. friend. name) # Δημιουργία ενός νέου αντικειμένου Human με όνομα stephen και όνομα "Stephen" stephen = Human("Stephen") # Δημιουργία ενός νέου αντικειμένου Human με όνομα joe και όνομα "Joe" και stephen ως φίλο joe = Human("Joe", stephen) stephen. say_name() # Εμφανίζει 'Το όνομά μου είναι Stephen' stephen. say_goodnight() # Εμφανίζει 'Καληνύχτα σε κανέναν.' joe. say_name() # Εμφανίζει 'Το όνομά μου είναι Joe' joe. say_goodnight() # Εμφανίζει 'Καληνύχτα Stephen'

Java

Αυτός ο κώδικας είναι σε Java.

Η τάξη Human

class Human { private String name = "ανώνυμο"; // το όνομα αυτού του ανθρώπου private Human friend = null; // ο φίλος του ανθρώπου // Αυτή η μέθοδος δημιουργεί ένα νέο αντικείμενο Human όταν μας δίνεται το όνομα και ο φίλος public Human(String name, Human friend) { this. name = name; this. friend = friend; }      // Αυτή η μέθοδος δημιουργεί επίσης ένα νέο αντικείμενο Human όταν δίνεται μόνο το όνομα public Human(String name) { this. name = name; this. friend = null; }      // Αυτή η μέθοδος δημιουργεί ένα νέο αντικείμενο Human όταν δεν δίνεται τόσο το όνομα όσο και ο φίλος public Human() { this. name = "ανώνυμο"; this. friend = null; } public void sayName() { System. out. println("Το όνομά μου είναι " + this. name); } public void sayGoodnight() { if (friend == null) { System. out. println("Καληνύχτα κανείς."); } else { System. out. println("Καληνύχτα " + friend. name); }     } }

Μια μέθοδος για να μιλήσετε με την παραπάνω κλάση Human

class Main { public static void main(String[] args) { // Δημιουργήστε ένα νέο αντικείμενο Human stephen με όνομα "Stephen" Human stephen = new Human("Stephen"); // Δημιουργήστε ένα νέο αντικείμενο Human joe με όνομα "Joe" και τον stephen ως φίλο Human joe = new Human("Joe", stephen); stephen. sayName(); // Δείχνει 'Το όνομά μου είναι Stephen' stephen. sayGoodnight(); // Δείχνει 'Καληνύχτα κανείς.' joe. sayName(); // Δείχνει 'Το όνομά μου είναι Joe' joe. sayGoodnight(); // Δείχνει 'Καληνύχτα Stephen' } }

Κριτική

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

  • Ο Luca Cardelli έγραψε μια εργασία με τίτλο 'Bad Engineering Properties of Object-Oriented Languages'.
  • Ο Richard Stallman έγραψε το 1995: "Η προσθήκη OOP στον Emacs δεν αποτελεί σαφώς βελτίωση- χρησιμοποίησα OOP όταν δούλευα στα παραθυρικά συστήματα της Lisp Machine και διαφωνώ με τη συνήθη άποψη ότι είναι ένας ανώτερος τρόπος προγραμματισμού".
  • Μια μελέτη των Potok et al. μας λέει ότι υπάρχει πολύ μικρή διαφορά στην παραγωγικότητα μεταξύ των προσεγγίσεων OOP και διαδικαστικών προσεγγίσεων.
  • Ο Christopher J. Date είπε ότι η σύγκριση της ΟΕΠ με άλλα πράγματα, ειδικά με το πώς η ΟΕΠ και το άλλο πράγμα σχετίζονται, είναι δύσκολη επειδή οι άνθρωποι δεν συμφωνούν στην έννοια της ΟΕΠ.
  • Ο Αλεξάντερ Στεπάνοφ πρότεινε ότι το OOP δίνει μια οπτική γωνία που είναι περιορισμένη όσον αφορά τα μαθηματικά και το αποκάλεσε, "σχεδόν εξίσου φάρσα με την Τεχνητή Νοημοσύνη".
  • Ο Paul Graham, ένας επιτυχημένος πωλητής και προγραμματιστής του διαδικτύου, έχει προτείνει ότι ο σκοπός της ΟΟΠ είναι να λειτουργεί ως μηχανισμός εκτροφής που εμποδίζει τους μέσους προγραμματιστές σε μέσους οργανισμούς να "κάνουν μεγάλη ζημιά". Αυτό επιβραδύνει επίσης τους ταχύτερους, καλύτερους προγραμματιστές που ξέρουν πώς να κάνουν τα πράγματα με πιο ισχυρό και πιο συμπαγή τρόπο. [1]

Ερωτήσεις και απαντήσεις

Ερ: Τι είναι ο αντικειμενοστραφής προγραμματισμός;


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

Ερ: Πώς διαφέρει ο αντικειμενοστραφής προγραμματισμός από τον διαδικαστικό προγραμματισμό;


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

Ερ: Πώς ωφελεί τους προγραμματιστές ο αντικειμενοστραφής προγραμματισμός;


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

Ε: Για ποιο λόγο είναι γνωστή η γλώσσα προγραμματισμού Python;


Α: Η Python επιτρέπει τη συγγραφή προγραμμάτων υπολογιστών τόσο σε αντικειμενοστραφή προγραμματισμό όσο και σε διαδικαστικό προγραμματισμό.

Ερ: Μπορείτε να δώσετε παραδείγματα γλωσσών προγραμματισμού που επιτρέπουν τη συγγραφή προγραμμάτων υπολογιστών σε αντικειμενοστραφή προγραμματισμό;


Α: Οι γλώσσες προγραμματισμού που σας επιτρέπουν να γράφετε προγράμματα υπολογιστών σε αντικειμενοστραφή προγραμματισμό περιλαμβάνουν τις C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C# κ.λπ.

Ε: Τι είναι τα αντικείμενα στον αντικειμενοστραφή προγραμματισμό;


Α: Τα αντικείμενα είναι οντότητες στον αντικειμενοστραφή προγραμματισμό που περιέχουν δεδομένα και μεθόδους.

Ε: Πώς λειτουργούν τα αντικείμενα στον αντικειμενοστραφή προγραμματισμό;


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

AlegsaOnline.com - 2020 / 2023 - License CC3