AOP vs OOP
Το AOP (Προγραμματισμός προσανατολισμένος σε πτυχές) και OOP (Αντικειμενοστρεφής προγραμματισμός) είναι δύο παραδείγματα προγραμματισμού. Ένα παράδειγμα προγραμματισμού είναι ένα θεμελιώδες στυλ προγραμματισμού υπολογιστών. Τα παραδείγματα προγραμματισμού διαφέρουν ως προς τον τρόπο αναπαράστασης κάθε στοιχείου των προγραμμάτων και τον τρόπο με τον οποίο ορίζεται κάθε βήμα για την επίλυση προβλημάτων. Όπως υποδηλώνει το όνομα, το OOP εστιάζει στην αναπαράσταση προβλημάτων χρησιμοποιώντας αντικείμενα του πραγματικού κόσμου και τη συμπεριφορά τους, ενώ το AOP ασχολείται με την κατανομή των προγραμμάτων σε ξεχωριστές εγκάρσιες ανησυχίες.
Τι είναι το AOP;
Το AOP είναι ένα παράδειγμα προγραμματισμού, το οποίο ασχολείται με την κατανομή ενός προγράμματος σε συνεκτικές περιοχές λειτουργικότητας (που ονομάζονται ανησυχίες) που διασχίζουν πολλαπλές περιοχές, προκειμένου να αυξηθεί η σπονδυλωτή. Υποστήριξη για αφαιρέσεις (όπως κλάσεις, μέθοδοι κ.λπ.) για ομαδοποίηση και ενθυλάκωση ανησυχιών σε μοναδικές οντότητες παρέχεται σε πολλά άλλα παραδείγματα προγραμματισμού. Ωστόσο, οι ανησυχίες (όπως η "Καταγραφή") είναι παραδείγματα εγκάρσιων ανησυχιών, επειδή κάθε καταγεγραμμένο μέρος του συστήματος επηρεάζεται από τη στρατηγική που χρησιμοποιείται για την καταγραφή. Ο κύριος στόχος όλων των υλοποιήσεων AOP είναι να έχουν κατάλληλες διατομεακές εκφράσεις για την καταγραφή όλων των ανησυχιών σε μια ενιαία τοποθεσία.
Τι είναι το OOP;
Στο OOP, η εστίαση είναι στη σκέψη για το πρόβλημα που πρέπει να λυθεί με όρους πραγματικών στοιχείων και στην αναπαράσταση του προβλήματος ως προς τα αντικείμενα και τη συμπεριφορά τους. Οι τάξεις απεικονίζουν τις αφηρημένες αναπαραστάσεις αντικειμένων του πραγματικού κόσμου. Οι τάξεις είναι σαν σχεδιαγράμματα ή πρότυπα, τα οποία συγκεντρώνουν παρόμοια αντικείμενα ή πράγματα που μπορούν να ομαδοποιηθούν. Οι κλάσεις έχουν ιδιότητες που ονομάζονται χαρακτηριστικά. Τα χαρακτηριστικά υλοποιούνται ως μεταβλητές καθολικές και στιγμιαίες μεταβλητές. Οι μέθοδοι στις κλάσεις αντιπροσωπεύουν ή καθορίζουν τη συμπεριφορά αυτών των κλάσεων. Οι μέθοδοι και τα χαρακτηριστικά των κλάσεων ονομάζονται μέλη της κλάσης. Ένα στιγμιότυπο μιας κλάσης ονομάζεται αντικείμενο. Επομένως, ένα αντικείμενο είναι μια δομή δεδομένων που μοιάζει πολύ με κάποιο αντικείμενο του πραγματικού κόσμου.
Υπάρχουν αρκετές σημαντικές έννοιες του OOP, όπως η αφαίρεση δεδομένων, η ενθυλάκωση, ο πολυμορφισμός, η ανταλλαγή μηνυμάτων, η σπονδυλωτή και η κληρονομικότητα. Συνήθως, η ενθυλάκωση επιτυγχάνεται καθιστώντας τα χαρακτηριστικά ιδιωτικά, δημιουργώντας παράλληλα δημόσιες μεθόδους που μπορούν να χρησιμοποιηθούν για πρόσβαση σε αυτά τα χαρακτηριστικά. Η κληρονομικότητα επιτρέπει στο χρήστη να επεκτείνει κλάσεις (που ονομάζονται υποκλάσεις) από άλλες κλάσεις (που ονομάζονται υπερτάξεις). Ο πολυμορφισμός επιτρέπει στον προγραμματιστή να αντικαταστήσει ένα αντικείμενο μιας κλάσης στη θέση ενός αντικειμένου της υπερκλάσης του. Συνήθως, τα ουσιαστικά που βρίσκονται στον ορισμό του προβλήματος γίνονται απευθείας κλάσεις στο πρόγραμμα. Και ομοίως, τα ρήματα γίνονται μέθοδοι. Μερικές από τις πιο δημοφιλείς γλώσσες OOP είναι η Java και η C.
Ποια είναι η διαφορά μεταξύ AOP και OOP;
Η βασική διαφορά μεταξύ OOP και AOP είναι ότι η εστίαση του OOP είναι να αναλύσει την εργασία προγραμματισμού σε αντικείμενα, τα οποία ενσωματώνουν δεδομένα και μεθόδους, ενώ η εστίαση του AOP είναι να αναλύσει το πρόγραμμα σε εγκάρσιες ανησυχίες. Στην πραγματικότητα, το AOP δεν είναι ανταγωνιστής του OOP, επειδή προέκυψε από το παράδειγμα του OOP. Το AOP επεκτείνει το OOP αντιμετωπίζοντας μερικά από τα προβλήματά του. Το AOP εισάγει απλούς τρόπους για την υλοποίηση εγκάρσιων ανησυχιών (οι οποίες μπορεί να ήταν διάσπαρτες σε πολλά σημεία στην αντίστοιχη υλοποίηση OOP) σε ένα μόνο μέρος. Επομένως, το AOP κάνει το πρόγραμμα πιο καθαρό και πιο χαλαρά συνδεδεμένο.