java:data_encapsulation

Differences

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

Link to this comparison view

Next revision
Previous revision
java:data_encapsulation [2015/01/21 13:18]
gthanos created
java:data_encapsulation [2016/02/26 11:15] (current)
Line 47: Line 47:
 } }
 </​code>​ </​code>​
 +
 +Για κάθε μεταβλητή έχουμε ορίσει συναρτήσεις λήψης της τιμής των πεδίων της κλάσης (**getters**),​ αλλά και συναρτήσεις για τον ορισμό η την μεταβολή της τιμής τους (**setters**).
 +
 +===== Τύποι πεδίων της κλάσης =====
 +
 +Μία κλάση μπορεί να διαθέτει **primitive** (βασικούς) τύπους δεδομένων (πχ. int, long, char, double, float κλπ) ή **reference** τύπους δεδομένων. **Reference** τύποι δεδομένων είναι οι μη βασικοί τύποι δεδομένων που αναφέρονται σε άλλες κλάσεις. Για παράδειγμα,​ ας πούμε ότι στο παραπάνω παράδειγμα θέλουμε να προσθέσουμε την θέση του ποδηλάτου. Η θέση του ποδηλάτου μπορεί να προσδιοριστεί από την παρακάτω κλάση ''​Coordinates''​ που προσδιορίζει την θέση με βάση το γεωγραφικό ύψος και πλάτος.
 +
 +<code java>
 +class Coordinates {
 +    private double latitude;
 +    private double longitude;
 +    ​
 +    public void Coordinates(double lat, double long) {
 +        latitude = lat;
 +        longitude = long;
 +    }
 +    ​
 +    public double getLatitude() {
 +        return latitude;
 +    }
 +    public double getLongitude() {
 +        return longitude;
 +    }
 +    public void setLatitude(double lat) {
 +        latitude = lat;
 +    }
 +    public void setLongitude(double long) {
 +        longitude = long;
 +    }    ​
 +}
 +</​code>​
 +
 +Με χρήση της παραπάνω κλάσης η κλάση ''​Bicycle''​ γίνεται.
 +
 +<code java>
 +public class Bicycle {
 +        ​
 +    private int cadence;
 +    private int gear;
 +    private int speed;
 +    public Coordinates coordinates;​
 +        ​
 +    public Bicycle(int startCadence,​ int startSpeed, int startGear, int lat, int log) {
 +        coordinates = new Coordinates(lat,​long);​
 +        gear = startGear;
 +        cadence = startCadence;​
 +        speed = startSpeed;
 +    }
 +        ​
 +    public int getCadence() {
 +        return cadence;
 +    }
 +        ​
 +    public void setCadence(int newValue) {
 +        cadence = newValue;
 +    }
 +        ​
 +    public int getGear() {
 +        return gear;
 +    }
 +        ​
 +    public void setGear(int newValue) {
 +        gear = newValue;
 +    }
 +        ​
 +    public int getSpeed() {
 +        return speed;
 +    }
 +        ​
 +    public void applyBrake(int decrement) {
 +        speed -= decrement;
 +    }
 +        ​
 +    public void speedUp(int increment) {
 +        speed += increment;
 +    }
 +}
 +</​code>​
 +
 +Η κλάση ''​Bicycle''​ επομένως περιέχει εκτός από **primitive** πεδία και ένα **reference** πεδίο το πεδίο ''​coordinates''​. Εδώ θα πρέπει να παρατηρήσουμε δύο πράγματα.
 +  - Στην 1η γραμμή του κατασκευαστή τη κλάσης ''​Βicycle''​ συναντούμε ''​coordinates = new Coordinates(lat,​long);''​.
 +  - Το πεδίο ''​coordinates''​ ορίζεται ως **public** και όχι ως **private** (γιατί;​).
 +
  
java/data_encapsulation.1421846319.txt.gz · Last modified: 2016/02/26 11:15 (external edit)