Object-Oriented Programming

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Τι είναι ο προγραμματισμός
Advertisements

Κληρονομικότητα. Εισαγωγή  Κληρονομικότητα (Inheritance) καλείται ο μηχανισμός με τον οποίο μία νέα κλάση που ονομάζεται παράγωγη (derived class) δημιουργείται.
Επιμέλεια: Τίκβα Χριστίνα
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
ΚΑΘΟΡΙΣΜΟΣ ΚΑΙ ΚΑΤΑΝΟΗΣΗ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ
Eπιμέλεια Τίκβα Χριστίνα
7.5.2 Αντικειμενοστραφής προγραμματισμός
Τι είναι ο υπολογιστής; Τι είναι ο προγραμματισμός
Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
H διαδικασία ανάπτυξης λογισμικού. Tι θα γνωρίσουμε •Τις φάσεις ανάπτυξης του λογισμικού. •Γιατί χρειάζεται να γίνει ανάλυση του προβλήματος. •Τι θα πρέπει.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ – ΜΗΧΑΝΗΣ Εαρινό Εξάμηνο 2007 Παρουσίαση Εργαλείου Ανάπτυξης JBuilder Τσουρού Σταυρούλα, ΑΜ 708 Μαδεμλής Ιωάννης, ΑΜ 669.
 Αυδίκου Χριστίνα  Γιουμούκης Παναγιώτης  Κιντσάκης Θάνος  Πάπιστας Γιάννης.
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
Καλώς ήρθατε ! Ετοιμάζεστε να παρακολουθήσετε την παρουσίαση της εφαρμογής Copyright © iBS LTD, all rights reserved.
Αρχή της ενσωμάτωσης Η εσωτερική κατάσταση ενός αντικειμένου πρέπει να είναι τροποποιήσιμη μόνο μέσω της δημόσιας διασύνδεσής του.
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Μερικά ακόμη παραδείγματα
ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
Δεδομένα, Πληροφορίες και Ηλεκτρονικοί Υπολογιστές
Κεφάλαιο 1ο Ανάλυση Προβλήματος.
Κεφ.1 Εισαγωγη στην εννοια του Αλγοριθμου και στον Προγραμματισμο
Πρότυπα Σχεδίασης Design Patterns Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμ. Εφ. Πληροφορικής.
Τεχνολογία ΛογισμικούSlide 1 Αλγεβρική Εξειδίκευση u Καθορισμός τύπων αφαίρεσης σε όρους σχέσεων μεταξύ τύπων λειτουργιών.
Αντικειμενοστρεφής Προγραμματισμός ΚΛΑΣΕΙΣ ΙΙ. Υπερφόρτωση (Overloading) Όταν το ίδιο όνομα συνάρτησης (μεθόδου) χρησιμοποιείται για περισσότερες από.
Μοντέλα Συστημάτων Παρουσιάσεις των συστημάτων των οποίων οι απαιτήσεις αναλύονται.
Κεφάλαιο 6: Εισαγωγή στον προγραμματισμό Φυσικές και τεχνητές γλώσσες.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής,
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τμ. Πληροφορικής,
Για τη διεκπεραίωση ενός προβλήματος πρέπει να ακολουθηθεί η εξής διαδικασία:  να γραφεί ο αλγόριθμος να συνταχθεί το πρόγραμμα σε γλώσσα υψηλού επιπέδου.
1.5 Γλώσσες Προγραμματισμού
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ.
Κεφάλαιο 10 – Υποπρογράμματα
ΟΡΙΣΜΟΣ ΣΥΜΠΕΡΙΦΟΡΑΣ ΔΙΑΓΡΑΜΜΑTA ΑΛΛΗΛΕΠΙΔΡΑΣΗΣ
Προγραμματισμός Γιατι γραφουμε προγραμματα (προηγ. διαλεξη)
Δομές Δεδομένων 1 Θέματα Απόδοσης. Δομές Δεδομένων 2 Οργανώνοντας τα Δεδομένα  Η επιλογή της δομής δεδομένων και του αλγορίθμου επηρεάζουν το χρόνο εκτέλεσης.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
Αντικειμενοστρεφής Προγραμματισμός Object-Oriented Programming.
ΑΡΙΘΜΗΤΙΚΗ ΕΠΙΛΥΣΗ ΤΩΝ ΔΙΑΦΟΡΙΚΩΝ ΕΞΙΣΩΣΕΩΝ ΜΕ ΜΕΡΙΚΕΣ ΠΑΡΑΓΩΓΟΥΣ Ακαδημαϊκό Έτος Πέμπτη, 25 Ιουνίου η Εβδομάδα ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ.
Τεχνολογία ΛογισμικούSlide 1 Τεχνολογία Απαιτήσεων u Καθορίζει τι θέλει ο πελάτης από ένα σύστημα λογισμικού.
Εισαγωγή στην Έννοια του Αλγορίθμου και στον Προγραμματισμό
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Υλοποίηση εφαρμογών σε προγραμματιστικά περιβάλλοντα Κεφάλαιο 7.
Εισαγωγή στη C# Μαρίνος Θεμιστοκλέους Ανδρούτσου 150 Γραφείο 206 Τηλ Ώρες Γραφείου: Τετάρτη 5-6 μμ.
ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Site: ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ.
Αντικειμενοστρεφής Προγραμματισμός Object-Oriented Programming.
ΕΝΟΤΗΤΑ 1. ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΚΕΦΑΛΑΙΟ 1.1 ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ 1.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
ΤΙΤΛΟΣ ΕΡΓΑΣΙΑΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ανδρέου Βασίλης.
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Βάσεις Δεδομένων Ι Εισαγωγή
Κλάσεις και αντικείμενα
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ
ΚΕΦΑΛΑΙΟ 1 Ανάλυση προβλήματος.
Στοιχεία Δομημένου Προγραμματισμού
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ
Εφαρμογή Μεθοδολογίας ICONIX
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΥΠΟΔΕΙΓΜΑΤΑ  Προγραμματιστικό Υπόδειγμα: Είναι ένα πρότυπο ανάπτυξης προγραμμάτων, δηλ. μια καθορισμένη μεθοδολογία με βάση την οποία.
Εννοιολογική Χαρτογράφηση
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Μεταγράφημα παρουσίασης:

