User Tools

Site Tools


java:class_methods

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
java:class_methods [2020/02/08 06:07] – [Παραδείγματα μεθόδων] gthanosjava:class_methods [2022/02/23 10:00] (current) – [Παραδείγματα μεθόδων] gthanos
Line 68: Line 68:
  
 <WRAP important 80% center round> <WRAP important 80% center round>
-Βασικό χαρακτηριστικό του Αντικειμενοστραφούς Προγραμματισμού είναι ότι οι μέθοδοι της κλάσης έχουν απευθείας πρόσβαση στα πεδία της κλάσης. Στο παραπάνω παράδειγμα, οι μέθοδοι **setWidth** και **getWidth** έχουν απευθείας πρόσβαση στο πεδίο **width** της κλάσης και οι μέθοδοι **setHeight** και **getHeight** έχουν απευθείας πρόσβασης στο πεδιό **height** της κλάσης. Επίσης, η μέθοδος **resize** έχει πρόσβαση στα πεδία **width** και **height**.+Βασικό χαρακτηριστικό του Αντικειμενοστραφούς Προγραμματισμού είναι ότι οι μέθοδοι της κλάσης έχουν απευθείας πρόσβαση στα πεδία της κλάσης. Στο παραπάνω παράδειγμα, οι μέθοδοι **setWidth** και **getWidth** έχουν απευθείας πρόσβαση στο πεδίο **width** της κλάσης και οι μέθοδοι **setHeight** και **getHeight** έχουν απευθείας πρόσβασης στο πεδιό **height** της κλάσης.
 </WRAP> </WRAP>
  
Line 79: Line 79:
  
 <WRAP tip 80% center round> <WRAP tip 80% center round>
-Aν και ο compiler της Java αντιλαμβάνεται την διαφορά, δεν αποτελεί ορθή προγραμματιστική πρακτική να έχετε μεθόδους με τον ίδιο αριθμό και τύπο ορισμάτων, τα οποία όμως είναι διατεταγμένα με διαφορετική σειρά.+Δεν αποτελεί ορθή προγραμματιστική πρακτική να έχετε μεθόδους με τον ίδιο αριθμό και τον ίδιο τύπο ορισμάτων, τα οποία όμως είναι διατεταγμένα με διαφορετική σειρά. Aν και ο compiler της Java αντιλαμβάνεται τη διαφορά, ο κώδικας καταλήγει να είναι δυσανάγνωστος και να περιέχει πιθανά λογικά σφάλματα.
 </WRAP> </WRAP>
  
-Ας υποθέσουμε ότι έχουμε την κλάση **SumNumbers** η οποία αποτελεί μέρος ενός υποθετικού προγράμματος άθροισης αριθμών. Διαθέτουμε την μέθοδο //sum// η οποία διαθέτει διαφορετικές εκδόσεις αθροισμάτων. Το ποια έκδοση χρησιμοποιείται σε κάθε κλήση της μεθόδου αποφασίζεται από τον compiler με βάση το είδος και τον αριθμό των ορισμάτων.+Στο προηγούμενο παράδειγμαέχουμε τις εξής δύο εκδόσεις της μεθόδου **setOrigin**:
  
 <code java> <code java>
-public class SumNumbers { +  void setOrigin(Point newOrigin) { 
- +    origin newOrigin
-    public double sum(double []nums) { +  } 
-        double sum 0+   
-        for(double num : nums) sum += num; +  void setOrigin(int newXint newY) { 
-        return sum; +    origin.setX(newX); 
-    } +    origin.setY(newY); 
-    public double sum(double adouble b) { +  }
-        return a+b; +
-    +
-    public double sum(double a, double b, double c+
-        return a+b+c+
-    +
-    // sum double a, count times +
-    public double sum(double a, int count+
-        double sum = 0+
-        for(int i=0; i<count; i++) +
-            sum += a; +
-        return sum; +
-    } +
-}+
 </code> </code>
 +
 +Παρατηρήστε ότι έχουμε δύο μεθόδους με το ίδιο όνομα, οι οποίες διαφοροποιούνται ως προς τον αριθμό και το είδος των ορισμάτων τους. __Ποια έκδοση χρησιμοποιείται σε κάθε κλήση της μεθόδου, αποφασίζεται από τον compiler με βάση το είδος και τον αριθμό των ορισμάτων__.
 +
  
 |Προηγούμενο: [[:java:class_fields| Τα πεδία της κλάσης ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:class_constructors | Κατασκευαστές της κλάσης ]]| |Προηγούμενο: [[:java:class_fields| Τα πεδία της κλάσης ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:class_constructors | Κατασκευαστές της κλάσης ]]|
  
java/class_methods.1581142026.txt.gz · Last modified: 2020/02/08 06:07 by gthanos