java:class_methods

Μέθοδοι της Κλάσης

Ο ορισμός οποιασδήποτε μεθόδου στη Java περιέχει τα εξής πεδία

<πρ. πρόσβασης> <επιστ. τύπος> <όνομα> (<λίστα περαμέτρων>) Exceptions {…..}

  1. Προσδιοριστές πρόσβασης, όπως public ή private.
  2. Τον τύπο της επιστρεφόμενης τιμής ή void εάν η μέθοδος δεν επιστρέφει κάτι.
  3. Το όνομα της μεθόδου.
  4. H λίστα των παραμέτρων μέσα σε παρένθεση, χωρισμένες με κόμμα. Κάθε παράμετρος εκτός από το όνομά της οφείλει να διαθέτει και τον τύπο της, π.χ. int speed ή double latitude. Εάν δεν υπάρχουν παράμετροι το περιεχόμενο των παρενθέσεων είναι κενό.
  5. Μία σειρά από Exceptions (θα συζητηθούν αργότερα).
  6. Το κυρίως σώμα της μεθόδου, το οποίο περιέχεται μέσα σε αγκύλες {}.

Κανόνες ονοματολογίας

Ισχύει και εδώ ο “κανόνας” ότι τα ονόματα ξεκινούν με μικρό γράμμα και εάν πρόκειται για ονόματα με περισσότερες από μία λέξεις αυτές χωρίζονται με κεφαλαία γράμματα. Η πρώτη λέξη κάθε μεθόδου συνιστάται να είναι ρήμα. Μερικά παραδείγματα μπορείτε να δείτε παρακάτω:

  1. run
  2. runFast
  3. getBackground
  4. getFinalData
  5. compareTo
  6. setLatitude
  7. isEmpty

Παραδείγματα μεθόδων

Δείτε το παρακάτω παράδειγμα από την κλάση Rectangle που αναπαριστά το ορθογώνιο παραλληλόγραμμο.

public class Rectangle {
  public int width;
  public int height;
 
  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 void resize(int dw, int dh) {                                                     
    width += dw; height += dh;  
  }
  public int getArea() { return width * height; }
}

Βασικό χαρακτηριστικό του Αντικειμενοστραφούς Προγραμματισμού είναι ότι οι μέθοδοι της κλάσης έχουν απευθείας πρόσβαση στα πεδία της κλάσης. Στο παραπάνω παράδειγμα, οι μέθοδοι setWidth και getWidth έχουν απευθείας πρόσβαση στο πεδίο width της κλάσης και οι μέθοδοι setHeight και getHeight έχουν απευθείας πρόσβασης στο πεδιό height της κλάσης. Επίσης, η μέθοδος resize έχει πρόσβαση στα πεδία width και height.

Υπερφόρτωση (overloading) των μεθόδων μίας κλάσης

Επιπλέον, βασικό χαρακτηριστικό του Αντικειμενοστραφούς Προγραμματισμού είναι η υπερφόρτωση των μεθόδων. Με τον όρο υπερφόρτωση εννοούμε την δυνατότητα που μας δίνει ο Αντικειμενοστραφής Προγραμματισμός να ορίσουμε σε μία κλάση δύο μεθόδους με το ίδιο όνομα αλλά διαφορετικά ορίσματα. Τα ορίσματα μπορούν να διαφέρουν

  1. ως προς τον τύπο τους
  2. ως προς τον αριθμό τους και
  3. ως προς την σειρά τους

Aν και ο compiler της Java αντιλαμβάνεται την διαφορά, δεν αποτελεί ορθή προγραμματιστική πρακτική να έχετε μεθόδους με τον ίδιο αριθμό και τύπο ορισμάτων, τα οποία όμως είναι διατεταγμένα με διαφορετική σειρά.

Ας υποθέσουμε ότι έχουμε την κλάση SumNumbers η οποία αποτελεί μέρος ενός υποθετικού προγράμματος άθροισης αριθμών. Διαθέτουμε την μέθοδο sum η οποία διαθέτει διαφορετικές εκδόσεις αθροισμάτων. Το ποια έκδοση χρησιμοποιείται σε κάθε κλήση της μεθόδου αποφασίζεται από τον compiler με βάση το είδος και τον αριθμό των ορισμάτων.

public class SumNumbers {
 
    public double sum(double []nums) {
        double sum = 0;
        for(double num : nums) sum += num;
        return sum;
    }
    public double sum(double a, double 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;
    }
}
java/class_methods.txt · Last modified: 2019/02/22 08:23 by gthanos