Object-Oriented Programming Αντικειμενοστρεφής Προγραμματισμός Object-Oriented Programming Δρ. Σκάρλας Λάμπρος skarlas@ceid.upatras.gr Πάτρα 2008-2009 14-10-08 Lecture 1

Αντικειμενοστρεφής Προγραμματισμός Τι είναι: Μοντέλο προγραμματισμού -> Ένας τρόπος σκέψης Τυπικός ορισμός: Η αντικειμενοστρέφεια (object-orientation) είναι μία προσέγγιση στην ανάπτυξη λογισμικού που οργανώνει τόσο το πρόβλημα όσο και τη λύση του ως μία συλλογή από διακριτά αντικείμενα. Τα αντικείμενα αλληλεπιδρούν για την επίλυση του προβλήματος Eight Queens Problem

Αντικειμενοστρεφής Προγραμματισμός Ιστορία: 1967: Simula67 (Νορβηγία) -> πρώτη αντικειμενοστρεφής γλώσσα ’70: Smalltalk (Palo Alto, CA) -> κάθε στοιχείo ένα αντικείμενο Αρχές ’80: o αντικειμενοστρεφής τρόπος σκέψης εισάγεται σε ακαδημαϊκούς κύκλους ’80: C++ (Stroustrup, AT&T): σοβαρή, αποδοτική γλώσσα, πρότυπο στη βιομηχανία 1995: Java (Sun Microsystems)

Αντικειμενοστρεφής Προγραμματισμός Αποδοχή: Υψηλότατη τα τελευταία χρόνια Λόγοι: Επιτυχής επίλυση προβλημάτων μικρής όσο και μεγάλης κλίμακας (scalability) Προσομοιάζει τις τεχνικές καθημερινών προβλημάτων Πολλές διαθέσιμες γλώσσες Πολλές διαθέσιμες βιβλιοθήκες Μόδα !!! Η λανθασμένη αντίληψη ότι αν κάποιος γνωρίζει C, μπορεί εύκολα να μάθει C++

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

