This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
|
java:class [2015/07/07 18:16] gthanos [Ο κατασκευαστής της κλάσης] |
java:class [2022/02/22 15:37] gthanos |
||
|---|---|---|---|
| Line 7: | Line 7: | ||
| - **μεθόδους (methods)** | - **μεθόδους (methods)** | ||
| - | Σε προηγούμενα παραδείγματα χρησιμοποιήσαμε την κλάση | + | Για τις ανάγκες του |
| + | |||
| + | <code java Rectangle.java> | ||
| + | |||
| + | class Rectangle { | ||
| + | |||
| + | int width; | ||
| + | int height; | ||
| + | |||
| + | public Rectangle(int initWidth, int initHeight) { | ||
| + | width = initWidth; | ||
| + | height = initHeight; | ||
| + | } | ||
| + | |||
| + | void setWidth(int newWidth ) { | ||
| + | width = newWidth; | ||
| + | } | ||
| + | |||
| + | void setHeight(int newHeight ) { | ||
| + | height = newHeight; | ||
| + | } | ||
| + | |||
| + | int getWidth() { | ||
| + | return width; | ||
| + | } | ||
| + | |||
| + | int getHeight() { | ||
| + | return height; | ||
| + | } | ||
| + | |||
| + | int area() { | ||
| + | return width * height; | ||
| + | } | ||
| - | <code java Bicycle.java> | ||
| - | public class Bicycle { | ||
| - | | ||
| - | // the Bicycle class has | ||
| - | // three fields | ||
| - | public int cadence; | ||
| - | public int gear; | ||
| - | public int speed; | ||
| - | | ||
| - | // the Bicycle class has | ||
| - | // one constructor | ||
| - | public Bicycle(int startCadence, | ||
| - | gear = startGear; | ||
| - | cadence = startCadence; | ||
| - | speed = startSpeed; | ||
| - | } | ||
| - | | ||
| - | // the Bicycle class has | ||
| - | // four methods | ||
| - | public void setCadence(int newValue) { | ||
| - | cadence = newValue; | ||
| - | } | ||
| - | | ||
| - | public void setGear(int newValue) { | ||
| - | gear = newValue; | ||
| - | } | ||
| - | | ||
| - | public void applyBrake(int decrement) { | ||
| - | speed -= decrement; | ||
| - | } | ||
| - | | ||
| - | public void speedUp(int increment) { | ||
| - | speed += increment; | ||
| - | } | ||
| - | | ||
| } | } | ||
| </ | </ | ||
| - | Παρατηρήστε ότι η παραπάνω κλάση αποτελείται από | + | Παρατηρήστε ότι η παραπάνω κλάση αποτελείται από |
| + | * την μεταβλητή **width** που συμβολίζει το πλάτος του παραλληλογράμμου. | ||
| + | * την | ||
| + | |||
| + | και τις παρακάτω μεθόδους: | ||
| <code java> | <code java> | ||
| - | public | + | |
| - | public | + | void setHeight(int newHeight |
| - | public void setGear(int newValue); | + | int getWidth(); |
| - | public void applyBrake(int decrement); | + | int getHeight(); |
| - | public void speedUp(int increment); | + | int area(); |
| </ | </ | ||
| - | Προς το παρόν αγνοήστε τον προσδιοριστεί **public**, το οποίο θα εξετάσουμε στην συνέχεια. | + | === Ο κατασκευαστής της κλάσης === |
| - | + | ||
| - | ===== Ο κατασκευαστής της κλάσης | + | |
| Εκτός από τις παραπάνω μεθόδους η κλάση διαθέτει μία " | Εκτός από τις παραπάνω μεθόδους η κλάση διαθέτει μία " | ||
| <code java> | <code java> | ||
| - | public | + | public |
| </ | </ | ||
| Line 69: | Line 68: | ||
| - Δεσμεύει την απαραίτητη μνήμη για την αποθήκευση του αντικειμένου που δημιουργείται. | - Δεσμεύει την απαραίτητη μνήμη για την αποθήκευση του αντικειμένου που δημιουργείται. | ||
| - Αρχικοποιεί τα δεδομένα ενός αντικειμένου, | - Αρχικοποιεί τα δεδομένα ενός αντικειμένου, | ||
| - | - Επιστρέφει ένα δείκτη στην αρχή της περιοχής που έχει δημιουργηθεί το νέο αντικείμενο της κλάσης. Υπό αυτή την έννοια, | + | - Επιστρέφει ένα δείκτη στην αρχή της περιοχής που έχει δημιουργηθεί το νέο αντικείμενο της κλάσης. Υπό αυτή την έννοια, |
| <WRAP tip 80% center round> | <WRAP tip 80% center round> | ||
| - | Η κάθε κλήση του κατασκευαστή της κλάσης δημιουργεί και επιστρέφει ένα αντικείμενο | + | Κάθε κλήση του κατασκευαστή της κλάσης δημιουργεί και επιστρέφει ένα |
| - | Κάθε κλάση έχει τουλάχιστον ένα κατασκευαστή (**// | + | Κάθε κλάση έχει τουλάχιστον ένα κατασκευαστή (**// |
| - | <code java> | + | Για την παραπάνω κλάση |
| - | public Bicycle() { | + | |
| - | } | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | ====== Κληρονομικότητα Κλάσης ====== | + | |
| - | + | ||
| - | Η κλάση | + | |
| - | + | ||
| - | <code java MountainBike.java> | + | |
| - | public class MountainBike extends Bicycle { | + | |
| - | + | ||
| - | // the MountainBike subclass has | + | |
| - | // one field | + | |
| - | public int seatHeight; | + | |
| - | + | ||
| - | // the MountainBike subclass has | + | |
| - | // one constructor | + | |
| - | public MountainBike(int startHeight, | + | |
| - | int startSpeed, int startGear) { | + | |
| - | super(startCadence, | + | |
| - | seatHeight = startHeight; | + | |
| - | } | + | |
| - | + | ||
| - | // the MountainBike subclass has | + | |
| - | // one method | + | |
| - | public void setHeight(int newValue) { | + | |
| - | seatHeight = newValue; | + | |
| - | } | + | |
| - | + | ||
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | Η σχέση | + | |
| <code java> | <code java> | ||
| - | public | + | public |
| - | .... | + | |
| } | } | ||
| </ | </ | ||
| - | |||
| - | H κλάση '' | ||
| - | |||
| - | <code java> | ||
| - | public class MountainBike { | ||
| - | | ||
| - | // the Bicycle class has | ||
| - | // three fields | ||
| - | public int cadence; | ||
| - | public int gear; | ||
| - | public int speed; | ||
| - | // the MountainBike subclass has | ||
| - | // one field | ||
| - | public int seatHeight; | ||
| - | | ||
| - | // the MountainBike class has one constructor | ||
| - | public MountainBike (int startHeight, | ||
| - | seatHeight = startHeight; | ||
| - | gear = startGear; | ||
| - | cadence = startCadence; | ||
| - | speed = startSpeed; | ||
| - | } | ||
| - | | ||
| - | // the Bicycle class has | ||
| - | // four methods | ||
| - | public void setCadence(int newValue) { | ||
| - | cadence = newValue; | ||
| - | } | ||
| - | | ||
| - | public void setGear(int newValue) { | ||
| - | gear = newValue; | ||
| - | } | ||
| - | | ||
| - | public void applyBrake(int decrement) { | ||
| - | speed -= decrement; | ||
| - | } | ||
| - | | ||
| - | public void speedUp(int increment) { | ||
| - | speed += increment; | ||
| - | } | ||
| - | | ||
| - | // the MountainBike subclass has | ||
| - | // one method | ||
| - | public void setHeight(int newValue) { | ||
| - | seatHeight = newValue; | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Συγκρίνοντας τους δύο παραπάνω ορισμούς της κλάσης '' | ||
| - | |||
| - | < | ||
| - | | ||
| - | </ | ||
| - | |||
| - | Εάν ο παραπάνω συλλογισμός έχει ακόμη μεγαλύτερο βάθος, ο ορισμός και η συντήρηση κλάσεων χωρίς την χρήση της ιδιότητας της κληρονομικότητας γίνεται πολύ πολύπλοκη. | ||
| - | |||
| - | ==== Ο κατασκευαστής της υποκλάσης ==== | ||
| - | |||
| - | Επανερχόμενοι στο αρχικό παράδειγμα, | ||
| - | |||
| - | <code java> | ||
| - | // the MountainBike subclass has | ||
| - | // one constructor | ||
| - | public MountainBike(int startHeight, | ||
| - | int startSpeed, int startGear) { | ||
| - | super(startCadence, | ||
| - | seatHeight = startHeight; | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Μέσω της κλήσης '' | ||
| - | - Να κληθεί ο κατασκευαστής της γονικής κλάσης από τον προγραμματιστή, | ||
| - | - Να μην κληθεί κάποιος κατασκευαστής από τον προγραμματιστής. Σε αυτή την περίπτωση ο compiler αναζητά τον default κατασκευαστή της γονικής κλάσης, | ||
| - | |||
| - | <WRAP tip> | ||
| - | Αν δεν κληθεί κανένας κατασκευαστής από τον προγραμματιστή και ο compiler δεν βρει τον default κατασκευαστή της γονικής κλάσης τότε θα εμφανίσει ένα μήνυμα λάθους της μορφής. | ||
| - | < | ||
| - | error: no suitable constructor found for Bicycle (no arguments) | ||
| - | </ | ||
| - | |||
| - | Συνηπώς, | ||
| </ | </ | ||
| - | Τέλος, μία δήλωση της παρακάτω | + | |Προηγούμενο: [[: |
| - | <code java> | + | Εισαγωγή στον |
| - | // the MountainBike subclass has | + | |
| - | // one constructor | + | |
| - | public MountainBike(int startHeight, | + | |
| - | int startSpeed, int startGear) { | + | |
| - | gear = startGear; | + | |
| - | cadence = startCadence; | + | |
| - | speed = startSpeed; | + | |
| - | seatHeight = startHeight; | + | |
| - | } | + | |
| - | </ | + | |
| - | δηλαδή η αντικατάσταση του κώδικα που περιέχει ο κατασκευαστής της | + | |
| - | + | ||
| - | |Προηγούμενο: [[: | + | |