Οντοκεντρικός Προγραμματισμός

Σχετικά έγγραφα
ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

Οντοκεντρικός Προγραμματισμός

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

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

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

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

Οντοκεντρικός Προγραμματισμός

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

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

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

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

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

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

Βάσεις Περιβαλλοντικών Δεδομένων

Κβαντική Επεξεργασία Πληροφορίας

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

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

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

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

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

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

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

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

Οντοκεντρικός Προγραμματισμός

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

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

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Κβαντική Επεξεργασία Πληροφορίας

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

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

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

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

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

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Βέλτιστος Έλεγχος Συστημάτων

Ευφυής Προγραμματισμός

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

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

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Διδακτική των εικαστικών τεχνών Ενότητα 2

Τεχνικό Σχέδιο - CAD. Τόξο Κύκλου. Τόξο Κύκλου - Έλλειψη. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

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

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ

Διδακτική των εικαστικών τεχνών Ενότητα 3

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

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

Διδακτική των εικαστικών τεχνών Ενότητα 1

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Τεχνικό Σχέδιο - CAD

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

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

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

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

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

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

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Φιλοσοφία της Ιστορίας και του Πολιτισμού

Οντοκεντρικός Προγραμματισμός

Διδακτική των εικαστικών τεχνών Ενότητα 2

ΣΥΜΠΕΡΙΦΟΡΑ ΚΑΤΑΝΑΛΩΤΗ

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

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

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

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

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

Εισαγωγή στην Πληροφορική

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

Τεχνικό Σχέδιο - CAD

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 4: Συναρτήσεις

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

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Εισαγωγή στους Υπολογιστές

Κβαντική Επεξεργασία Πληροφορίας

Εννοιες και Παράγοντες της Ψηφιακής Επεξεργασίας Εικόνας

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

Γενική Φυσική Ενότητα: Ταλαντώσεις

Το Εικονογραφημένο Βιβλίο στην Προσχολική Εκπαίδευση

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

Ψηφιακή Επεξεργασία Εικόνων

Γενική Φυσική Ενότητα: Δυναμική Άκαμπτου Σώματος

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Αερισμός. Ενότητα 1: Αερισμός και αιμάτωση. Κωνσταντίνος Σπυρόπουλος, Καθηγητής Σχολή Επιστημών Υγείας Τμήμα Ιατρικής

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

Κβαντική Επεξεργασία Πληροφορίας

Προγραμματισμός Η/Υ. 6 η ενότητα: Συναρτήσεις. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

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

Transcript:

Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Κληρονομικότητα ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής

ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ Μηχανισμός υλοποίησης των σχέσεων γενίκευσης/εξειδίκευσης μεταξύ κλάσεων Η σχέση εξειδίκευσης «υποκλάση-της» (subclass-of) είναι γνωστή σαν σχέση «είναι ένα» (isa) ή «είναι ένα είδος» (ako: a kind of) Σχετίζεται με τη σχεδίαση του προγράμματος Πλεονέκτημα: αύξηση επαναχρησιμοποίησης 3/26

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ Μια κλάση είναι υποκλάση μιας μόνο κλάσης Η κλάση (υποκλάση) κληρονομεί μεταβλητές και μεθόδους από την (άμεση) υπερκλάση της και τις (έμμεσες) υπερκλάσεις αυτής Η ιεραρχία/δέντρο κλάσεων ονομάζεται και ιεραρχία/ δέντρο κληρονομικότητας. Η ρίζα του δέντρου ονομάζεται βασική κλάση (base class) Σ ένα πρόγραμμα συνήθως έχουμε περισσότερες από μια βασικές κλάσεις, επομένως και δέντρα κληρονομικότητας Όλες οι βασικές κλάσεις είναι υποκλάσεις της κλάσης Object 4/26

ΠΑΡΑΔΕΙΓΜΑ Object Shape Βασική κλάση Rectangle Ellipse Triangle Object Circle Shape Rectangle Ellipse Triangle Circle 5/26

