java:class_methods

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
java:class_methods [2016/01/22 14:59]
gthanos
java:class_methods [2016/03/08 17:58]
doufexi Added copy constructor
Line 5: Line 5:
   - Προσδιοριστές τύπου, όπως **public**, **private**,​ **protected** (θα τον συναντήσουμε στην συνέχεια).   - Προσδιοριστές τύπου, όπως **public**, **private**,​ **protected** (θα τον συναντήσουμε στην συνέχεια).
   - Τον τύπο της επιστρεφόμενης τιμής ή void εάν η μέθοδος δεν επιστρέφει κάτι.   - Τον τύπο της επιστρεφόμενης τιμής ή void εάν η μέθοδος δεν επιστρέφει κάτι.
-  - Το όνομα της μεθόδου. Ισχύει και εδώ ο "​κανόνας"​ ότι τα ονομάτα ξεκινούν με μικρό γράμμα και εάν πρόκειται για ονόματα με περισσότερες από μία λέξεις αυτές χωρίζονται με κεφαλαία γράμματα. Η πρώτη λέξη κάθε μεθόδου θα πρέπει να είναι ρήμα. Μερικά παραδείγματα μπορείτε να δείτε παρακάτω:​+  - Το όνομα της μεθόδου. Ισχύει και εδώ ο "​κανόνας"​ ότι τα ονόματα ξεκινούν με μικρό γράμμα και εάν πρόκειται για ονόματα με περισσότερες από μία λέξεις αυτές χωρίζονται με κεφαλαία γράμματα. Η πρώτη λέξη κάθε μεθόδου θα πρέπει να είναι ρήμα. Μερικά παραδείγματα μπορείτε να δείτε παρακάτω:​
     - run     - run
     - runFast     - runFast
Line 13: Line 13:
     - setLatitude     - setLatitude
     - isEmpty     - isEmpty
-  - H λίστα των παραμέτρων μέσα σε παρένθεση,​ χωρισμένες με κόμμα. Κάθε παράμετρος εκτός από τον ​τύπο της οφείλει να διαθέτει και τον ​προσδιοριστή ​τύπου της, π.χ. ''​int speed''​ ή ''​double latitude''​. Εάν δεν υπάρχουν παράμετροι το περιεχόμενο των παρανθέσεων είναι κενό.+  - H λίστα των παραμέτρων μέσα σε παρένθεση,​ χωρισμένες με κόμμα. Κάθε παράμετρος εκτός από το όνομά της οφείλει να διαθέτει και τον τύπο της, π.χ. ''​int speed''​ ή ''​double latitude''​. Εάν δεν υπάρχουν παράμετροι το περιεχόμενο των παρενθέσεων είναι κενό.
   - Μία σειρά από Exceptions (θα συζητηθούν αργότερα).   - Μία σειρά από Exceptions (θα συζητηθούν αργότερα).
   - Το κυρίως σώμα της μεθόδου,​ το οποίο περιέχεται μέσα σε αγκύλες.   - Το κυρίως σώμα της μεθόδου,​ το οποίο περιέχεται μέσα σε αγκύλες.
  
-Παρακάτω δίνεται τυπικά παραδείγματα μεθόδων+Παρακάτω δίνονται τυπικά παραδείγματα μεθόδων:
  
 <code java> <code java>