Αντικειμενοστρεφής Προγραμματισμός Παράδειγμα Ένας φοιτητής γενετικής αντιμετώπιζε το πρόβλημα ανάλυσης DNA. (εύρεση σχήματος μήκους m) Ο φοιτητής χρησιμοποίησε FORTRAN, που είναι μεν γρήγορη, αλλά η επίλυση του προβλήματος απαιτούσε πολύ χρόνο !!

Αντικειμενοστρεφής Προγραμματισμός Ο φοιτητής ζήτησε βοήθεια από κάποιον άλλο, που ήταν χρήστης της APL (γνωστής για την μικρή ταχύτητά της) Ωστόσο ο δεύτερος φοιτητής έλυσε το πρόβλημα σε λίγα λεπτά (αντί για ώρες) Οργάνωσε τα δεδομένα σε πίνακα με n γραμμές και m στήλες

. . . . . . . T G G A C C Αντικειμενοστρεφής Προγραμματισμός στη συνέχεια ταξινόμησε τις γραμμές του πίνακα. Επαναλαμβανόμενο σχήμα = συνεχόμενες γραμμές με ίδιες τιμές . . . . . . . T G G A C C Η γλώσσα προγραμματισμού επηρεάζει τον τρόπο επίλυσης: Στη γλώσσα APL η ταξινόμηση είναι πολύ ευκολότερη από ότι στη FORTRAN

Ένας τρόπος θεώρησης του κόσμου Chris Mary θέλει να στείλει λουλούδια στην bla bla Chris Fred Mary

Ένας τρόπος θεώρησης του κόσμου O μηχανισμός για την επίλυση του προβλήματος περιλαμβάνει την εύρεση ενός διαμεσολαβητή και τη μεταφορά σε αυτόν ενός μηνύματος (message). Είναι ευθύνη του Fred να ικανοποιήσει την επιθυμία του Chris. Προφανώς υπάρχει κάποια μέθοδος (method) για την επίτευξη του σκοπού. Ωστόσο, ο Chris, δεν χρειάζεται να γνωρίζει τον τρόπο με τον οποίο ο ανθοπώλης θα στείλει τα λουλούδια. Η πληροφορία αυτή, που δεν αφορά τον Chris, είναι υπό μία έννοια κρυμμένη. Ο ανθοπώλης ενδεχομένως να αλληλεπιδρά με διάφορα άλλα άτομα (προμηθευτές, άλλους ανθοπώλες, courier)

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

Ένας τρόπος θεώρησης του κόσμου Η αλυσιδωτή αντίδραση ξεκίνησε από μία αίτηση Chris Fred bla bla Μία λειτουργία ενεργοποιείται στον αντικειμενοστρεφή προγραμματισμό με την μετάδοση ενός μηνύματος σε ένα αντικείμενο το οποίο είναι υπεύθυνο για αυτή τη λειτουργία. Το μήνυμα κωδικοποιεί την αίτηση για μία λειτουργία και συνοδεύεται από τυχόν επιπρόσθετες πληροφορίες (παραμέτρους) που απαιτούνται για την εκτέλεση της λειτουργίας. Όταν ο αποδέκτης αποδεχθεί το μήνυμα, αναλαμβάνει την ευθύνη να ολοκληρώσει την εν λόγω λειτουργία. Η απόκριση σε ένα μήνυμα είναι η εκτέλεση κάποιας λειτουργίας (μεθόδου) για την ικανοποίηση της αίτησης.

Ένας τρόπος θεώρησης του κόσμου Μία αρχή του αντικειμενοστρεφούς προγραμματισμού είναι κοντά στις ανθρώπινες αδυναμίες…… Αν υπάρχει κάποια εργασία που πρέπει να εκτελεστεί, πρώτη σκέψη είναι η εύρεση κάποιου άλλου που θα την εκτελέσει !! Ωστόσο, ο καλός προγραμματιστής διαφέρει, ακριβώς λόγω αυτού του στοιχείου: Η διάθεση να εμπιστευθούμε τμήματα λογισμικού που έχουν αναπτυχθεί από άλλους είναι ένα σημαντικό βήμα προς την κατεύθυνση του επαναχρησιμοποιούμενου λογισμικού (reusable software)

