Wrapper Classes, Abstract Classes and Interfaces

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Advertisements

Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Βασικά διαγράμματα σε UML
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
Μάθημα : Βασικά Στοιχεία της Γλώσσας Java
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Μήτρες (templates)  Μία μήτρα είναι ένα κομμάτι κώδικα που περιέχει παραμέτρους οι οποίες δέχονται ως τιμές τύπους δεδομένων.  Είναι ένας μηχανισμός.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Εβδομάδα 2: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism]
Αντικειμενοστρεφής Προγραμματισμός, Αντώνιος Συμβώνης, Πανεπιστήμιο Ιωαννίνων, Slide 1 Week 13: Review Εβδομάδα 13: Ανασκόπηση.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Αντικείμενα, Κλάσεις και Μέθοδοι
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
Πρότυπα Σχεδίασης Design Patterns
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) OOP Concepts and Object-Oriented Design.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής (Αντικειμενοστρεφής Προγραμματισμός)
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
ΜΑΘΗΜΑ: ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Τμ.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό
ΑΝΑΚΕΦΑΛΑΙΩΣΗ 26 Οκτωβρίου Αντικειμενοστρεφής Προγραμματισμός Ένα νέο προγραμματιστικό μοντέλο (paradigm) το οποίο στηρίζεται στις κλάσεις και τα.
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΠΟΛΥΜΟΡΦΙΣΜΟΣ. ΑΝΑΚΕΦΑΛΑΙΩΣΗ Θεματολόγιο Κληρονομικότητα Παράδειγμα Κληρονομικότητα – Βελτιωμένο Παράδειγμα Ενθυλάκωση : public – private.
Διαχείριση γεγονότων (events) Γεγονότα: Κλήσεις που παράγονται από γραφικά στοιχεία (Components) π.χ. click ποντικιού, μετακίνηση ποντικιού Ακρόαση-Διαχείριση.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πολυμορφισμός.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 9: Κληρονομικότητα. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Εισαγωγή στη Java (Μέρος B’) Για όσους γνωρίζουν C++ Βασίλης Στούμπος
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Αντικειμενοστραφής Προγραμματισμός Ι
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές) Ένα μεγάλο παράδειγμα.
Κωδικός Θ: ΤΠ4003, Κωδικός Ε: ΤΠ4103 (ΜΕΥ/Υ) Ώρες (Θ - ΑΠ - Ε): Προαπαιτούμενα: ΤΠ2003,2103.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Παράδειγμα Κληρονομικότητας Γενικευμένες κλάσεις.
ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Site: ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ.
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Κλάσεις ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014:
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού
Κατανεμημένα Συστήματα
Κληρονομικότητα [inheritance]
Software Engineering for Web Applications
Κλάσεις και αντικείμενα
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Εισαγωγή στον Προγ/μό Υπολογιστών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Swing II Εβδομάδα Νο. 6.
ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Wrapper Classes, Abstract Classes and Interfaces
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Εξαιρέσεις [Exceptions]
Μεταγράφημα παρουσίασης:

Wrapper Classes, Abstract Classes and Interfaces Εργαστήριο 3: Αφηρημένες κλάσεις (Abstract Classes)

Κλάσεις αφηρημένου τύπου [abstract classes] Μερικές φορές δεν είναι δυνατόν να υλοποιηθούν όλες οι μέθοδοι! Παράδειγμα: κλάση creature, method move Creature Wolf Fish Bird

Κλάσεις αφηρημένου τύπου (2) Στις κλάσεις αφηρημένου τύπου, δεν υλοποιούνται όλες οι μέθοδοι Μερικές μέθοδοι δηλώνονται ως «αφηρημένες» [abstract] Εάν μία κλάση περιέχει «αφηρημένες» μεθόδους, τότε πρέπει να δηλωθεί ως “abstract” Δεν είναι δυνατό να δημιουργήσουμε αντικείμενα με βάση μια κλάση αφηρημένου τύπου

Κλάσεις αφηρημένου τύπου (3) Παράδειγμα: Μερικές μέθοδοι μπορεί να έχουν υλοποιηθεί abstract class Creature { private age; public int getAge() return age; } public abstract void move(); Άλλες, όχι