-    ​public int getCadence() { +  public void setWidth(int newWidth ) { 
-        return ​cadence+    width = newWidth; 
-    } +  } 
-  +   
-    public void setCadence(int newValue) { +  ​public int getWidth() { 
-        ​cadence ​newValue+    return ​width
-    +  
-  +    ​ 
-    public int getGear() { +  ​public void setHeight(int newHeight ​) { 
-        return ​gear+    ​height ​newHeight
-    +  
-  +   
-    public void setGear(int newValue) { +  public int getHeight() { 
-        ​gear ​newValue+    return ​height
-    +  
-  +     
-    public int getSpeed() { +  public void setColor(int[] newColor) { 
-        return ​speed+    ​color ​newColor
-    +  
-  +   
-    public void applyBrake(int decrement) { +  public int[] getColor() { 
-        speed -decrement+    return ​color
-    +  
-  +   
-    public ​void speedUp(int increment) { +  public void setPoint(Point newOrigin) { 
-        speed += increment+    ​origin ​newOrigin
-    }+  
 +   
 +  public ​Point getPoint() { 
 +    ​return origin
 +  }
 </​code>​ </​code>​
  
Line 96: Line 100:
 </​code>​ </​code>​
  
-<WRAP info> +<WRAP info 80% center round
-Ανάλογη με την υπερφόρτωση μεθόδων είναι και η υπερφόρτωση κατασκευαστών. Όπως μπορούμε να έχουμε πολλές μεθόδους με το ίδιο όνομα αλλά διαφορετικά ορίσματα,​ έτσι μπορούμε να έχουμε και πολλούς κατασκευαστές με διαφορετικά ορίσματα. Δείτε το παράδειγμα που ακολουθεί για την κλάση Rectangle της προηγούμενης ​παραγράφου.+Ανάλογη με την υπερφόρτωση μεθόδων είναι και η υπερφόρτωση κατασκευαστών. Όπως μπορούμε να έχουμε πολλές μεθόδους με το ίδιο όνομα αλλά διαφορετικά ορίσματα,​ έτσι μπορούμε να έχουμε και πολλούς κατασκευαστές με διαφορετικά ορίσματα. Δείτε το παράδειγμα που ακολουθεί για την κλάση Rectangle της προηγούμενης ​ενότητας.
 </​WRAP>​ </​WRAP>​
  
Line 103: Line 107:
 public class Rectangle { public class Rectangle {
     ​     ​
-  // the Rectangle class has 3 fields 
   private int width;   private int width;
   private int height;   private int height;
-  private int[] color;// (in rgb format) 
   private Point origin;   private Point origin;
     ​     ​
-  ​// the Rectangle class has one constructor +  public Rectangle(int ​initWidth, int initHeight, Point initOrigin) { 
-  ​public Rectangle(int ​setWidth, int setHeight, int[] setColor, Point o) { +    width = initWidth
-    width = setWidth+    height = initHeight
-    height = setHeight;​ +    origin = initOrigin;
-    color = setColor+
-    origin = o;+
   }   }
   ​   ​
-  public Rectangle(int ​setWidth, int setHeight, int[] setColor, int X, int Y) { +  public Rectangle(int ​initWidth, int initHeight, int xPos, int yPos) { 
-    width = setWidth+    width = initWidth
-    height = setHeight+    height = initHeight
-    ​color setColor+    ​origin ​new Point(xPos,​yPos);​ 
-    origin = new Point(X,Y);+  } 
 +   
 +  // Αυτός λέγεται copy constructor:​ είναι κατασκευαστής που παίρνει ως παράμετρο 
 +  // ένα ήδη υπάρχον αντικείμενο τύπου Rectangle και κατασκευάζει ένα αντίγραφο. 
 +  public Rectangle (Rectangle other) { 
 +    width = other.width;​ 
 +    height = other.height
 +    origin = new Point(other.origin); // εδώ καλούμε τον copy constructor της κλάσης Point
   }   }
     ​     ​
-  // the Rectangel class has 3 methods+
   public void setWidth(int newWidth ) {   public void setWidth(int newWidth ) {
     width = newWidth;     width = newWidth;
Line 149: Line 156:
   }   }
   ​   ​
-  public void setPoint(Point ​o) { +  public void setOrigin(Point ​newOrigin) { 
-    origin = o;+    origin = newOrigin;
   }   }
   ​   ​
-  public Point getPoint() {+  public Point getOrigin() {
     return origin;     return origin;
-  } +  }   ​
-   +
-  public String toString() { +
-    return "​Origin Point: ("​+origin.getX()+","​+origin.getY()+"​),​ Width: "​+width+",​ Height: "​+height+ +
-    ", RGB: (0x"​+Integer.toHexString(color[0])+",​ 0x"​+Integer.toHexString(color[1])+ +
-    ", 0x"​+Integer.toHexString(color[0])+"​)";​ +
-  }    ​+
 } }
 </​code>​ </​code>​
Line 167: Line 168:
  
  
-|Προηγούμενο:​ [[:​java:​class_fields| Τα πεδία της κλάσης ]] | Επόμενο:​ [[:​java:​objects | Δημιουργώντας Αντικείμενα ]]|+|Προηγούμενο:​ [[:​java:​class_fields| Τα πεδία της κλάσης ​]] | [[:toc | Περιεχόμενα ​]] | Επόμενο:​ [[:​java:​objects | Δημιουργώντας Αντικείμενα ]]|
  
java/class_methods.txt · Last modified: 2019/02/22 08:23 by gthanos