Κλάσεις και Αντικείμενα Πώς γνωρίζει ο Chris τι υπηρεσίες παρέχει ο Fred ? Ο όρος ανθοπώλης αναπαριστά μία κατηγορία (κλάση) της οποίας ο Fred είναι ένα αντικείμενο. Όλα τα αντικείμενα είναι στιγμιότυπα μιας κλάσης. Η μέθοδος που ενεργοποιείται από ένα αντικείμενο ως απόκριση σε ένα μήνυμα καθορίζεται από την κλάση του αποδέκτη. Όλα τα αντικείμενα μιας κλάσης χρησιμοποιούν την ίδια μέθοδο ως απόκριση στον ίδιο τύπο μηνύματος. Κάθε αντικείμενο έχει ιδιότητες και συμπεριφορά

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

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

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

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

Επικάλυψη και Πολυμορφισμός Η δυνατότητα, δύο διαφορετικά αντικείμενα που ανήκουν σε κλάσεις που συνδέονται με κληρονομικότητα, να αντιδρούν με διαφορετικό τρόπο στο ίδιο μήνυμα, ονομάζεται: επικάλυψη (χρησιμοποιείται στατική διασύνδεση) ή πολυμορφισμός (χρησιμοποιείται δυναμική διασύνδεση). Γενικότερα, επικάλυψη είναι η ανάθεση σε έναν τελεστή ή λειτουργία, περισσοτέρων της μιας εννοιών, ανάλογα με τους τύπους δεδομένων που σχετίζονται με τον τελεστή ή τη λειτουργία. Θεωρούμε το ακόλουθο παράδειγμα ενός απλού μοντέλου για την εκτύπωση και άθροιση δύο ακεραίων: εκτύπωση (518, 202) εκτύπωση (“Το άθροισμα των αριθμών είναι”) εκτύπωση (720)

Επικάλυψη και Πολυμορφισμός Σε ένα συμβατικό πρόγραμμα οι συναρτήσεις εκτύπωσης έχουν διαφορετική υλοποίηση ανάλογα με το τι εκτυπώνεται: write_two_integers(518, 202); write_string("The sum of these numbers is:"); write_one_integer(720); Αν ο μεταγλωττιστής είναι σε θέση να αποφασίσει βάσει του τύπου και αριθμού των ορισμάτων ποια υλοποίηση θα χρησιμοποιήσει: write(518, 202); write("The sum of these numbers is:"); write(720); Αν η δυνατότητα αυτή υπάρχει σε μία γλώσσα προγραμματισμού, θεωρείται ότι είναι δυνατή η επικάλυψη μιας λειτουργίας Η διασύνδεση ονόματος και υλοποίησης που πραγματοποιείται κατά τη μεταγλώττιση (at compile time) ονομάζεται στατική διασύνδεση.

Επικάλυψη και Πολυμορφισμός Παράδειγμα 2 Θεωρούμε μία ομάδα ατόμων, ορισμένα εκ των οποίων είναι φοιτητές. Ζητούμε από τα μέλη της ομάδας να παρουσιάσουν τον εαυτό τους: Κάθε φοιτητής θα πρέπει να δώσει το όνομα του καθώς και τη σχολή στην οποία φοιτά, όλα τα υπόλοιπα μέλη της ομάδας πρέπει να δώσουν μόνο το όνομά τους. Δημιουργούμε ένα αντικειμενοστρεφές μοντέλο αυτής της ομάδας εισάγοντας δύο κλάσεις, Person και Student. Η κλάση Person έχει μία μέθοδο present_yourself που εκτυπώνει το όνομα ενώ η κλάση Student έχει μία μέθοδο present_yourself που εκτυπώνει το όνομα και τη σχολή φοίτησης.

