Κληρονομικότητα [inheritance]

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Κληρονομικότητα. Εισαγωγή  Κληρονομικότητα (Inheritance) καλείται ο μηχανισμός με τον οποίο μία νέα κλάση που ονομάζεται παράγωγη (derived class) δημιουργείται.
Advertisements

Διευκρινήσεις κώδικα Hy240b project 2014 phase 1.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 9: Διανύσματα και λίστες.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 11: Intro to Applets Εβδομάδα 11: Εισαγωγή στα Applets.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Εβδομάδα 2: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism]
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Αντικείμενα, Κλάσεις και Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
Επανάληψη βασικών αρχών του αντικειμενοστρεφούς προγραμματισμού
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Πολυμορφισμός – Late Binding.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Κληρονομικότητα.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) OOP Concepts and Object-Oriented Design.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής (Αντικειμενοστρεφής Προγραμματισμός)
Μεθοδολογίες Προγραμματισμού ΙΙ Αναδόμηση Λογισμικού - 2 Software Refactoring - Εφαρμογές Παναγιώτης Σφέτσος, PhD
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
Άσκηση 1. Θεωρούμε το ακόλουθο κομμάτι κώδικα int i,j; double result, a[110][4]; for(i=0; i
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό
ΑΝΑΚΕΦΑΛΑΙΩΣΗ 26 Οκτωβρίου Αντικειμενοστρεφής Προγραμματισμός Ένα νέο προγραμματιστικό μοντέλο (paradigm) το οποίο στηρίζεται στις κλάσεις και τα.
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΠΟΛΥΜΟΡΦΙΣΜΟΣ. ΑΝΑΚΕΦΑΛΑΙΩΣΗ Θεματολόγιο Κληρονομικότητα Παράδειγμα Κληρονομικότητα – Βελτιωμένο Παράδειγμα Ενθυλάκωση : public – private.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πολυμορφισμός.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Έλεγχος Ονομάτων (Name Control) Για ένα πρόγραμμα που αποτελείται από πολλά τμήματα κάποια από τα οποία έχουν πιθανώς γραφτεί από άλλους προγραμματιστές.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 9: Κληρονομικότητα. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
Αντικειμενοστραφής Προγραμματισμός Ι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα.
Κωδικός Θ: ΤΠ4003, Κωδικός Ε: ΤΠ4103 (ΜΕΥ/Υ) Ώρες (Θ - ΑΠ - Ε): Προαπαιτούμενα: ΤΠ2003,2103.
ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Site: ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ.
ΟΣΣ2 - 4 Δεκεμβρίου 2005 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Οντοκεντρικός Προγραμματισμός
Εργαστηριακό σεμινάριο Χειμερινό εξάμηνο
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
Κληρονομικότητα [inheritance]
Software Engineering for Web Applications
Κλάσεις και αντικείμενα
Αντικειμενοστραφής Προγραμματισμός (Object Oriented Programming)
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
Wrapper Classes, Abstract Classes and Interfaces
Κελυφοποιημένα δεδομένα [encapsulated data]
Εισαγωγή στον Προγ/μό Η/Υ
Εισαγωγή στη Java Χαρακτηριστικά της Java Εργαλεία της Java
Το ηφαίστειο της Σαντορίνης
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
Εβδομάδα 12: Ανασκόπηση.
JAVA – Basic OOP Principles
Εφαρμογή Μεθοδολογίας ICONIX
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Διάλεξη #7: Συμβολοσειρές.
Υπο-τύποι και πολυμορφισμός
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Εξαιρέσεις [Exceptions]
Μεταγράφημα παρουσίασης:

Κληρονομικότητα [inheritance] Διάλεξη #11: Κληρονομικότητα [inheritance]

Κληρονομικότητα [inheritance] Τι είναι η κληρονομικότητα; Γιατί είναι σημαντική;

(Μια βάση δεδομένων με CDs και videos.) Παράδειγμα … DoME: Database of Multimedia Entertainment (Μια βάση δεδομένων με CDs και videos.)

DoME: Λειτουργικότητα Εισαγωγή δεδομένων CD: title, artist, # tracks, playing time, got-it, comment Video: title, director, playing time, got-it, comment Εκτύπωση λιστών Αναζήτηση

Οι κλάσεις CD Video

Κελυφοποιημένα δεδομένα [encapsulated data] αντικείμενο CD αντικείμενο Video title title artist director comment comment #tracks gotIt Δεδομένα «φυλάσσονται» σε κάθε αντικείμενο

Μέθοδοι αντικείμενο CD αντικείμενο Video CD Video set... get... set... print print Μέθοδοι επενεργούν πάνω στο κάθε αντικείμενο

Το αντικείμενο database CDs database videos

Κώδικας Java (CD) Ημιτελής (σχόλια!) class CD { String title; String artist; String comment; CD(String theTitle, String theArtist) { title = theTitle; artist = theArtist; comment = “ “; } void setComment(String newComment) { … } String getComment() void print() … Κώδικας Java (CD) Ημιτελής (σχόλια!)

Κώδικας Java (Video) class Video { String title; String director; String comment; Video(String theTitle, String theDirector) { title = theTitle; director = theDirector; comment = “ ”; } void setComment(String newComment) { … } String getComment() void print() … Κώδικας Java (Video)

Κώδικας Java (Database) class Database { CD[] myCDs; Video[] myVideos; … void print() { for(int i=0; i<myCDs.length; i++) myCDs[i].print(); } for(int i=0; i<myVideos.length; i++) myVideos[i].print(); Κώδικας Java (Database)

Μειονεκτήματα Επανάληψη κώδικα στις κλάσεις CD και Video Επιπλέον εργασία για τροποποίηση του πηγαίου κώδικα Δυο διανύσματα και επανάληψη κώδικα στην κλάση Database Διάφορα άλλα (θα τα δούμε σύντομα…)

Η εναλλακτική λύση: κληρονομικότητα Item CD Video Σημείωση: «τετράγωνα» εικονίδια αναπαριστούν κλάσεις

Τα πεδία των κλάσεων Item CD Video Οι υποκλάσεις [subclasses] κληρονομούν τα πεδία από τις υπερκλάσεις [superclasses]. Item title gotIt playing time comment CD Video artist director #tracks CD: title, artist, # tracks, playing time, got-it, comment Video: title, director, playing time, got-it, comment

Οι μέθοδοι των κλάσεων Item Video CD Οι υποκλάσεις κληρονομούν τις μεθόδους από τις υπερκλάσεις. Item setComment() print() ... CD Video CD() Video() getArtist() getDirector() ... ... CD: CD(), getArtist(), setComment(), print() Video: Video(), getDirector(), setComment(), print()

Προεκτάσεις Item MusicCD Video VideoGame

Επιπλέον προεκτάσεις Item MusicCD Video Game VideoGame BoardGame

Ορολογία Κλάση βάσης [base class] Υπερκλάση [superclass] Γονέας [parent] Παιδί [child] Παραγόμενη κλάση [derived class] Υποκλάση [subclass]

Πλεονεκτήματα της κληρονομικότητας Αποφυγή επανάληψης κώδικα Επαναχρησιμοποίηση κώδικα Πιο εύκολη συντήρηση κώδικα Επεκτασιμότητα [extendability]

Κώδικας Java με χρήση κληρονομικότητας class Item { ... } class MusicCD extends Item class Video extends Item

Επίδειξη [Project “dome”] Live demo: create class MusicCD create class Video create/call objects implement/show method “print” (initially print only common fields - title,comment) write class Database implement/show method: Database::list create superclass “EntertainmentItem” rewrite MusicCD, Video, Database introduce: supertype / subtype

Διάγραμμα κλάσεων [Class diagram] Database Item MusicCD Video

Διάγραμμα αντικειμένων [Object diagram] Database

Πηγαίος κώδικας (χρήστης [client]) void list() { for (int i = 0; i < myItems.length; i++) myItems[i].print(); }

Πλεονεκτήματα της κληρονομικότητας Αποφυγή επανάληψης κώδικα από τον χρήστη της κλάσης!

Παράκαμψη μεθόδου [Overriding, redefinition] Το πρόβλημα: Η μέθοδος print είναι διαφορετική για αντικείμενα τύπου MusicCD και Video

Η μέθοδος “print” print print MusicCD Video Εκτύπωση: CD: Triple J Hottest 100 (79 min) artist: sampler, 33 tracks double CD - great! Video print Εκτύπωση: Video: The Matrix (102 min) director: Fred Smith (not seen yet)