«Απτές» κλάσεις [concrete classes] Αντικείμενα μπορεί να δημιουργηθούν μόνο με βάση τις απτές κλάσεις

Παράδειγμα: κλάση Shapes Triangle Rectangle Circle abstract class Shape { public abstract void circumference(); }

Λόγος ύπαρξης των «αφηρημένων» κλάσεων Εάν δεν μπορούμε να δημιουργήσουμε αντικείμενα με βάση τις κλάσεις αφηρημένου τύπου, ποια η χρησιμότητα τους; Απάντηση: Πολυμορφισμός! Μία «αφηρημένη» κλάση είναι ένας τύπος δεδομένων Μπορούμε να δηλώσουμε μεταβλητές αυτού του τύπου Υπο-τύποι μπορεί να δημιουργηθούν

Πολλαπλή κληρονομικότητα [Multiple Inheritance] Bird Drawable Actor act() draw() Bird myBird = new Bird(); actors.add(myBird); drawables.add(myBird);

Το επόμενο πρόβλημα… Η Java δεν επιτρέπει να κληρονομήσουμε από περισσότερες της μίας κλάσης! Η πολλαπλή κληρονομικότητα είναι χρήσιμη αλλά προκαλεί προβλήματα (κάνει πιο πολύπλοκο) στον ορισμό της γλώσσας Για το λόγο αυτό, μερικές γλώσσες δεν επιτρέπουν την πολλαπλή κληρονομικότητα (πχ. Java) Πως αντιμετωπίζουμε το πρόβλημα;

Η λύση: διαπροσωπείες [interfaces] Μια διαπροσωπεία μοιάζει με μία πλήρως «αφηρημένη» κλάση Οι διαπροσωπείες [interfaces]: περιέχουν μόνο δηλώσεις μεθόδων [method signatures] περιέχουν μόνο ορισμούς σταθερών [constants] δεν περιέχουν πεδία δεν περιέχουν υλοποιήσεις μεθόδων

Διαπροσωπείες και κληρονομικότητα Μία κλάση μπορεί να κληρονομήσει μόνο από μία άλλη κλάση, αλλά… …μπορεί να «κληρονομήσει» από περισσότερες από μία διαπροσωπείες! Ορολογία (για να ξεχωρίζουμε τις δυο αυτές μορφές κληρονομικότητας): Μία κλάση επεκτείνει [extends] μια υπερ-κλάση. Μία κλάση υλοποιεί [implements] μία διαπροσωπεία.

Παράδειγμα interface Drawable { /** * Draw this entity on screen. */ void draw(); } Οι μέθοδοι των διαπροσωπειών είναι εξ’ ορισμού “public” – δεν χρειάζεται μετατροπέας πρόσβασης

Η υπο-κλάση class Bird extends Creature implements Drawable { ... /** * Act. Here that means fly around and search * for bird food. */ public void act() { ... } * Draw this bird on screen. public void draw() }

Πολλαπλές διαπροσωπείες class Bird extends Actor implements Drawable, Storable { ... } Το πολύ μία υπερ-κλάση Απεριόριστος αριθμός διαπροσωπειών

Πολλαπλές διαπροσωπείες (2) class Bird implements Actor, Drawable, Storable { ... } Η κλάση Actor θα μπορούσε να ήταν μία διαπροσωπεία.

Οι διαπροσωπείες ως τύποι δεδομένων Οι διαπροσωπείες ορίζουν τύπους δεδομένων (όπως και οι κλάσεις). Όπως ισχύει και για τις κλάσεις αφηρημένου τύπου, δεν μπορούμε να δημιουργήσουμε ένα στιγμιότυπο [instance] από μία διαπροσωπεία, αλλά μπορούμε να ορίζουμε μεταβλητές Στιγμιότυπα των κλάσεων που υλοποιούν τις διαπροσωπείες μπορεί να καταχωρηθούν σε μεταβλητές τύπου διαπροσωπειών Drawable nextToDraw; Bird myBird = new Bird(); nextToDraw = myBird;