Επικάλυψη και Πολυμορφισμός Στην πραγματικότητα αλλά και στο μοντέλο η απαίτηση είναι απλή: η απάντηση στο ερώτημα present_yourself να δοθεί με βάση την κλάση στην οποία ανήκει το κάθε αντικείμενο. παρουσιάσου παρουσιάσου παρουσιάσου φοιτητής άλλο άλλο φοιτητής φοιτητής άλλο άλλο όνομα σχολή όνομα όνομα σχολή Κατά τη συγγραφή του προγράμματος δεν είναι γνωστό τι αντικείμενα θα περιέχει η λίστα.

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

Σύνοψη Αντικειμενοστρεφών Εννοιών 1. Οτιδήποτε είναι ένα αντικείμενο 2. Οι υπολογισμοί επιτυγχάνονται με την αλληλεπίδραση των αντικειμένων. Τα αντικείμενα αλληλεπιδρούν με την αποστολή μηνυμάτων. Ένα μήνυμα είναι μία αίτηση για εκτέλεση λειτουργίας. 3. Κάθε αντικείμενο έχει τη δική του μνήμη. 4. Κάθε αντικείμενο είναι ένα στιγμιότυπο μιας κλάσης. Μία κλάση αναπαριστά ένα σύνολο αντικειμένων με κοινά χαρακτηριστικά και ιδιότητες. 5. Η κλάση είναι η αποθήκη συμπεριφοράς που σχετίζεται με ένα αντικείμενο. Αυτό σημαίνει, ότι όλα τα αντικείμενα μέλη μιας κλάσης μπορούν να επιτελέσουν τις ίδιες λειτουργίες. 6. Οι κλάσεις είναι οργανωμένες σε μία δενδροειδή ιεραρχία. Η συμπεριφορά που σχετίζεται με τα αντικείμενα μιας γονικής κλάσης είναι αυτομάτως διαθέσιμη σε οποιαδήποτε υποκείμενη κλάση.

Αφαίρεση

Αφαίρεση

Αφαίρεση

Αφαίρεση Είναι προφανές ότι, για λόγους διαχείρισης της πληροφορίας, ορισμένη ποσότητα πληροφορίας αποκρύπτεται σκοπίμως. Αφαίρεση ονομάζεται η σκόπιμη σύμπτυξη ή απόκρυψη πληροφορίας που αφορά μία διαδικασία ή ένα κατασκεύασμα, με σκοπό την καλύτερη κατανόηση άλλων απόψεων, λεπτομερειών ή δομής. Η ιδέα της αφαίρεσης μπορεί να υποδιαιρεθεί σε διάφορες υποκατηγορίες: Η πλέον συνήθης τεχνική αφαίρεσης είναι ο διαμερισμός ενός συνόλου στα τμήματα που το αποτελούν και στη συνέχεια ο διαμερισμός καθενός από τα τμήματα κ.ο.κ. "διαίρει και βασίλευε" (divide and conquer). Εξειδίκευση του γενικού, προσέγγιση που υλοποιείται στις αντικειμενοστρεφείς γλώσσες με τις αρχές της κληρονομικότητας. Ύπαρξη πολλαπλών απόψεων ενός συστήματος, κάθε μία από τις οποίες επικεντρώνεται σε συγκεκριμένα χαρακτηριστικά.

Αφαίρεση Οι τεχνικές του διαμερισμού σε τμήματα και του διαχωρισμού σε ειδικότερες κατηγορίες αντιστοιχούν στις δύο πιο σημαντικές μορφές αφαίρεσης στον αντικειμενοστρεφή προγραμματισμό όπου είναι συνήθως γνωστές ως: αφαίρεση τύπου "έχει" (has-a abstraction) και ως αφαίρεση τύπου "είναι" (is-a abstraction) αντίστοιχα. Κατά το διαμερισμό σε τμήματα για παράδειγμα, ένα αυτοκίνητο "έχει" μία μηχανή και "έχει" ένα σύστημα μετάδοσης. Στον διαχωρισμό σε ειδικότερες κατηγορίες, ένα ποδήλατο "είναι" ένα όχημα, ή "είναι" ένα δίκυκλο για παράδειγμα. Οι δύο αυτές μορφές αφαίρεσης συνδέονται στενά με συγκεκριμένες προγραμματιστικές έννοιες σε διάφορες αντικειμενοστρεφείς γλώσσες προγραμματισμού.

