This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
java:data_encapsulation [2015/01/21 13:45] gthanos [Τύποι πεδίων της κλάσης] |
java:data_encapsulation [2015/01/21 13:55] gthanos |
||
---|---|---|---|
Line 52: | Line 52: | ||
===== Τύποι πεδίων της κλάσης ===== | ===== Τύποι πεδίων της κλάσης ===== | ||
- | Μία κλάση μπορεί να διαθέτει **primitive** (βασικούς) τύπους δεδομένων (πχ. int, long, char, double, float κλπ) ή **reference** τύπους δεδομένων. **Reference** τύποι δεδομένων είναι οι μη βασικοί τύποι δεδομένων που αναφέρονται σε άλλες κλάσεις. Για παράδειγμα, ας πούμε ότι στο παραπάνω παράδειγμα θέλουμε να προσθέσουμε την θέση του ποδηλάτου. Η θέση του ποδηλάτου μπορεί να προσδιοριστεί από την παρακάτω κλάση ''Coordinates''. | + | Μία κλάση μπορεί να διαθέτει **primitive** (βασικούς) τύπους δεδομένων (πχ. int, long, char, double, float κλπ) ή **reference** τύπους δεδομένων. **Reference** τύποι δεδομένων είναι οι μη βασικοί τύποι δεδομένων που αναφέρονται σε άλλες κλάσεις. Για παράδειγμα, ας πούμε ότι στο παραπάνω παράδειγμα θέλουμε να προσθέσουμε την θέση του ποδηλάτου. Η θέση του ποδηλάτου μπορεί να προσδιοριστεί από την παρακάτω κλάση ''Coordinates'' που προσδιορίζει την θέση με βάση το γεωγραφικό ύψος και πλάτος. |
<code java> | <code java> | ||
Line 58: | Line 58: | ||
private double latitude; | private double latitude; | ||
private double longitude; | private double longitude; | ||
+ | | ||
+ | public void Coordinates(double lat, double long) { | ||
+ | latitude = lat; | ||
+ | longitude = long; | ||
+ | } | ||
| | ||
public double getLatitude() { | public double getLatitude() { | ||
Line 77: | Line 82: | ||
<code java> | <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> | </code> | ||
+ | Η κλάση ''Bicycle'' επομένως περιέχει εκτός από **primitive** πεδία και ένα **reference** πεδίο το πεδίο ''coordinates''. Εδώ θα πρέπει να παρατηρήσουμε δύο πράγματα. | ||
+ | - Στην 1η γραμμή του κατασκευαστή τη συνάρτησης bicycle συναντούμε ''coordinates = new Coordinates(lat,long);''. | ||
+ | - Το πεδίο ''coordinates'' ορίζεται ως **public** και όχι ως **private** (γιατί;). | ||