ΠΡΟΣΘΗΚΗ ΝΕΑΣ ΚΛΑΣΗΣ: ΧΩΡΙΣ ΑΝΑΔΟΜΗΣΗ ΙΕΡΑΡΧΙΑΣ A Α,Κ +B,C +D +K +E +F Προσθήκη μιας κλάσης με χαρακτηριστικά Α, Κ 6/26

ΠΡΟΣΘΗΚΗ ΝΕΑΣ ΚΛΑΣΗΣ: ΜΕ ΑΝΑΔΟΜΗΣΗ ΙΕΡΑΡΧΙΑΣ (1) A Α, Β, Κ +B,C +D +Β,Κ +E +F Πολλαπλή αναπαράσταση της ίδιας πληροφορίας Προσθήκη μιας κλάσης με χαρακτηριστικά Α, Β, Κ 7/26

ΠΡΟΣΘΗΚΗ ΝΕΑΣ ΚΛΑΣΗΣ: ΜΕ ΑΝΑΔΟΜΗΣΗ ΙΕΡΑΡΧΙΑΣ (2) A Α, Β, Κ +B,C +D A +E +F +B +D Απαιτείται αναδόμηση της ιεραρχίας +E +C +K +F Η κλάση αυτή λόγω κληρονομικότητας έχει ως χαρακτηριστικά Α, Β, Κ 8/26

ΔΗΛΩΣΕΙΣ ΣΧΕΣΕΩΝ ΙΕΡΑΡΧΙΑΣ <προσδ. κλάσης> class <όνομα κλασης> [extends <όνομα κλάσης>] { <δηλώσεις μεταβλητών> <δηλώσεις δημιουργών> <δηλώσεις μεθόδων> } υπερκλάση 9/26

ΠΑΡΑΔΕΙΓΜΑ public class Circle { protected double x, y, r ; public Circle (double x, double y, double r) {this.x=x; this.y=y; this.r = r ;} public double area ( ) {return 3.1416*r*r ;} } public class GraphicCircle extends Circle{ Color outline, fill ; public void draw ( ) { } } 10/26

ΠΟΛΥΜΟΡΦΙΣΜΟΣ Το γεγονός ότι ο αποστολέας ενός μηνύματος δεν χρειάζεται να γνωρίζει την κλάση του παραλήπτη (στιγμιοτύπου) Το γεγονός ότι μια λειτουργία μπορεί να υλοποιηθεί με το ίδιο όνομα αλλά με διαφορετικό περιεχόμενο (τρόπο λειτουργίας) σε διαφορετικές κλάσεις. 11/26

ΥΠΕΡΦΟΡΤΩΣΗ-ΥΠΕΡΚΑΛΥΨΗ ΜΕΘΟΔΩΝ Είναι δυνατή η ύπαρξη μεθόδων με το ίδιο όνομα, αλλά διαφορετικά ορίσματα (είτε ως προς τον τύπο είτε ως προς τον αριθμό) στην ίδια ή διαφορετική κλάση (υπερφόρτωση μεθόδων-method overloading). Κάθε μέθοδος (μεταβλητή) χαμηλότερα στην ιεραρχία υπερκαλύπτει (επισκιάζει) κάθε ίδια μέθοδο (μεταβλητή) που βρίσκεται υψηλότερα στην ιεραρχία (method overriding/variable shadowing). 12/26

ΑΦΗΡΗΜΕΝΕΣ Ή ΑΦΑΙΡΕΤΙΚΕΣ ΚΛΑΣΕΙΣ Κλάσεις που χρειάζονται στο σχεδιασμό (κυρίως στα ανώτερα επίπεδα ιεραρχίας), αλλά δεν αναφέρονται σε πραγματικά στιγμιότυπα/οντότητες Μια αφαιρετική κλάση περιέχει τουλάχιστον μια αφαιρετική μέθοδο (δηλ. μέθοδο χωρίς σώμα) Η απόγονος μιας αφαιρετικής κλάσης δεν είναι αφαιρετική αν ορίζει τα σώματα όλων των αφαιρετικών μεθόδων της προγόνου της 13/26

