Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Αντικειμενοστραφής Προγραμματισμός (Object Oriented Programming)

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Αντικειμενοστραφής Προγραμματισμός (Object Oriented Programming)"— Μεταγράφημα παρουσίασης:

1 Αντικειμενοστραφής Προγραμματισμός (Object Oriented Programming)
Βελώνης Γεώργιος – Καθηγητής Πληροφορικής ΠΕ20 Σχ. Έτος

2 Περιεχόμενα Τι είναι ο Αντικειμενοστραφής Προγραμματισμός
Τι είναι τα Αντικείμενα (Objects) Περισσότερα για τις Μεθόδους Πρόσβαση σε ιδιότητες και μεθόδους Τι είναι οι Κλάσεις (Classes) Κληρονομικότητα (Inheritance) Πολυμορφισμός (Polymorphism) και Υπερφόρτωση (Overloading) Ενθυλάκωση (Encapsulation) Αφαίρεση δεδομένων (Abstraction) Αφηρημένη κλάση (Abstract Class)

3 Τι είναι ο Αντικειμενοστραφής Προγραμματισμός
Ο αντικειμενοστραφής προγραμματισμός (OOP - object oriented programming) είναι μια τεχνική ανάπτυξης προγραμμάτων διαφορετική από τις παλαιές τεχνικές προγραμματισμού, όπως ο διαδικαστικός (procedural) και συναρτησιακός (functional) προγραμματισμός. Στον αντικειμενοστραφή προγραμματισμό, ένα πρόγραμμα είναι μια συλλογή από κλάσεις (classes) και αντικείμενα (objects), όπου το ένα επικοινωνεί με το άλλο και δίνεται έμφαση στη δημιουργία μονάδων οι οποίες θα περιλαμβάνουν τα δεδομένα αλλά και τις εντολές που θα τα διαχειριστούν.

4 Τι είναι τα Αντικείμενα (Objects)
Βασικά στοιχεία του αντικειμενοστραφούς προγραμματισμού είναι τα αντικείμενα. Στον κόσμο που μας περιβάλλει, ως αντικείμενο ορίζουμε οποιοδήποτε πράγμα υπάρχει σε αυτόν, κάτι ανάλογο δηλαδή με αυτό που στη γραμματική της φυσικής μας γλώσσας ονομάζουμε «ουσιαστικό». Για παράδειγμα μπορούμε να αναφέρουμε μία μπάλα, ένα αυτοκίνητο, ένα σκύλο κ.λπ., οντότητες δηλαδή (έμψυχες ή άψυχες) οι οποίες έχουν συγκεκριμένες ιδιότητες ή/και μπορούν να εκτελούν συγκεκριμένες ενέργειες. Στην προγραμματιστική ορολογία, ως αντικείμενο χαρακτηρίζεται μια δομή δεδομένων η οποία διαθέτει ιδιότητες (attributes ή properties) και μεθόδους (methods).

5 Τι είναι τα Αντικείμενα (Objects)
Αντικείμενο Ιδιότητες Μέθοδοι Οι ιδιότητες περιγράφουν ένα αντικείμενο με τρόπο ανάλογο με εκείνον που ένα επίθετο προσδιορίζει το ουσιαστικό, π.χ. πλαστική μπάλα, κόκκινο αυτοκίνητο, καφέ σκύλος, κ.λπ. Οι μέθοδοι ενός αντικειμένου καθορίζουν το πώς αυτό συμπεριφέρεται ή ενεργεί, ακριβώς όπως τα ρήματα καθορίζουν τη συμπεριφορά ενός ουσιαστικού, π.χ. ο σκύλος γαυγίζει, κινείται, κάθεται, κ.λπ.

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

7 Πρόσβαση σε ιδιότητες και μεθόδους
Προκειμένου να αποκτήσουμε πρόσβαση στις ιδιότητες και στις μεθόδους των αντικειμένων που δημιουργήσαμε, χρησιμοποιούμε το λεγόμενο dot notation. Δηλαδή: όνομα_αντικειμένου.ιδιότητα όνομα_αντικειμένου.μέθοδος()

8 Τι είναι οι Κλάσεις (Classes)
Η κεντρική έννοια του αντικειμενοστραφούς προγραμματισμού είναι η Κλάση (Class). Τα αντικείμενα δημιουργούνται από τις κλάσεις. Για την ακρίβεια μάλιστα, οι κλάσεις ορίζονται ως εργοστάσια αντικειμένων (object factories). Είναι δηλαδή, τα στοιχεία εκείνα της γλώσσας, τα οποία κατασκευάζουν αντικείμενα (objects). Όλα τα νέα αντικείμενα που δημιουργούνται από μία κλάση ονομάζονται στιγμιότυπα (instances). Για παράδειγμα, στο διπλανό σχήμα η κλάση «car» θα μπορούσε να περιλαμβάνει τις ιδιότητες «κατασκευαστής», «μοντέλο», «ίπποι», κ.λπ., καθώς και τις μεθόδους «ξεκίνημα», «σταμάτημα», «επιτάχυνση», κ.λπ., ενώ αντικείμενα αυτής θα μπορούσαν να είναι ένα Polo, ένα Mini ή ένα Beetle.

