Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13

Σχετικά έγγραφα
Wrapper Classes, Abstract Classes and Interfaces

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

(Διαφάνειες Νίκου Βιδάκη)

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΑΦΗΡΗΜΕΝΕΣ ΚΛΑΣΕΙΣ

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

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

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

2.1 Αντικειµενοστρεφής προγραµµατισµός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD

Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12

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

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

Κληρονομικότητα. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις.

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

Διδάσκων: Παναγιώτης Ανδρέου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #3

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Σύνθεση και Κληρονομικότητα

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

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

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

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1

Ειδικά Θέματα Προγραμματισμού

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

Κλάσεις και Αντικείµενα

Βασικά της γλώσσας JAVA

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

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

Παύλος Εφραιµίδης. Java. Κληρονοµικότητα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

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

Σύνθεση και Κληρονομικότητα

Διαγράμματα Κλάσεων στη Σχεδίαση

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 8 : ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ & ΠΟΛΥΜΟΡΦΙΣΜΟΣ

Από τη UML στον Κώδικα. Μέρος Β

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

Εισαγωγή στον Προγ/μό Η/Υ

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

Προγράμματα με δομή Κληρονομικότητας

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Κλάσεις. Τροποποιητές, Πακέτα, ιασυνδέσεις. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Τεχνολογία Λογισµικού II

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ ΥΛΟΠΟΙΗΣΗ ΣΤΟΙΧΕΙΩΝ ΑΝΑΛΥΣΗΣ UML ΜΕ JAVA. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #11

Κεφάλαιο 1. Νήματα (Threads). Time Sharing

Ειδικά Θέματα Προγραμματισμού

8. Μέθοδοι (Methods)

Ανάλυση Πληροφοριακών Συστημάτων. Εαρινό Εξάμηνο Lec08 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιεπαφές και Εσωτερικές κλάσεις Interfaces and Inner Classes. ιεπαφές - Interfaces

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

Διδάσκων: Παναγιώτης Ανδρέου

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

Ανάλυση Πληροφοριακών Συστημάτων. «Βασικές Έννοιες Αντικειμενοστρεφούς Προγραμματισμού Διαγράμματα κλάσεων» Βασίλειος Καρακόιδας

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 13/12/07

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Transcript:

Wrapper Classes, Abstract Classes and Interfaces Διάλεξη #13: Μεταβλητές/μέθοδοι κλάσης, αφηρημένες κλάσεις και διαπροσωπείες Μεταβλητές /πεδία κλάσης [class variables] Τα αντικείμενα ανήκουν σε κλάσεις Michael McKinnon 3204 grey Αντικείμενο Κλάση setname() Οι κλάσεις ορίζουν μεθόδους Τα αντικείμενα έχουν μεταβλητές /πεδία Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 2 Μεταβλητές /πεδία κλάσης (2) Μεταβλητές /πεδία κλάσης (3) Michael McKinnon 3204 grey Αντικείμενο Κλάση setname() Οι κλάσεις μπορεί επίσης να περιέχουν μεταβλητές /πεδία! Τα πεδία κλάσης τα κατέχει η («αποθηκεύονται στην») κλάση Τα πεδία κλάσης είναι προσπελάσιμα από αντικείμενα Υπάρχει μόνο ένα αντίγραφο των πεδίων κλάσης στο σύστημα (αποθηκεύονται «στην κλάση») Όλα τα αντικείμενα μοιράζονται τα πεδία Τα πεδία κλάσης μπορεί να χρησιμοποιηθούν για την ανταλλαγή πληροφοριών μεταξύ αντικειμένων (μια όχι και τόσο καλή πρακτική) Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 3 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 4 Μεταβλητές /πεδία κλάσης (4) Μεταβλητές /πεδία κλάσης (συντακτικό) class Person private static int numberofpeople = 0; Κλάση postcodes Όλα τα αντικείμενα έχουν πρόσβαση στο πεδίο postcodes Person() numberofpeople++; Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 5 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 6

Μέθοδοι κλάσης [class methods] Οι μέθοδοι μπορεί να ανήκουν σε μία κλάση (αντί σε ένα αντικείμενο) Καλούνται μέσω της χρήσης του ονόματος της κλάσης (και όχι του αντικειμένου) Στην κλάση Integer: Κλάσεις αφηρημένου τύπου [abstract classes] Μερικές φορές δεν είναι δυνατόν να υλοποιηθούν όλες οι μέθοδοι! Παράδειγμα: κλάση creature, method move public static int parseint(string s) Χρήση: String input; input = // get input from user int players = Integer.parseInt(input); Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 7 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 8 Κλάσεις αφηρημένου τύπου (2) Κλάσεις αφηρημένου τύπου (3) Στις κλάσεις αφηρημένου τύπου, δεν υλοποιούνται όλες οι μέθοδοι Μερικές μέθοδοι δηλώνονται ως «αφηρημένες» [abstract] Εάν μία κλάση περιέχει «αφηρημένες» μεθόδους, τότε πρέπει να δηλωθεί ως abstract Δεν είναι δυνατό να δημιουργήσουμε αντικείμενα με βάση μια κλάση αφηρημένου τύπου Παράδειγμα: abstract class private age; public int getage() return age; public abstract void move(); Μερικές μέθοδοι μπορεί να έχουν υλοποιηθεί Άλλες, όχι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 9 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 10 «Απτές» κλάσεις [concrete classes] Παράδειγμα: κλάση Shapes Concrete = απτή, χειροπιαστή Ως απτές [concrete] κλάσεις αναφέρονται όσες κλάσεις δεν είναι αφηρημένου τύπου Shape Αντικείμενα μπορεί να δημιουργηθούν μόνο με βάση τις απτές κλάσεις Triangle Rectangle Circle abstract class Shape public abstract void circumference(); Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 11 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 12

