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

Σχετικά έγγραφα
Αντικειμενοστραφής Προγραμματισμός

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

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

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

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

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

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

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

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

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 10 : Κατασκευή ΝΠΑ. Αλέξανδρος Τζάλλας

Προγραμματισμός Διαδικτύου

Δομές Δεδομένων Ενότητα 1

Εφαρμογή Υπολογιστικών Τεχνικών στην Γεωργία

Λειτουργικά Συστήματα

Ανατομία - Φυσιολογία Ακοής Ομιλίας Λόγου

Ανατομία - Φυσιολογία Ακοής Ομιλίας Λόγου

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Φιλικές συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Ανατομία - Φυσιολογία Ακοής Ομιλίας Λόγου

Ανατομία - Φυσιολογία Ακοής Ομιλίας Λόγου

Ανατομία - Φυσιολογία Ακοής Ομιλίας Λόγου

Προγραμματισμός Διαδικτύου

Ανατομία - Φυσιολογία Ακοής Ομιλίας Λόγου

Πληροφορική II. Ενότητα 5 : Δομές Δεδομένων και αφηρημένοι. τύποι δεδομένων. Δρ. Γκόγκος Χρήστος

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Φωνολογική Ανάπτυξη και Διαταραχές

Εισαγωγή στους Αλγορίθμους

Ανατομία - Φυσιολογία Ακοής Ομιλίας Λόγου

Εφαρμογή Υπολογιστικών Τεχνικών στην Γεωργία

Προχωρημένα Θέματα Προγραμματισμού Δικτύων

Εισαγωγή στους Αλγορίθμους

Προγραμματισμός Διαδικτύου

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Προγραμματισμός Ι. Ενότητα 8 : Πίνακες IΙ. Αλέξανδρος Τζάλλας

Διοικητική των επιχειρήσεων

Προχωρημένα Θέματα Προγραμματισμού Δικτύων

Ιστορία της μετάφρασης

Αρχιτεκτονική υπολογιστών

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

Λειτουργικά Συστήματα

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 8 : Αυτόματα NFA - DFA. Αλέξανδρος Τζάλλας

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Προγραμματισμός Διαδικτύου

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Αρχιτεκτονική υπολογιστών

Προγραμματισμός Διαδικτύου

Προχωρημένα Θέματα Προγραμματισμού Δικτύων

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Λοιμώδη Νοσήματα Υγιεινή Αγροτικών Ζώων

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Εισαγωγή στους Αλγορίθμους

Αρχιτεκτονική υπολογιστών

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Λειτουργικά Συστήματα

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Στατιστική. 6 ο Μάθημα: Διαστήματα Εμπιστοσύνης και Έλεγχοι Υποθέσεων. Γεώργιος Μενεξές Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Μάρκετινγκ Αγροτικών Προϊόντων

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 11 : Γραμματικές χωρίς συμφραζόμενα. Αλέξανδρος Τζάλλας

Ευαγγελικές αφηγήσεις της Ανάστασης

Εκκλησιαστικό Δίκαιο

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 5: Κληρονομικότητα. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Διδακτική της Πληροφορικής

Νοσηλευτική Σεμινάρια

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προχωρημένα Θέματα Προγραμματισμού Δικτύων

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 1 : Σύνολα & Σχέσεις (1/2) Αλέξανδρος Τζάλλας

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 2 : Σύνολα & Σχέσεις (2/2) Αλέξανδρος Τζάλλας

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Νοσηλευτική Σεμινάρια

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Μικροοικονομική. Ενότητα 6 : Ελαστικότητα προσφοράς Καραμάνης Κωνσταντίνος

Εκκλησιαστικό Δίκαιο

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Φωνολογική Ανάπτυξη και Διαταραχές

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Μικροοικονομική. Ενότητα 12 : Μορφές Αγοράς Καραμάνης Κωνσταντίνος

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Μηχανολογικό Σχέδιο Ι

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Μικροοικονομική. Ενότητα 7 : Ισορροπία αγοράς Καραμάνης Κωνσταντίνος

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 9 : Κανονικές Εκφράσεις. Αλέξανδρος Τζάλλας

Αρχιτεκτονική υπολογιστών

Αρχιτεκτονική υπολογιστών

Διοικητική Λογιστική

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Στατιστική. 5 ο Μάθημα: Βασικές Έννοιες Εκτιμητικής. Γεώργιος Μενεξές Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Ιστορία της μετάφρασης

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εφαρμογή Υπολογιστικών Τεχνικών στην Γεωργία

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Transcript:

