User Tools

Site Tools


oop:introduction

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
oop:introduction [2020/02/21 11:07]
gthanos [Κατασκευαστές της Κλάσης (Class Constructors)]
oop:introduction [2020/02/21 11:15]
gthanos [Κληρονομικότητα]
Line 55: Line 55:
   - **Μεθόδους**: Συναρτήσεις οι οποίες μπορεί να λαμβάνουν τυπικές παραμέτρους, αλλά σε κάθε περίπτωση έχουν πρόσβαση σε όλα τα πεδία (δεδομένα) της κλάσης.   - **Μεθόδους**: Συναρτήσεις οι οποίες μπορεί να λαμβάνουν τυπικές παραμέτρους, αλλά σε κάθε περίπτωση έχουν πρόσβαση σε όλα τα πεδία (δεδομένα) της κλάσης.
  
 +/* 
 === Αντικείμενα ως πεδία της κλάσης === === Αντικείμενα ως πεδία της κλάσης ===
  
Line 98: Line 99:
 </WRAP> </WRAP>
  
-/*  
 === Διάκριση στην προσβασιμότητα των πεδίων και των μεθόδων από άλλες κλάσεις === === Διάκριση στην προσβασιμότητα των πεδίων και των μεθόδων από άλλες κλάσεις ===
  
Line 152: Line 152:
 === Ένα σύντομο παράδειγμα κληρονομικότητας === === Ένα σύντομο παράδειγμα κληρονομικότητας ===
  
-Όταν εφευρέθηκε το ποδήλατο με ταχύτητες, ο εφευρέτης χρησιμοποίησε το υφιστάμενο βασικό σχέδιο του ποδηλάτου για να προσθέσει τον μηχανισμό των ταχυτήτων και να δημιουργήσει τον νέο τύπο ποδηλάτου, το ποδήλατο με ταχύτητες. Με αυτό τον τρόπο το βασικό σχέδιο του ποδηλάτου επεκτάθηκε δημιουργώντας ένα νέο τύπο που περιέχει όλα τα χαρακτηριστικά του προηγούμενου, όπως ρόδες, τιμόνι και πετάλια. +Όταν εφευρέθηκε το ποδήλατο με ταχύτητες, ο εφευρέτης χρησιμοποίησε το υφιστάμενο βασικό σχέδιο του ποδηλάτου για να προσθέσει τον μηχανισμό των ταχυτήτων και να δημιουργήσει τον νέο τύπο ποδηλάτου, το ποδήλατο με ταχύτητες. Με αυτό τον τρόπο το βασικό σχέδιο του ποδηλάτου επεκτάθηκε δημιουργώντας ένα νέο τύπο που περιέχει όλα τα χαρακτηριστικά του προηγούμενου και κάτι επιπλέον.
- +
-Δείτε τα παρακάτω σχηματικά παραδείγματα: ** αυτοκίνητο --> αυτοκίνητο για κίνηση εκτός δρόμου, ποδήλατο --> ποδήλατο με ταχύτητες**+
  
 Στον αντικειμενοστραφή προγραμματισμό η ιδιότητα της κληρονομικότητας μας επιτρέπει να δημιουργήσουμε νέες κλάσεις με αφετηρία υφιστάμενες κλάσεις. Η ιδιότητα της κληρονομικότητας δηλώνει ότι δεν θα χρειαστεί να ξαναγράψουμε το σύνολο της νέας κλάσης από την αρχή. Αντίθετα,  Στον αντικειμενοστραφή προγραμματισμό η ιδιότητα της κληρονομικότητας μας επιτρέπει να δημιουργήσουμε νέες κλάσεις με αφετηρία υφιστάμενες κλάσεις. Η ιδιότητα της κληρονομικότητας δηλώνει ότι δεν θα χρειαστεί να ξαναγράψουμε το σύνολο της νέας κλάσης από την αρχή. Αντίθετα, 
Line 160: Line 158:
   * ο προγραμματιστής αρκεί να προσθέσει ότι επιπλέον χρειάζεται προκειμένου να δημιουργηθεί η νέα κλάση. Η νέα κλάση αποτελεί επέκταση της αρχικής καθώς ενσωματώνει όλα τα χαρακτηριστικά της, αλλά παράγει αντικείμενα του νέου τύπου.   * ο προγραμματιστής αρκεί να προσθέσει ότι επιπλέον χρειάζεται προκειμένου να δημιουργηθεί η νέα κλάση. Η νέα κλάση αποτελεί επέκταση της αρχικής καθώς ενσωματώνει όλα τα χαρακτηριστικά της, αλλά παράγει αντικείμενα του νέου τύπου.
  
-Επεκτείνοντας την παραπάνω συλλογιστική μπορούμε να έχουμε πολλαπλές ιεραρχίες κλάσεων. Για παράδειγμα, από το ποδήλατο με ταχύτητες μπορεί να οριστεί το ποδήλατο για δύο επιβάτες με ταχύτητες ή το ποδήλατο για δύο επιβάτες με ταχύτητες και αμορτισέρ.  +Επεκτείνοντας την παραπάνω λογική μπορούμε να έχουμε πολλαπλές ιεραρχίες κλάσεων. Για παράδειγμα, από το ποδήλατο με ταχύτητες μπορεί να οριστεί το ποδήλατο για δύο επιβάτες με ταχύτητες ή το ποδήλατο για δύο επιβάτες με ταχύτητες και αμορτισέρ.  
  
 //**ποδήλατο** --> **ποδήλατο με ταχύτητες** --> **ποδήλατο με ταχύτητες για δύο επιβάτες** -> **ποδήλατο με ταχύτητες και αμορτισέρ για δύο επιβάτες**//. //**ποδήλατο** --> **ποδήλατο με ταχύτητες** --> **ποδήλατο με ταχύτητες για δύο επιβάτες** -> **ποδήλατο με ταχύτητες και αμορτισέρ για δύο επιβάτες**//.
  