9 Κληρονομικότητα (Inheritance)
Με τον όρο κληρονομικότητα, εννοούμε τη δυνατότητα που έχει μια κλάση να κληρονομεί όλες τις ιδιότητες και τις μεθόδους μιας άλλης κλάσης. Χρησιμοποιώντας λίγο πιο επίσημη ορολογία, λέμε ότι η κλάση που ορίζεται πρώτη είναι η βασική κλάση (base class) και η κλάση που κληρονομεί τη βασική κλάση ονομάζεται παράγωγη κλάση (derived class). Εναλλακτικά οι βασικές κλάσεις ονομάζονται και υπερκλάσεις (superclasses) ενώ οι παράγωγες κλάσεις, οι οποίες κληρονομούν αυτόματα όλες τις μεταβλητές και τις μεθόδους από τις υπερκλάσεις τους, ονομάζονται υποκλάσεις (subclasses). H υπερκλάση δεν έχει καμία διαφορά από τις κλάσεις που έχουμε δει έως τώρα. H υποκλάση όμως χρησιμοποιεί ελαφρά διαφορετική σύνταξη.

10 Κληρονομικότητα (Inheritance)
Με την κληρονομικότητα, επιτυγχάνεται η επαναχρησιμοποίηση κώδικα ο οποίος έχει γραφεί πριν και είναι ένα από τα σημαντικά πλεονεκτήματα των αντικειμενοστρεφών γλωσσών προγραμματισμού σε σχέση με τις συμβατικές γλώσσες. Για να καταλάβουμε την κληρονομικότητα, φανταστείτε το πρόβλημα μιας εταιρίας η οποία έχει ως αντικείμενα πελάτες, υπαλλήλους, προμηθευτές και άλλα συναφή. Τόσο οι πελάτες και οι προμηθευτές όσο και οι υπάλληλοι έχουν κοινά χαρακτηριστικά και συμπεριφορές (μεθόδους). Θα πρέπει να φτιάξουμε 3 κλάσεις με στοιχεία το επώνυμο, όνομα, κωδικό, διεύθυνση, κ.λπ., με συνέπεια να έχουμε πολλές φορές τον ίδιο κώδικα.

11 Κληρονομικότητα (Inheritance)
Αφού λοιπόν οι 3 κλάσεις έχουν τόσα πολλά παρόμοια χαρακτηριστικά, θα ήταν καλύτερα να κάνουμε κάτι διαφορετικό, δηλαδή να φτιάξουμε μια υπερκλάση η οποία θα περιέχει τα κοινά χαρακτηριστικά των πελατών, των προμηθευτών και των υπαλλήλων της εταιρίας. Έπειτα θα ορίσουμε 3 υποκλάσεις (πελάτες, προμηθευτές, υπάλληλοι), κάθε μια από τις οποίες να έχει τα γενικά χαρακτηριστικά της υπερκλάσης. Οι 3 υποκλάσεις, εκτός από τις ιδιότητες τις οποίες ορίζονται μέσα στο εσωτερικό τους, κληρονομούν (άρα μπορούν να χρησιμοποιήσουν) και τις ιδιότητες της υπερκλάσης τους.

12 Πολυμορφισμός (Polymorphism) και Υπερφόρτωση (Overloading)
Ο Πολυμορφισμός είναι μία από τις πιο βασικές έννοιες του αντικειμενοστρεφή προγραμματισμού και σχετίζεται με την αποσύνδεση των μεθόδων από τους τύπους. Πολυμορφισμό έχουμε στην περίπτωση που η ίδια μέθοδος ή ο ίδιος τελεστής χρησιμοποιείται με διαφορετικούς τύπους δεδομένων.

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

14 Πολυμορφισμός (Polymorphism) και Υπερφόρτωση (Overloading)
Υποσκέλιση (overriding) είναι η κατάσταση κατά την οποία μία θυγατρική κλάση και η γονική της έχουν μία μέθοδο ομώνυμη και με τα ίδια ορίσματα. Χάρη στη δυνατότητα του πολυμορφισμού ο μεταγλωττιστής «ξέρει» πότε να καλέσει ποια μέθοδο, βασισμένος στον τύπο του τρέχοντος αντικειμένου. Δηλαδή πολυμορφισμός είναι η δυνατότητα των αντικειμενοστρεφών μεταγλωττιστών να αποφασίζουν δυναμικά ποια είναι η κατάλληλη να κληθεί μέθοδος σε συνθήκες υποσκέλισης.