1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αντικειμενοστραφής Προγραμματισμός Ενότητα 7 : Προχωρημένα θέματα (2/2) Ιωάννης Τσούλος

2 Ανοιχτά Ακαδημαϊκά Μαθήματα Τμήμα Μηχανικών Πληροφορικής Τ.Ε Αντικειμενοστραφής Προγραμματισμός Ενότητα 7 : Προχωρημένα θέματα (2/2) Ιωάννης Τσούλος Επίκουρος Καθηγητής Άρτα, 2015

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 3 3

4 Αντικειμενοστραφής Προγραμματισμός Προχωρημένα θέματα (2/2), Τμήμα Μηχανικών Πληροφορικής, ΤΕΙ ΗΠΕΙΡΟΥ - Ανοιχτά Ακαδημαϊκά Μαθήματα Χρηματοδότηση Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Ηπείρου» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα.

Polymorphism και Virtual Methods Τί γίνεται όμως αν θέλουμε να αλλάξουμε τη λειτουργία μιας μεθόδου στην νέα κλάση που υπάρχει και στην παλιά; Στο προηγούμενο μάθημα, η νέες κλάσεις ορίζουν μια μέθοδο την getinfo(), η οποία επιστρέφει πληροφορίες για τον υπάλληλο ή τον δάσκαλο αντίστοιχα. Όπως είναι δηλωμένη, η κάθε κλάση προσφέρει τη δική της εκδοχή αλλά η αρχική Person, δεν έχει ορισμένη μια τέτοια μέθοδο getinfo(). 5 5

Polymorphism και Virtual Methods Αν η getinfo() οριστεί και για την κλάση Person, π.χ. ως εξής: string Person::getInfo() { return (getfirstname()+ +getlastname() + is +getage()+ years old ); } τότε δημιουργείται το εξής ερώτημα: ποια εκδοχή της getinfo() θα καλείται για κάθε αντικείμενο; 6 6

Polymorphism και Virtual Methods Στη συγκεκριμένη περίπτωση θα είναι αδύνατη η μεταγλώττιση των κλάσεων Clerk και Teacher. Η C++ δεν επιτρέπει το override των μεθόδων χωρίς ειδική άδεια. Η άδεια αυτή δίνεται με τη λέξη virtual, δηλαδή η μέθοδος ορίζεται ως δυνητική, και ο ορισμός της θα μετατραπεί ως εξής: virtual string getinfo() { return (getfirstname()+ +getlastname() + is +getage()+ years old ); } 7 7

Polymorphism και Virtual Methods Με την αλλαγή αυτή, θα καλείται κάθε φορά η getinfo() της κλάσης που ανήκει το αντικείμενο από το οποίο καλούμε την μέθοδο. Για παράδειγμα, ο ακόλουθος κώδικας: cout << bilbo.getinfo() << endl; cout << sam.getinfo() << endl; cout << pippin.getinfo() << endl; θα παράγει Bilbo Baggins is 111 years old Samwise Gamgee works at Baggins Inc., at Bag End, Hobbiton, The Shire. Email: gardener@baggins.com Tel: +302103456789 Peregrin Took teaches Philosophy at King's College, Hobbiton. Email: pippin@theshire.net Tel: +30210000001 8 8

Polymorphism και Virtual Methods Καλέσαμε την ίδια μέθοδο και για τα τρία αντικείμενα (getinfo()) η οποία όμως ορίζεται και στις τρεις κλάσεις. Η γονική κλάση Person ορίζει την getinfo() με έναν απλό τρόπο ( Bilbo Baggins is 111 years old ) και η ίδια θα χρησιμοποιούνταν στις κλάσεις Clerk και Teacher αν δεν ορίζονταν και εκεί. Aν δεν ορίζαμε την getinfo() στην κλάση Clerk, η getinfo() για το αντικείμενο sam θα επέστρεφε Samwise Gamgee is 33 year old. Επειδή όμως η κλάση Clerk περιέχει περισσότερες πληροφορίες που πρέπει να απεικονιστούν με την getinfo(), η τελευταία επαναορίστηκε, αποκτώντας νέα λειτουργία. 9 9