-Για το **ποδήλατο με ταχύτητες** η κλάση **ποδήλατο** αποτελεί την γονική κλάση (__Super Class__). Αντίστοιχα για το **ποδήλατο**, το **ποδήλατο με ταχύτητες** αποτελεί υποκλάση (__Sub Class__) αυτού.+**Συμβάσεις:** Για το **ποδήλατο με ταχύτητες** η κλάση **ποδήλατο** αποτελεί την γονική κλάση (__Super Class__). Αντίστοιχα για το **ποδήλατο**, το **ποδήλατο με ταχύτητες** αποτελεί υποκλάση (__Sub Class__) αυτού. 
 + 
  
 <WRAP tip 80% center round> <WRAP tip 80% center round>
-Μέσω της κληρονομικότητας υλοποιείται μία από τις βασικές αρχές του αντικειμενοστραφή προγραμματισμού που είναι η αρχή της επαναχρησιμοποίησης κώδικα. +Μέσω της κληρονομικότητας υλοποιείται μία από τις βασικές αρχές του αντικειμενοστραφή προγραμματισμού που είναι η αρχή της επαναχρησιμοποίησης του κώδικα. 
  
 Επίσης, καθώς κάθε υποκλάση ενσωματώνει τα χαρακτηριστικά της βασικής της κλάσης οφείλουμε να πούμε τα τα αντικείμενα της υποκλάσης είναι αντικείμενα και της γονικής κλάσης. Για παράδειγμα, ένα αντικείμενο του τύπου "ποδήλατο με ταχύτητες" που προκύπτει από την γονική κλάση "ποδήλατο", είναι και του τύπου "ποδήλατο". Ο παραπάνω συλλογισμός φαίνεται προφανής στον πραγματικό κόσμο και διατηρείται και στο αντικειμενοστραφή προγραμματισμό.  Επίσης, καθώς κάθε υποκλάση ενσωματώνει τα χαρακτηριστικά της βασικής της κλάσης οφείλουμε να πούμε τα τα αντικείμενα της υποκλάσης είναι αντικείμενα και της γονικής κλάσης. Για παράδειγμα, ένα αντικείμενο του τύπου "ποδήλατο με ταχύτητες" που προκύπτει από την γονική κλάση "ποδήλατο", είναι και του τύπου "ποδήλατο". Ο παραπάνω συλλογισμός φαίνεται προφανής στον πραγματικό κόσμο και διατηρείται και στο αντικειμενοστραφή προγραμματισμό. 
 </WRAP> </WRAP>
  
-Στο διπλανή εικόνα παρουσιάζεται εποπτικά ένα παράδειγμα κληρονομικότητας της κλάσης του ποδηλάτου. Από την γενική κλάση του ποδηλάτου προκύπτουν δύο επιμέρους κλάσεις **α)** το ποδήλατο για δύο επιβάτες (χωρίς ταχύτητες) **β)** το ποδήλατο με ταχύτητες. <WRAP todo round>Μπορείτε να προτείνετε κάποια άλλη ιεραρχία κλάσεων για κάποια άλλη οντότητα (π.χ. το αυτοκίνητο) σε αναλογία με αυτή που περιγράψαμε για το ποδήλατο;</WRAP>| {{:oop:bicycle-hierarchy.png?300 |}} |+Στην παρακάτω εικόνα παρουσιάζεται εποπτικά ένα παράδειγμα κληρονομικότητας της κλάσης του ποδηλάτου. Από την γενική κλάση του ποδηλάτου προκύπτουν δύο επιμέρους κλάσεις **α)** το ποδήλατο για δύο επιβάτες (χωρίς ταχύτητες) **β)** το ποδήλατο με ταχύτητες.  
 + 
 +{{  :oop:bicycle-hierarchy.png?400  }} 
 + 
 +<WRAP todo 80% center round>Μπορείτε να προτείνετε κάποια άλλη ιεραρχία κλάσεων για κάποια άλλη οντότητα (π.χ. το αυτοκίνητο) σε αναλογία με αυτή που περιγράψαμε για το ποδήλατο;</WRAP> 
  
  
oop/introduction.txt · Last modified: 2020/02/21 11:17 (external edit)