Κληρονομικότητα [inheritance] Διάλεξη #11: Κληρονομικότητα [inheritance] Τι είναι η κληρονομικότητα; Γιατί είναι σημαντική; Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 2 Παράδειγμα DoME: Λειτουργικότητα DoME: of Multimedia Entertainment (Μια βάση δεδομένων με s και videos.) Εισαγωγή δεδομένων :, artist, # tracks, playing time, got-it, :, director, playing time, got-it, Εκτύπωση λιστών Αναζήτηση Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 3 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 4 Οι κλάσεις Κελυφοποιημένα δεδομένα [encapsulated data] αντικείμενο αντικείμενο artist #tracks director gotit Δεδομένα «φυλάσσονται» σε κάθε αντικείμενο Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 5 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 6
Μέθοδοι Το αντικείμενο database αντικείμενο αντικείμενο database s set get set get videos Μέθοδοι επενεργούν πάνω στο κάθε αντικείμενο Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 7 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 8 () Ημιτελής (σχόλια!) class String ; String artist; String ; (String thetitle, String theartist) = thetitle; artist = theartist; = ; void setcomment(string newcomment) String getcomment() void () () class String ; String director; String ; (String thetitle, String thedirector) = thetitle; director = thedirector; = ; void setcomment(string newcomment) String getcomment() void () Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 9 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 10 () class [] mys; [] mys; void () for(int i=0; i<mys.length; i++) mys[i].(); for(int i=0; i<mys.length; i++) mys[i].(); Μειονεκτήματα Επανάληψη κώδικα στις κλάσεις και Επιπλέον εργασία για τροποποίηση του πηγαίου κώδικα Δυο διανύσματα και επανάληψη κώδικα στην κλάση Διάφορα άλλα (θα τα δούμε σύντομα) Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 11 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 12
Η εναλλακτική λύση: κληρονομικότητα Τα πεδία των κλάσεων Οι υποκλάσεις [subclasses] κληρονομούν τα πεδία από τις υπερκλάσεις [superclasses]. playing time gotit Σημείωση: «τετράγωνα» εικονίδια αναπαριστούν κλάσεις artist #tracks director :, artist, # tracks, playing time, got-it, :, director, playing time, got-it, Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 13 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 14 Οι μέθοδοι των κλάσεων Προεκτάσεις Οι υποκλάσεις κληρονομούν τις μεθόδους από τις υπερκλάσεις. setcomment() () () getartist() () getdirector() Music Game : (), getartist(), setcomment(), () : (), getdirector(), setcomment(), () Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 15 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 16 Επιπλέον προεκτάσεις Ορολογία Κλάση βάσης [base class] Υπερκλάση [superclass] Γονέας [parent] Music Game Παραγόμενη κλάση [derived class] Υποκλάση [subclass] Παιδί [child] Game BoardGame Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 17 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 18
Πλεονεκτήματα της κληρονομικότητας με χρήση κληρονομικότητας class Αποφυγή επανάληψης κώδικα Επαναχρησιμοποίηση κώδικα Πιο εύκολη συντήρηση κώδικα Επεκτασιμότητα [extendability] class Music extends class extends Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 19 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 20 Διάγραμμα κλάσεων [Class diagram] Επίδειξη [Project dome ] Music Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 21 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 22 Διάγραμμα αντικειμένων [Object diagram] Πηγαίος κώδικας (χρήστης [client]) void list() for (int i = 0; i < mys.length; i++) mys[i].(); Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 23 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 24
Πλεονεκτήματα της κληρονομικότητας Παράκαμψη μεθόδου [Overriding, redefinition] Το πρόβλημα: Αποφυγή επανάληψης κώδικα από τον χρήστη της κλάσης! Η μέθοδος είναι διαφορετική για αντικείμενα τύπου Music και Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 25 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 26 Η μέθοδος Music Εκτύπωση: : Triple J Hottest 100 (79 min) artist: sampler, 33 tracks double - great! Εκτύπωση: : The Matrix (102 min) director: Fred Smith (not seen yet) Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 27