Λόγος ύπαρξης των «αφηρημένων» κλάσεων Εάν δεν μπορούμε να δημιουργήσουμε αντικείμενα με βάση τις κλάσεις αφηρημένου τύπου, ποια η χρησιμότητα τους; Απάντηση: Πολυμορφισμός! Μία «αφηρημένη» κλάση είναι ένας τύπος δεδομένων Μπορούμε να δηλώσουμε μεταβλητές αυτού του τύπου Υπο-τύποι μπορεί να δημιουργηθούν Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 13 Προσομοίωση διακριτών γεγονότων [Discrete Event Simulation] προσομοίωση συστήματος το σύστημα αποτελείται από ένα σύνολο ενεργών στοιχείων [actors] Βασίζεται σε ένα επαναλαμβανόμενο σύνολο εντολών [main loop] το οποίο δίνει τη δυνατότητα στα ενεργά στοιχεία να δράσουν Παραδείγματα: Προσομοίωση περιβαντολογικών συστημάτων, αεροδρομίων, συγκοινωνιακών συστημάτων, πρόγνωση καιρού, πυρηνικών εκρήξεων, κλπ. Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 14 Προσομοίωση διακριτών γεγονότων mainloop() Υλοποίηση της act «Αφηρημένη» κλάση Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 15 Προσομοίωση βασικός βρόγχος Υποθέτουμε ότι η μεταβλητή actors εχει δηλωθεί ως: ArrayList<Actor> actors Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 16 Πιο περίπλοκο παράδειγμα Βασικός βρόγχος Timer Actor Weather Analyser Plankton Τι άλλαξε; Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 17 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 18

Μία ακόμα προσθήκη Να προστεθεί κώδικα που εμφανίζει την προσομοίωση στην οθόνη // draw all visible actors on screen Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 19 Ένα πιο ενδιαφέρον παράδειγμα Actor Timer Weather Analyser Plankton Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 20 Θα επιθυμούσαμε να for(int i=0; i < drawables.size(); i++) Drawable drawable = drawables.get(i); drawable.; Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 21 Μια διαφορετική ιεραρχία Non-Drawable Drawable Timer Plankton Analyser Weather Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 22 Το πρόβλημα Έπαψε να είναι σωστός κώδικας. for(int i=0; i < drawables.size(); i++) Drawable drawable = drawables.get(i); drawable.; Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 23 Πολλαπλή κληρονομικότητα [Multiple Inheritance] Drawable Actor my = new (); actors.add(my); drawables.add(my); Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 24

Το επόμενο πρόβλημα Η λύση: διαπροσωπείες* [interfaces] Η Java δεν επιτρέπει να κληρονομήσουμε από περισσότερες της μίας κλάσης! Η πολλαπλή κληρονομικότητα είναι χρήσιμη αλλά προκαλεί προβλήματα (κάνει πιο πολύπλοκο) στον ορισμό της γλώσσας Για το λόγο αυτό, μερικές γλώσσες δεν επιτρέπουν την πολλαπλή κληρονομικότητα (πχ. Java) Πως αντιμετωπίζουμε το πρόβλημα; Μια διαπροσωπεία μοιάζει με μία πλήρως «αφηρημένη» κλάση Οι διαπροσωπείες [interfaces]: περιέχουν μόνο δηλώσεις μεθόδων [method signatures] περιέχουν μόνο ορισμούς σταθερών [constants] δεν περιέχουν πεδία δεν περιέχουν υλοποιήσεις μεθόδων *ή «διασυνδέσεις» Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 25 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 26 Διαπροσωπείες και κληρονομικότητα Παράδειγμα Μία κλάση μπορεί να κληρονομήσει μόνο από μία άλλη κλάση, αλλά μπορεί να «κληρονομήσει» από περισσότερες από μία διαπροσωπείες! Ορολογία (για να ξεχωρίζουμε τις δυο αυτές μορφές κληρονομικότητας): Μία κλάση επεκτείνει [extends] μια υπερ-κλάση. Μία κλάση υλοποιεί [implements] μία διαπροσωπεία. interface Drawable /** * Draw this entity on screen. */ void ; Οι μέθοδοι των διαπροσωπειών είναι εξ ορισμού public δεν χρειάζεται μετατροπέας πρόσβασης Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 27 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 28 Η υπο-κλάση Η λύση class extends implements Drawable Actor Drawable /** * Act. Here that means fly around and search * for bird food. */ public void Timer Weather Analyser /** * Draw this bird on screen. */ public void Plankton Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 29 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 30

Πολλαπλές διαπροσωπείες Πολλαπλές διαπροσωπείες (2) class extends Actor implements Drawable, Storable class implements Actor, Drawable, Storable Το πολύ μία υπερ-κλάση Απεριόριστος αριθμός διαπροσωπειών Η κλάση Actor θα μπορούσε να ήταν μία διαπροσωπεία. Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 31 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 32 Οι διαπροσωπείες ως τύποι δεδομένων Οι διαπροσωπείες ορίζουν τύπους δεδομένων (όπως και οι κλάσεις). Όπως ισχύει και για τις κλάσεις αφηρημένου τύπου, δεν μπορούμε να δημιουργήσουμε ένα στιγμιότυπο [instance] από μία διαπροσωπεία, αλλά μπορούμε να ορίζουμε μεταβλητές Στιγμιότυπα των κλάσεων που υλοποιούν τις διαπροσωπείες μπορεί να καταχωρηθούν σε μεταβλητές τύπου διαπροσωπειών Drawable nexttodraw; my = new (); nexttodraw = my; Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 33