Κληρονομικότητα [inheritance]
Κληρονομικότητα [inheritance] Τι είναι η κληρονομικότητα; Γιατί είναι σημαντική;
Οι κλάσεις CD Video
Κελυφοποιημένα δεδομένα [encapsulated data] αντικείμενο CD αντικείμενο Video title title artist director comment comment Δεδομένα «φυλάσσονται» σε κάθε αντικείμενο
Μέθοδοι αντικείμενο CD αντικείμενο Video CD Video set... get... set... print print Μέθοδοι επενεργούν πάνω στο κάθε αντικείμενο
Κώδικας 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)
Μειονεκτήματα Επανάληψη κώδικα στις κλάσεις CD και Video Επιπλέον εργασία για τροποποίηση του πηγαίου κώδικα Δυο διανύσματα και επανάληψη κώδικα στην κλάση Database
Η εναλλακτική λύση: κληρονομικότητα Item CD Video Σημείωση: «τετράγωνα» εικονίδια αναπαριστούν κλάσεις
Τα πεδία των κλάσεων Item CD Video Οι υποκλάσεις [subclasses] κληρονομούν τα πεδία από τις υπερκλάσεις [superclasses]. Item title comment CD Video artist director CD: title, artist, comment Video: title, director, 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
Διάγραμμα κλάσεων [Class diagram] Database Item MusicCD Video
Πηγαίος κώδικας (χρήστης [client]) void list() { for (int i = 0; i < myItems.length; i++) myItems[i].print(); }
Η κλάση “Object” Object Person Game Staff Student (Σχεδόν) κάθε κλάση έχει μία υπερ-κλάση. Εάν η υπερ-κλάση δεν έχει άμεσα δηλωθεί, τότε ως υπερκλάση θεωρείται η κλάση Object Οι μέθοδοι της κλάσης Object είναι διαθέσιμες σε κάθε κλάση Object Person Game Staff Student
Πλεονεκτήματα της κληρονομικότητας Αποφυγή επανάληψης κώδικα από τον χρήστη της κλάσης!