Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ενότητα 9: Πολλαπλή κληρονομικότητα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
Αντικειμενοστραφής Προγραμματισμός Διάλεξη 9 Βαγγέλης Οικονόμου
Περιεχόμενα Πολλαπλή Κληρονομικότητα
Πολλαπλή Κληρονομικότητα Είναι δυνατόν από πολλές κλάσεις βάσης να απορρέει μια νέα κλάση Αυτό λέγεται πολλαπλή κληρονομικότητα Για να προέλθει μια κλάση από περισσότερες από μια κλάσεις βάσεις, διαχωρίζουμε με κόμματα καθε μία κλάση βάσης στη δήλωση κλάσης Παράδειγμα: class A:public C, public B
Παράδειγμα 1 Animal Animal Χαρακτηριστικά: ηλικία, βάρος Ενέργειες: Κινούμαι Χαρακτηριστικά: - Ενέργειες: Πετώ Bird Horse Χαρακτηριστικά: - Ενέργειες: Τρέχω (pegasus) Unicorn Χαρακτηριστικά: - Ενέργειες: -
Μέλη Αντικειμένου Μέλη αντικειμένου προερχόμενο απο πολλαπλή κληρονομικότητα: Παράδειγμα Unicorn: Animal Bird Horse Τι συμβαίνει όμως όταν υπάρχουν μεταβλητές ή μέθοδοι με κοινά ονόματα;
Παράδειγμα 2 Animal Animal Χαρακτηριστικά: ηλικία, βάρος Ενέργειες: Κινούμαι Χαρακτηριστικά: Χρώμα Ενέργειες: Πετώ Bird Horse Χαρακτηριστικά: Χρωμα Ενέργειες: Τρέχω (pegasus) Unicorn Χαρακτηριστικά: - Ενέργειες: - Ποιό χρώμα θα κληρονομήσει;
Άσκηση Η παρακάτω άσκηση αναφέρεται στην χρήση στατικών μεταβλητών σε μια κλάση και στην έννοια της κληρονομικότητας. Μια στατική μεταβλητή ή συναρτηση «ανήκει» στην κλάση (ή την κατηγορία) και είναι κοινή για όλα τα αντικέιμενα αυτής της κλάσης. Έστω ότι θέλετε να σχεδιάσετε ένα παιχνίδι. Σε αυτό το παιχνίδι θα υπάρχουν 2 φυλές, οι Human (Άνθρωποι) και τα Elf (Ξωτικά). Προφανώς σε αυτες τις 2 φυλές θα υπάρχουν κοινά χαρακτηριστικά και χαρακτηριστικά που θα τις κάνουν να διαφέρουν. Στο παράδειγμα μας θα χρησιμοποιήσουμε ένα κοινό χαρακτηριστικό, τη ζωή (ή hit points), ενώ οι δυο φυλές διαφέρουν στο εξής: Τα Ξωτικά έχουν μαγική δύναμη ενώ οι Ανθρωποι έχουν φυσική δύναμη.
Άσκηση (συνέχεια) Δημιουργήστε μια κλάση με το όνομα Player, που θα είναι η κλαση βάσης. Η κλάση Player θα έχει ένα προστατεύομενο μέλος, τα hit_points, καθώς και μια στατική μεταβλητή τύπου ακέραιου (static int) που θα μετράει πόσοι πάικτες δημιουργηθήκαν. Υλοποιήστε τις παρακάτω συναρτήσεις της κλάσης Player: 1. Συναρτήσεις πρόσβασης για τo ιδιωτικό μέλος της κλάσης. 2. Μια συνάρτηση δημιουργίας, χωρίς ορίσματα που θα θέτει τα hit_points ίσον με το μηδέν και θα αυξάνει τη στατική μεταβλητή. Από την κλάση Player θα προκύπτουν οι κλάσεις Human και Elf. Η κλάση Human θα έχει μια ιδιωτική μεταβλήτη που θα εκφράζει την φυσική δύναμη (physical_power), ενώ η κλάση Elf θα έχει μια ιδιωτική μεταβλήτη που θα εκφράζει την μαγική δύναμη (magical_power). Δημιουργήστε συναρτήσεις δημιουργίας για αυτες τις 2 κλάσεις με 2 ορίσματα, όπως και συναρτήσεις πρόσβασης για τα ιδιωτικά μέλη τους. Επίσης, η κάθε κλάση θα έχει μια στατική μεταβλητή που θα μετράει πόσα Elfs και πόσοι Humans δημιουργήθηκαν.
Άσκηση (συνέχεια) Στην main συνάρτηση θα δηλώσετε 2 αντικείμενα τύπου Elf με τη βοήθεια δεικτων, όπου θα δώσετε τιμές μέσω των συναρτησεων δημιουργίας και θα εμφανιζετε στην οθόνη τις τιμές των μεταβλητών μέσω των συναρτήσεων πρόσβασης. Με παρόμοιο τρόπο θα δημιουργήσετε και ένα αντικέιμενο τύπου Human και θα κάνετε τις αντίστοιχες ενέργειες. Έπειτα, θα εμφανίσετe στην οθόνη πόσοι παίκτες δημιουργήθηκαν, πόσα Elfs και πόσοι Humans, δηλ. θα εμφανίσετε τις τιμές των τριών στατικών μεταβλητών στην οθόνη. Τέλος, θα διαγράψετε τους δείκτες που δημιουργήσατε.
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό. Οι όροι χρήσης των έργων τρίτων επεξηγούνται στη διαφάνεια «Επεξήγηση όρων χρήσης έργων τρίτων». Τα έργα για τα οποία έχει ζητηθεί άδεια αναφέρονται στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/από-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.
Επεξήγηση όρων χρήσης έργων τρίτων διαθέσιμο με άδεια CC-BY διαθέσιμο με άδεια CC-BY-SA διαθέσιμο με άδεια CC-BY-ND διαθέσιμο με άδεια CC-BY-NC διαθέσιμο με άδεια CC-BY-NC-SA διαθέσιμο με άδεια CC-BY-NC-ND διαθέσιμο με άδεια CC0 Public Domain διαθέσιμο ως κοινό κτήμα χωρίς σήμανση Δεν επιτρέπεται η επαναχρησιμοποίηση του έργου, παρά μόνο εάν ζητηθεί εκ νέου άδεια από το δημιουργό. Επιτρέπεται η επαναχρησιμοποίηση του έργου και η δημιουργία παραγώγων αυτού με απλή αναφορά του δημιουργού. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού, και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η δημιουργία παραγώγων του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. Δεν επιτρέπεται η εμπορική χρήση του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου και η δημιουργία παραγώγων του. Επιτρέπεται η επαναχρησιμοποίηση του έργου, η δημιουργία παραγώγων αυτού και η εμπορική του χρήση, χωρίς αναφορά του δημιουργού. Επιτρέπεται η επαναχρησιμοποίηση του έργου, η δημιουργία παραγώγων αυτού και η εμπορική του χρήση, χωρίς αναφορά του δημιουργού. Συνήθως δεν επιτρέπεται η επαναχρησιμοποίηση του έργου.
Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.