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:23] – [Υπερφόρτωση (overloading) των μεθόδων μίας κλάσης] 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>
  
Line 97: Line 97:
 Παρατηρήστε ότι έχουμε δύο μεθόδους με το ίδιο όνομα, οι οποίες διαφοροποιούνται ως προς τον αριθμό και το είδος των ορισμάτων τους. __Ποια έκδοση χρησιμοποιείται σε κάθε κλήση της μεθόδου, αποφασίζεται από τον compiler με βάση το είδος και τον αριθμό των ορισμάτων__. Παρατηρήστε ότι έχουμε δύο μεθόδους με το ίδιο όνομα, οι οποίες διαφοροποιούνται ως προς τον αριθμό και το είδος των ορισμάτων τους. __Ποια έκδοση χρησιμοποιείται σε κάθε κλήση της μεθόδου, αποφασίζεται από τον compiler με βάση το είδος και τον αριθμό των ορισμάτων__.
  
-Ως επιπλέον παράδειγμα, ας υποθέσουμε ότι έχουμε την κλάση **SumNumbers** η οποία αποτελεί μέρος ενός υποθετικού προγράμματος άθροισης αριθμών. Διαθέτουμε τις μέθόδους //sum// οι οποίες προσδιορίζουν διαφορετικές εκδόσεις αθροισμάτων μεταξύ ακεραίων ή αριθμών κινητής υποδιαστολής.  
- 
-<code java SumNumbers.java> 
-class SumNumbers { 
- 
-  static double sum(double []nums) { 
-    double sum = 0; 
-    for(double num : nums)  
-      sum += num; 
-    return sum; 
-  } 
-   
-  static double sum(double a, double b) { 
-    return a+b; 
-  } 
-   
-  static double sum(double a, double b, double c) { 
-    return a+b+c; 
-  } 
-   
-  // sum double a, count times 
-  static double sum(double a, int count) { 
-    double sum = 0; 
-    for(int i=0; i<count; i++) 
-      sum += a; 
-    return sum; 
-  } 
-   
-  public static void main(String [] args) { 
-    double s1 = sum(4.5, 2.3); 
-    double s2 = sum(4.5, 2.3, 1.1); 
-    double s3 = sum(4.5, 2); 
-    System.out.println(s1); 
-    System.out.println(s2); 
-    System.out.println(s3); 
-  } 
-} 
-</code> 
- 
-<WRAP tip 80% center round> 
-Κατευάστε και εκτελέστε την παρακάτω συνάρτηση γράφοντας στο τερματικό σας: 
-<code> 
-javac SumbNumbers.java 
-java SumNumbers 
-</code> 
-Προς το παρόν αγνοήστε τους προσδιοριστές static που μπαίνουν μπροστά από κάθε συνάρτηση. 
-</WRAP> 
  
 |Προηγούμενο: [[:java:class_fields| Τα πεδία της κλάσης ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:class_constructors | Κατασκευαστές της κλάσης ]]| |Προηγούμενο: [[:java:class_fields| Τα πεδία της κλάσης ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:class_constructors | Κατασκευαστές της κλάσης ]]|
  
java/class_methods.1581142985.txt.gz · Last modified: 2020/02/08 06:23 (external edit)