15 Πολυμορφισμός (Polymorphism) και Υπερφόρτωση (Overloading)
Σαν παράδειγμα από την καθημερινή μας ζωή μπορούμε να αναφέρουμε: Κάνω καφέ Κάνω τα μαθήματά μου Κάνω τις δουλειές του σπιτιού Κάνω βόλτα Η λέξη «Κάνω» χρησιμοποιείται με διαφορετική έννοια. Ένα άλλο παράδειγμα πολυμορφισμού είναι ο τελεστής της πρόσθεσης «+». Μπορεί να χρησιμοποιηθεί τόσο για την πρόσθεση δύο αριθμών όσο και για τη συνένωση δύο αλφαριθμητικών.

16 Πολυμορφισμός (Polymorphism) και Υπερφόρτωση (Overloading)
Συχνά οι λειτουργίες Πολυμορφισμός και Υπερφόρτωση συγχέονται ως συνώνυμα εξαιτίας της ομοιότητάς τους σε λειτουργία. Ωστόσο, αυτά τα δύο είναι διαφορετικές λειτουργίες και χρησιμοποιούνται για να παράγουν διαφορετικά αποτελέσματα.

17 Ενθυλάκωση (Encapsulation)
Ενθυλάκωση δεδομένων (data encapsulation) καλείται η ιδιότητα που προσφέρουν οι κλάσεις να «κρύβουν» τα ιδιωτικά δεδομένα τους από το υπόλοιπο πρόγραμμα και να εξασφαλίζουν πως μόνο μέσω των δημόσιων μεθόδων τους θα μπορούν αυτά να προσπελαστούν. Αυτή η τακτική παρουσιάζει μόνο οφέλη καθώς εξαναγκάζει κάθε εξωτερικό πρόγραμμα να φιλτράρει το χειρισμό που επιθυμεί να κάνει στα πεδία μίας κλάσης μέσω των ελέγχων που μπορούν να περιέχονται στις δημόσιες μεθόδους της κλάσης. Επίσης, επιτρέπει στον προγραμματιστή να τροποποιεί ή να βελτιώνει τους αλγόριθμους που υπάρχουν σε μια κλάση χωρίς να ανησυχεί μήπως προκαλέσει απρόβλεπτα αποτελέσματα.

18 Ενθυλάκωση (Encapsulation)

19 Ενθυλάκωση (Encapsulation)
Ένα παράδειγμα ενθυλάκωσης είναι το ράδιο αυτοκινήτου: Η διεπαφή (interface) αποτελείται από τα σημεία διασύνδεσης του ραδίου µε το αυτοκίνητο. Οι λεπτομέρειες σχετικά µε το πώς δουλεύει το ράδιο αποκρύπτονται (Για την εγκατάσταση ενός ραδίου δεν χρειάζεται να γνωρίζουμε τίποτα για το ηλεκτρικό του σύστημα).

20 Αφαίρεση δεδομένων (Abstraction)
Αφαίρεση δεδομένων ή Αφαιρετικότητα καλείται η διαδικασία εξαγωγής µόνο των σχετικών ιδιοτήτων ενός «αντικειμένου». Οι ιδιότητες αυτές ορίζουν µια άποψη του αντικειμένου. Για παράδειγμα, ένας πωλητής αυτοκινήτων ασχολείται µε τα στοιχεία που αφορούν την πώληση ενός αυτοκινήτου όπως τιμή, χρόνος εγγύησης, χρώμα, επιπρόσθετος εξοπλισμός κ.λπ., ενώ ένας μηχανικός βλέπει το αυτοκίνητο από την άποψη της συντήρησης του συστήματος, όπως είδος λαδιού, μέγεθος φίλτρου λαδιού κ.λπ.

21 Αφαίρεση δεδομένων (Abstraction)

22 Αφηρημένη κλάση (Abstract Class)
Αφηρημένη κλάση είναι μία κλάση που ορίζεται μόνο για να κληρονομηθεί σε θυγατρικές υποκλάσεις και δεν υπάρχουν δικά της στιγμιότυπα (αντικείμενα). Η αφηρημένη κλάση ορίζει απλώς ένα «συμβόλαιο» το οποίο θα πρέπει να ακολουθούν οι υποκλάσεις της όσον αφορά τις υπογραφές των μεθόδων τους (όπου ως υπογραφή ορίζεται το όνομα, τα ορίσματα και η τιμή επιστροφής μίας διαδικασίας). Μία αφηρημένη κλάση μπορεί να έχει και μη αφηρημένες μεθόδους οι οποίες υλοποιούνται στην ίδια την κλάση (αν και φυσικά μπορούν να υποσκελίζονται σε υποκλάσεις). Μια μέθοδος αφηρημένου τύπου σε μια κλάση απλώς ορίζεται, χωρίς να υλοποιείται.

23 Αφηρημένη κλάση (Abstract Class)

24

25 Πηγές ΕΠΛ 132 – Αρχές Προγραμματισµού ΙΙ
Αντικειμενοστρεφής_προγραμματισμός Εισαγωγή στην Java 2 – Λιακέας Γ. Η γλώσσα JavaScript – Λιακέας Γ.


Κατέβασμα ppt "Αντικειμενοστραφής Προγραμματισμός (Object Oriented Programming)"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google