Polymorphism και Virtual Methods Η τεχνική αυτή καλείται Method Overriding και είναι το θεμελιώδες χαρακτηριστικό του πολυμορφισμού. Η κλάσεις στις οποίες ορίζουμε virtual methods λέγονται virtual (virtual classes). Ο πολυμορφισμός μας δίνει τη δυνατότητα δημιουργίας αφηρημένων εννοιών/κλάσεων/μεθόδων στις οποίες θα κολλάμε κάθε φορά τη σωστή υλοποίηση αναλόγως τις ανάγκες μας. 10 1

Polymorphism και Virtual Methods Το ακόλουθο παράδειγμα έχει σκοπό να δείξει πώς ακριβώς χρησιμοποιούμε τον πολυμορφισμό. Θεωρούμε τα αντικείμενα που έχουμε ορίσει πριν (bilbo, sam, pippin). Person* who[3]; who[0] = &bilbo; who[1] = &sam; who[2] = &pippin; for (int i=0; i < who.length; i++) cout << who[i]->getinfo() << endl; Το παραπάνω παράδειγμα θα τυπώσει ό,τι και το προηγούμενο μόνο που τώρα χρησιμοποιήσαμε έναν πίνακα αντικειμένων Person για να οργανώσουμε την πληροφορία. Αλλά το αντικείμενο sam είναι τύπου Clerk και το pippin ανήκει στην κλάση Teacher. Πώς τα καταχωρήσαμε στον πίνακα who; 11 1

Polymorphism και Virtual Methods Απάντηση: Ένα αντικείμενο Clerk είναι ταυτόχρονα και αντικείμενο Person, όπως και ένα αντικείμενο Teacher είναι επίσης Person. Ένας Clerk δεν είναι όμως ταυτόχρονα Teacher. Έτσι μπορούμε να τα αντιμετωπίζουμε κατά βούληση ως Clerk και Teacher ή Person, αναλόγως τις ανάγκες μας. Ακόμη όμως και αν τα προσπελάσουμε ως Person, η getinfo() του καθενός θα είναι αυτή που ορίζει η κλάση του. Τί γίνεται όμως αν χρειάζεται να καλέσουμε και την γονική μέθοδο (δηλαδή αυτή που επαναορίζουμε στη νέα κλάση); Στην περίπτωση αυτή χρησιμοποιούμε την αναφορά στη γονική κλάση καλώντας τον δημιουργό της. 12 1

Polymorphism και Virtual Methods Παράδειγμα: Μετασχηματίζουμε το δημιουργό και τη μέθοδο getinfo() της κλάσης Teacher στα εξής: Teacher(string fname, string lname, int age, string tel, string email, string title, string school, string schooladdress, string schooltel, string coursename, string coursedescription) { Person(fname, lname, age, tel, email); Title_ = title; School_ = school; SchoolAddress_ = schooladdress; SchoolTel_ = jobtel; CourseName_ = coursename; CourseDescription_ = coursedescription; } string getinfo() { return (Person.getInfo() + and teaches +CourseName_+ at +School_ +, +SchoolAddress_+.\n + Email: +getemail()+ \n + Tel: +SchoolTel_); } 13 1

Polymorphism και Virtual Methods Στον δημιουργό αρκεί πλέον να αρχικοποιούμε (initialize) μόνο τα χαρακτηριστικά που είναι νέα στην κλάση χωρίς να κάνουμε διπλό κόπο που έχει ήδη γίνει στην γονική κλάση. Στην getinfo(), χρησιμοποιούμε την πληροφορία που επιστρέφεται από τη γονική κλάση και συμπληρώνουμε με τα νέα στοιχεία. Παράδειγμα Αν αλλάζαμε το κείμενο που επιστρέφει η getinfo() της κλάσης Person, θα άλλαζε αυτόματα και το κείμενο που επέστρεφε η getinfo() της κλάσης Teacher, εφόσον χρησιμοποιούμε την αναφορά στη κλάση Person. 14 1

Polymorphism και Virtual Methods ΣΗΜΕΙΩΣΗ Έχουμε method overriding μόνο όταν η δήλωση της μεθόδου είναι η ίδια στη γονική και στην θυγατρική κλάση. Δηλαδή ίδιο όνομα, επιστρεφόμενα δεδομένα και παραμέτρους. Αν ένα από αυτά είναι διαφορετικά (εκτός από το όνομα φυσικά) τότε έχουμε υπερφόρτωση μεθόδου (method overloading). 15 1

