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:22] – [Υπερφόρτωση (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 95: Line 95:
 </code> </code>
  
-Παρατηρήστε ότι έχουμε δύο μεθόδους με το ίδιο όνομα, οι οποίες διαφοροποιούνται ως προς τον αριθμό και το είδος των ορισμάτων τους. Ποια έκδοση χρησιμοποιείται σε κάθε κλήση της μεθόδου, αποφασίζεται από τον 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.1581142942.txt.gz · Last modified: 2020/02/08 06:22 by gthanos