This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
java:static_keyword [2017/02/16 10:57] gthanos [Στατικές μεταβλητές και μέθοδοι της κλάσης] |
java:static_keyword [2017/03/03 16:36] (current) gthanos [Στατικές μεταβλητές της κλάσης] |
||
---|---|---|---|
Line 47: | Line 47: | ||
Και οι δύο παραπάνω τρόποι προσπέλασης είναι ισοδύναμοι για τον compiler. Ο 2ος τρόπος προσπέλασης **ΔΕΝ** συνιστάται, καθώς δεν είναι σαφές αν πρόκειται για μεταβλητή που ανήκει στην κλάση ή στο αντικείμενο. Αντίθετα, ο 1ος τρόπος αφορά αποκλειστικά μεταβλητές που ανήκουν στην κλάση και για αυτό θεωρείται προγραμματιστικά ορθότερος. Δείτε τον κώδικα της κλάσης **Rectangle** όπως διαμορφώνεται με την χρήση των δύο επιπλέον πεδίων και την καταγραφή του αριθμού των αντικειμένων που δημιουργούνται. | Και οι δύο παραπάνω τρόποι προσπέλασης είναι ισοδύναμοι για τον compiler. Ο 2ος τρόπος προσπέλασης **ΔΕΝ** συνιστάται, καθώς δεν είναι σαφές αν πρόκειται για μεταβλητή που ανήκει στην κλάση ή στο αντικείμενο. Αντίθετα, ο 1ος τρόπος αφορά αποκλειστικά μεταβλητές που ανήκουν στην κλάση και για αυτό θεωρείται προγραμματιστικά ορθότερος. Δείτε τον κώδικα της κλάσης **Rectangle** όπως διαμορφώνεται με την χρήση των δύο επιπλέον πεδίων και την καταγραφή του αριθμού των αντικειμένων που δημιουργούνται. | ||
- | <code java> | + | <code java Rectangle.java> |
public class Rectangle { | public class Rectangle { | ||
- | + | ||
+ | // fields | ||
private int width; | private int width; | ||
private int height; | private int height; | ||
private Point origin; | private Point origin; | ||
- | |||
- | // the Rectangle class has one constructor | ||
- | public Rectangle(int width, int height, Point origin) { | ||
- | this.width = width; | ||
- | this.height = height; | ||
- | this.origin = origin; | ||
- | } | ||
- | | ||
// add an instance variable for the object ID | // add an instance variable for the object ID | ||
private int id; | private int id; | ||
Line 67: | Line 60: | ||
// number of Rectangle objects instantiated | // number of Rectangle objects instantiated | ||
private static int numberOfRectangles = 0; | private static int numberOfRectangles = 0; | ||
+ | |||
+ | // constructors | ||
+ | public Rectangle(int initWidth, int initHeight, Point initOrigin) { | ||
+ | width = initWidth; | ||
+ | height = initHeight; | ||
+ | origin = initOrigin; | ||
+ | id = ++numberOfRectangles; | ||
+ | } | ||
public int getID() { | public int getID() { | ||
Line 75: | Line 76: | ||
return numberOfRectangles; | return numberOfRectangles; | ||
} | } | ||
- | + | | |
- | /* Ο κώδικας από εδώ και κάτω είναι ίδιος με προηγούμενες | + | // methods |
- | * εκδόσεις τις κλάσης και παραλείπεται για λόγους οικονομίας | + | public void setWidth(int newWidth ) { |
- | * χώρου. | + | width = newWidth; |
- | */ | + | } |
+ | |||
+ | public int getWidth() { | ||
+ | return width; | ||
+ | } | ||
+ | |||
+ | public void setHeight(int newHeight ) { | ||
+ | height = newHeight; | ||
+ | } | ||
+ | |||
+ | public int getHeight() { | ||
+ | return height; | ||
+ | } | ||
+ | |||
+ | public void setOrigin(Point newOrigin) { | ||
+ | origin = newOrigin; | ||
+ | } | ||
+ | |||
+ | public Point getOrigin() { | ||
+ | return origin; | ||
+ | } | ||
+ | |||
+ | public int getArea() { | ||
+ | return width * height; | ||
+ | } | ||
+ | |||
+ | // Move rectangle origin by dx,dy | ||
+ | public void move(int dx, int dy) { | ||
+ | origin.setX( origin.getX() + dx ); | ||
+ | origin.setY( origin.getY() + dy ); | ||
+ | } | ||
} | } | ||
</code> | </code> |