ΠΑΡΑΔΕΙΓΜΑ abstract class Shape {} class Rectangle extends Shape {} class Ellipse extends Shape {} class Triangle extends Shape {} class Circle extends Ellipse {} abstract class Shape { public abstract double area(); public abstract double circumference(); } 14/26

ΠΟΛΛΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ Μια κλάση είναι υποκλάση περισσότερων της μιας κλάσης Μια κλάση (υποκλάση) κληρονομεί μεταβλητές και μεθόδους ταυτόχρονα από όλες τις υπερκλάσεις της (άμεσες και έμμεσες) Η Java δεν υποστηρίζει πολλαπλή κληρονομικότητα με άμεσο τρόπο (μόνο έμμεσα, μέσω των διεπαφών) 15/26

ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΚΑΙ ΔΗΜΙΟΥΡΓΟΙ public class GraphicCircle extends Circle{ Color outline, fill ; public GraphicCircle (double x, double y, double r, Color outline, Color fill) { this.x = x; this.y=y; this.r=r; this.outline=outline; this.fill=fill; } public class GraphicCircle extends Circle{ Color outline, fill ; public GraphicCircle (double x, double y, double r, Color outline, Color fill) { super(x, y, r); this.outline=outline; this.fill=fill; } 16/26

ΛΕΞΗ-ΚΛΕΙΔΙ SUPER (1) Σε κάθε δημιουργό εισάγεται από το σύστημα σαν πρώτη πρόταση στο σώμα του η πρόταση super();, εφ όσον δεν υπάρχει άλλη πρόταση super. Η πρόταση super(); καλεί τον εξ ορισμού δημιουργό της (άμεσης) υπερκλάσης της κλάσης του δημιουργού και μετά εκτελείται το (υπόλοιπο) σώμα του δημιουργού. Η κλήση του εξ ορισμού δημιουργού δεν έχει κανένα ουσιαστικό αποτέλεσμα και δεν μας απασχολεί, εκτός αν έχουμε ορίσει εμείς δημιουργό χωρίς ορίσματα στην υπερκλάση, οπότε καλείται αυτός. 17/26

ΠΑΡΑΔΕΙΓΜΑ class Parent{ public Parent () { System.out.println ("Hello Parent");}} class Child extends Parent { String message = "No Child"; public Child (String message) { this.message = message; System.out.println (message);}} Τι αποτέλεσμα θα έχει η Child c = new Child("First Child"); 1. Εκτύπωση: Hello Parent (λόγω έμμεσου super();) 2. Ανάθεση: First Child στην message του c (λόγω ) 3. Εκτύπωση: First Child (λόγω ) 18/26

ΛΕΞΗ-ΚΛΕΙΔΙ SUPER (2) Η χρήση της super δεν αφορά μόνο τους δημιουργούς, αλλά και τις μεθόδους Μέσω της super μπορούμε να καλέσουμε απ ευθείας μια μέθοδο της υπερκλάσης μιας κλάσης: super.<όνομα-μεθόδου>(<παράμετροι>); Επίσης, μπορούμε να καλέσουμε απ ευθείας μια μεταβλητή της υπερκλάσης: super.<όνομα-μεταβλητής>; Η δυνατότητα αυτή μπορεί να χρησιμοποιηθεί για να καλέσουμε επικαλυπτόμενες μεθόδους ή μεταβλητές. 19/26

ΠΑΡΑΔΕΙΓΜΑ class A{ public int x=1; public int f1( ) {return x;}} class B extends A { επικάλυψη της public int x; public int f1( ){ x=2*super.x; return (super.f1( )+x);}} επικάλυψη της της Α (χρήση επικαλυπτόμενης μεθόδου στο σώμα της επικαλύπτουσας) 20/26

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Αθηνών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 21/26

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. 22/26

Σημείωμα Αναφοράς Copyright: Πανεπιστήμιον Πατρών, Ιωάννης Χατζηλυγερούδης, 2015. «Οντοκεντρικός Προγραμματισμός». Έκδοση: 1.0.1 Πάτρα 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/ceid1105/ 23/26

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

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους. 25/26

Σημείωμα Χρήσης Έργων Τρίτων 26/26