This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
java:class [2015/07/07 18:16] gthanos [Ο κατασκευαστής της κλάσης] |
java:class [2016/03/04 17:45] doufexi |
||
---|---|---|---|
Line 7: | Line 7: | ||
- **μεθόδους (methods)** | - **μεθόδους (methods)** | ||
- | Σε προηγούμενα παραδείγματα χρησιμοποιήσαμε την κλάση του ποδηλάτου ''Bicycle''. Παρακάτω ορίζουμε την κλάση αυτή. | + | Για τις ανάγκες του παρόντος κεφαλαίου θα ορίσουμε την κλάση **Rectangle** που απεικονίζει ένα ορθογώνιο παραλληλόγραμμο. Παρακάτω ορίζουμε την κλάση αυτή με χρήση δύο παραμέτρων, το πλάτος και το ύψος του ορθογωνίου. |
+ | |||
+ | <code java Rectangle.java> | ||
+ | |||
+ | public class Rectangle { | ||
+ | |||
+ | // the Rectangle class has 2 fields | ||
+ | public int width; | ||
+ | public int height; | ||
+ | |||
+ | // the Rectangle class has one constructor | ||
+ | public Rectangle(int initWidth, int initHeight) { | ||
+ | width = initWidth; | ||
+ | height = initHeight; | ||
+ | } | ||
+ | |||
+ | public void setWidth(int newWidth ) { | ||
+ | width = newWidth; | ||
+ | } | ||
+ | |||
+ | public void setHeight(int newHeight ) { | ||
+ | height = newHeight; | ||
+ | } | ||
+ | |||
+ | public int getWidth() { | ||
+ | return width; | ||
+ | } | ||
+ | |||
+ | public int getHeight() { | ||
+ | return height; | ||
+ | } | ||
+ | |||
+ | public 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, int startSpeed, int startGear) { | ||
- | 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; | ||
- | } | ||
- | | ||
} | } | ||
</code> | </code> | ||
- | Παρατηρήστε ότι η παραπάνω κλάση αποτελείται από δεδομένα (τις μεταβλητές ''cadence'', ''gear'', ''speed'') και τις παρακάτω μεθόδους. | + | Παρατηρήστε ότι η παραπάνω κλάση αποτελείται από τα πεδία: |
+ | * την μεταβλητή **width** που συμβολίζει το πλάτος του παραλληλογράμμου. | ||
+ | * την μεταβλητή **height** που συμβολίζει το ύψος του παραλληλογράμμου. | ||
+ | |||
+ | και τις παρακάτω μεθόδους: | ||
<code java> | <code java> | ||
- | public void setCadence(int newValue); | + | public void setWidth(int newWidth ); |
- | public void setGear(int newValue); | + | public void setHeight(int newHeight ); |
- | public void setGear(int newValue); | + | public int getWidth(); |
- | public void applyBrake(int decrement); | + | public int getHeight(); |
- | public void speedUp(int increment); | + | public int area(); |
</code> | </code> | ||
- | Προς το παρόν αγνοήστε τον προσδιοριστεί **public**, το οποίο θα εξετάσουμε στην συνέχεια. | + | Προς το παρόν αγνοήστε τον προσδιοριστή **public** μπροστά από τα πεδία και τις μεθόδους, τον οποίο θα εξετάσουμε στην συνέχεια. |
===== Ο κατασκευαστής της κλάσης ===== | ===== Ο κατασκευαστής της κλάσης ===== | ||
Line 63: | Line 66: | ||
<code java> | <code java> | ||
- | public Bicycle(int startCadence, int startSpeed, int startGear); | + | public Rectangle(int setWidth, int setHeight); |
</code> | </code> | ||
- | Η "ειδική" αυτή μέθοδος αποτελεί τον κατασκευαστή της κλάσης. Ο κατασκευαστής της κλάσης έχει τις εξής δύο αρμοδιότητες: | + | Η "ειδική" αυτή μέθοδος αποτελεί τον κατασκευαστή της κλάσης. Ο κατασκευαστής της κλάσης έχει τις εξής αρμοδιότητες: |
- Δεσμεύει την απαραίτητη μνήμη για την αποθήκευση του αντικειμένου που δημιουργείται. | - Δεσμεύει την απαραίτητη μνήμη για την αποθήκευση του αντικειμένου που δημιουργείται. | ||
- Αρχικοποιεί τα δεδομένα ενός αντικειμένου, εφόσον διαθέτει τυπικές παραμέτρους και σώμα (σώμα μιας μεθόδου εννοούμε το τμήμα του κώδικα μέσα στις αγκύλες **{}** ). | - Αρχικοποιεί τα δεδομένα ενός αντικειμένου, εφόσον διαθέτει τυπικές παραμέτρους και σώμα (σώμα μιας μεθόδου εννοούμε το τμήμα του κώδικα μέσα στις αγκύλες **{}** ). | ||
- | - Επιστρέφει ένα δείκτη στην αρχή της περιοχής που έχει δημιουργηθεί το νέο αντικείμενο της κλάσης. Υπό αυτή την έννοια, η μεταβλητή του κάθε αντικειμένου είναι ένας δείκτης (αναφορά) που δείχνει στο νέο αντικείμενο και όχι το αντικείμενο καθ' αυτό. | + | - Επιστρέφει ένα δείκτη στην αρχή της περιοχής που έχει δημιουργηθεί το νέο αντικείμενο της κλάσης. Υπό αυτή την έννοια, η μεταβλητή του κάθε αντικειμένου είναι ένας δείκτης (αναφορά) που δείχνει στο νέο αντικείμενο. |
<WRAP tip 80% center round> | <WRAP tip 80% center round> | ||
+ | Η κάθε κλήση του κατασκευαστή της κλάσης δημιουργεί και επιστρέφει ένα αντικείμενο σε κάθε κλήση του. | ||
- | </WRAP> | + | Κάθε κλάση έχει τουλάχιστον ένα κατασκευαστή (**//μπορεί να έχει και περισσότερους//**).__Εάν δεν έχει οριστεί κατασκευαστής σε μία κλάση __o compiler ορίζει ένα κατασκευαστή χωρίς τυπικές παραμέτρους και χωρίς εντολές μέσα στο κυρίως σώμα. Ο κατασκευαστής αυτός ονομάζεται **βασικός κατασκευαστής της κλάσης** (default constructor) Για την παραπάνω κλάση Rectangle ο βασικός κατασκευαστής θα ήταν o εξής: |
- | + | ||
- | <WRAP tip 80% center round> | + | |
- | Η κάθε κλήση του κατασκευαστή της κλάσης δημιουργεί και επιστρέφει ένα αντικείμενο σε κάθε κλήση του. | + | |
- | Κάθε κλάση έχει τουλάχιστον ένα κατασκευαστή (**//μπορεί να έχει και περισσότερους//**).__Εάν δεν έχει οριστεί κατασκευαστής σε μία κλάση__ o compiler ορίζει ένα κατασκευαστή χωρίς τυπικές παραμέτρους και χωρίς εντολές μέσα στο κυρίως σώμα. Για την παραπάνω κλάση Bicycle ο default κατασκευαστής θα ήταν o εξής: | + | |
<code java> | <code java> | ||
- | public Bicycle() { | + | public Rectangle() { |
} | } | ||
</code> | </code> | ||
</WRAP> | </WRAP> | ||
+ | /* | ||
====== Κληρονομικότητα Κλάσης ====== | ====== Κληρονομικότητα Κλάσης ====== | ||
Line 218: | Line 219: | ||
δηλαδή η αντικατάσταση του κώδικα που περιέχει ο κατασκευαστής της γονικής κλάσης μέσα στον κατασκευαστή της υποκλάσης **__δεν αναιρεί__** την ανάγκη να εκτελεστεί πρώτα ο default κατασκευαστής της γονικής κλάσης. | δηλαδή η αντικατάσταση του κώδικα που περιέχει ο κατασκευαστής της γονικής κλάσης μέσα στον κατασκευαστή της υποκλάσης **__δεν αναιρεί__** την ανάγκη να εκτελεστεί πρώτα ο default κατασκευαστής της γονικής κλάσης. | ||
- | |Προηγούμενο: [[:java:install| Εγκατάσταση Java]] | Επόμενο: [[:java:class_fields | Τα πεδία (δεδομενα) της κλάσης]]| | + | */ |
+ | |||
+ | |Προηγούμενο: [[:java:break_loop_statements | | ||
+ | Εντολές τερματισμού και ελέγχου της ανακύκλωσης]] | [[:toc | Περιεχόμενα]] | Επόμενο: [[:java:class_fields | Τα πεδία (δεδομένα) της κλάσης]]| | ||