Pure Virtual Classes Μερικές φορές μπορεί να θέλουμε να ορίσουμε απλώς μια γενική δομή κάποιων κλάσεων, χωρίς όμως να προσφέρουμε μια ακριβή υλοποίηση. Να ορίσουμε μια αφηρημένη κλάση, που να παρέχει απλώς ένα πλαίσιο που θα συμπληρώνουν οι θυγατρικές κλάσεις μέσω της τεχνικής method overriding. Αυτό σημαίνει ότι στον ορισμό της κλάσης απλώς θα δηλώνονται ορισμένες μέθοδοι ως αφηρημένες αλλά δεν θα παρέχεται κάποιος ορισμός γι' αυτές. 16 1

Pure Virtual Classes Στη C++ οι κλάσεις αυτές καλούνται pure. Παράδειγμα αφηρημένης κλάσης η κλάση του αυτοκινήτου. Ο μηχανισμός που αλλάζει ταχύτητες σε κάθε αυτοκίνητο είναι διαφορετικός και διαφέρει ανάμεσα στους κατασκευαστές και στα διάφορα μοντέλα. Όμως ο τρόπος αλληλεπίδρασης (δηλαδή μέσω του μοχλού ταχυτήτων) είναι καλά ορισμένος έστω και με κάποια περιθώρια παραλλαγών. 17 1

Pure Virtual Classes Tρόπος ορισμού κλάσης class Car {... // Αλλαγή της ταχύτητας. Επιστρέφει true αν η αλλαγή ήταν επιτυχής // ή false αν ήταν ανεπιτυχής (π.χ. από 5 σε όπισθεν). virtual bool change_gear(int new_gear) = 0;... } class FerrariModena extends Car {... bool change_gear(int new_gear) { // Η συγκεκριμένη υλοποίηση βρίσκεται εδώ }... } 18 1

Βιβλιογραφία 1. Εγχειρίδιο της C++, 2η Ελληνική έκδοση, Jesse Liberty, Γκιούρδας. 2. Μάθετε τη C++, 2η Ελληνική έκδοση, Jesse Liberty, Γκιούρδας. 3. Προγραμματισμός με τη γλώσσα C++ Μέρος Α, Αλεβίζος Θ., Έκδοση ΤΕΙ Καβάλας 4. C++ Αντικειμενοστραφής Προγραμματισμός Υπολογιστών Τομαράς Α.,, Εκδόσεις Νέων Τεχνολογιών. 5. Ανακαλύψτε τη γλώσσα C, J. Purdum, Εκδόσεις Δίαυλος. 6. Εισαγωγή στο Συστηματικό Προγραμματισμό και στη γλώσσα C++, Σ. Μπαλτζής, εκδόσεις πανεπιστημίου Ιωαννίνων. 7. C++ From the beginning, Jan Skansholm, Addison Wesley. 8. The design and analysis of computer algorithms, A.V. AHO, J.E. HOPCROFT, J.D. ULLMANN, Addison Wesley 1974. 9. Structure and Interpretation of Computer Programs, H. ABELSON, G.J. SUSSMAN, J. SUSSMAN, MIT Press, Mc Graw Hill Book Company, 1985 10. The art of computer programming, D.E. KNUTH, Addison-Wesley. 1

2 20 Αντικειμενοστραφής Προγραμματισμός Προχωρημένα θέματα (2/2), Τμήμα Μηχανικών Πληροφορικής, ΤΕΙ ΗΠΕΙΡΟΥ - Ανοιχτά Ακαδημαϊκά Μαθήματα Σημείωμα Αναφοράς Copyright Τεχνολογικό Ίδρυμα Ηπείρου. Ιωάννης Τσούλος. Αντικειμενοστραφής Προγραμματισμός. Έκδοση: 1.0 Άρτα, 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: http://eclass.teiep.gr/courses/comp113/

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού-Μη Εμπορική Χρήση-Όχι Παράγωγα Έργα 4.0 Διεθνές [1] ή μεταγενέστερη. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, Διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. [1] http://creativecommons.org/licenses/by-nc-nd/4.0/deed.el 2

2 Αντικειμενοστραφής Προγραμματισμός Προχωρημένα θέματα (2/2), Τμήμα Μηχανικών Πληροφορικής, ΤΕΙ ΗΠΕΙΡΟΥ - Ανοιχτά Ακαδημαϊκά Μαθήματα Τέλος Ενότητας Επεξεργασία: Ευάγγελος Καρβούνης Άρτα, 2015

2 Τέλος Ενότητας Προχωρημένα θέματα (2/2)