Ενσωμάτωση Δεδομένα, Ιδιότητες (Attributes) Θεμελιώδης έννοια στον Αντικειμενοστρεφή Προγραμματισμό: Ενσωμάτωση: Το αντικείμενο περιλαμβάνει τόσο δεδομένα όσο και τις μεθόδους που χειρίζονται τα δεδομένα Object Όνομα κατόχου Αριθμός Υποκατάστημα Τραπέζης Δεδομένα, Ιδιότητες (Attributes) Υπολογισμός τόκων Εκτύπωση υπολοίπου Μεταφορά σε άλλο λογαριασμό Συμπεριφορά, Λειτουργίες (Methods) :Λογαριασμός

Ενσωμάτωση Λογαριασμός Λογ. Α Λογ. Β Λογ. Γ Όνομα κατόχου: ΧΧΧΧ Αριθμός: ΧΧΧΧ Υποκατάστημα : ΧΧΧΧ Υπολογισμός τόκων Εκτύπωση υπολοίπου Μεταφορά σε άλλο λογαριασμό Λογ. Α Όνομα κατόχου: Πέτρου Αριθμός: 58936500 Υποκατάστημα: Μαρτίου Υπολογισμός τόκων Εκτύπωση υπολοίπου Μεταφορά σε άλλο λογαριασμό Λογ. Β Όνομα κατόχου: Νικολάου Αριθμός: 67936512 Υποκατάστημα: Τσιμισκή Υπολογισμός τόκων Εκτύπωση υπολοίπου Μεταφορά σε άλλο λογαριασμό Λογ. Γ Όνομα κατόχου: Ξένος Αριθμός: 33936789 Υποκατάστημα: Χαριλάου Υπολογισμός τόκων Εκτύπωση υπολοίπου Μεταφορά σε άλλο λογαριασμό

Σύνθεση Αυτοκίνητο Τύπος: ΧΧΧΧ Μηχανή: CD Player: Μηχανή CD Player

Αντικειμενοστρεφής Σχεδίαση Το να προγραμματίζει κανείς σε μία αντικειμενοστρεφή γλώσσα δεν είναι ούτε αναγκαία ούτε ικανή συνθήκη για αντικειμενοστρεφή σχεδίαση Η σημαντικότερη συνθήκη είναι η δημιουργία μιας κοινότητας αλληλεπιδρώντων αλλά ανεξάρτητων οντοτήτων που συνεργάζονται για την επίτευξη ενός στόχου. Τεχνική Σχεδίασης: Κατανομή Ευθυνών – Αρμοδιοτήτων Ευθύνη -> αναμένεται ότι τηρούνται κάποιοι κανόνες -> προϋποθέτει ένα βαθμό αυτονομίας Διαφορά μεταξύ συμβατικού μοντέλου προγραμματισμού και αντικειμενοστρεφούς μοντέλου: -> εκτέλεση εργασίας από ένα παιδί υπό συνεχή επίβλεψη -> ανάθεση ευθύνης στο παιδί – ανεξάρτητη εκτέλεση

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

Visual studio c++ express 05-08 #include "stdafx.h" #include "iostream" int _tmain(int argc, _TCHAR* argv[]) { std::cout << "Hello World"; return 0; }

C++ #include <iostream.h> using namespace std; int main() { cout << "Hello World\n"; return 0; }

2.4 Δομές Ελέγχου C++ keywords 2.4 Δομές Ελέγχου C++ keywords Δεν μπορούν να χρησιμοποιηθούν ως ονόματα μεταβλητών ή προσδιοριστικά (identifiers)

Compilers /IDE VISUAL C++ EXPRESS MinGW CYGWIN (G++) BLOODSHED devc++ ECLIPSE