Το βασικό αντικειμενοστρεφές δομικό στοιχείο στη Java είναι η κλάση, ένας συνδυασμός δεδομένων (πεδίων) και συμπεριφοράς (μεθόδων). Τα πεδία και οι μέθοδοι μιας κλάσης είναι γνωστά ως μέλη της.
Η πρόσβαση στα μέλη μπορεί να ελεγχθεί μέσω τροποποιητών πρόσβασης, με τους δύο πιο συνηθισμένους να είναι:
public: το μέλος είναι προσβάσιμο από οποιονδήποτε κώδικα (χωρίς περιορισμούς).private: το μέλος είναι προσβάσιμο μόνο από κώδικα της ίδιας κλάσης.Μπορείς να σκεφτείς μια κλάση ως ένα πρότυπο για τη δημιουργία στιγμιοτύπων αυτής της κλάσης.
Για να δημιουργήσεις ένα στιγμιότυπο μιας κλάσης (γνωστό και ως αντικείμενο), χρησιμοποιείται η λέξη-κλειδί new:
class Car {
}
// Create two car instances
Car myCar = new Car();
Car yourCar = new Car();
Τα πεδία έχουν έναν τύπο και ένα όνομα (ορίζεται σε camelCase) και μπορούν να οριστούν οπουδήποτε μέσα σε μια κλάση (κατά σύμβαση γραμμένα σε PascalCase):
class Car {
// Accessible by anyone
public int weight;
// Only accessible by code in this class
private String color;
}
Μπορείς προαιρετικά να εκχωρήσεις μια αρχική τιμή σε ένα πεδίο. Αν ένα πεδίο δεν ορίζει αρχική τιμή, θα πάρει την προεπιλεγμένη τιμή του τύπου του. Οι τιμές των πεδίων ενός στιγμιοτύπου μπορούν να προσπελαστούν και να ενημερωθούν χρησιμοποιώντας τη σημειογραφία με τελείες.
class Car {
// Will be set to specified value
public int weight = 2500;
// Will be set to default value (0)
public int year;
}
Car newCar = new Car();
newCar.weight; // => 2500
newCar.year; // => 0
// Update value of the field
newCar.year = 2018;
Τα ιδιωτικά πεδία συνήθως ενημερώνονται ως παρενέργεια της κλήσης μιας μεθόδου.
Τέτοιες μέθοδοι συνήθως δεν επιστρέφουν καμία τιμή, οπότε ο τύπος επιστροφής πρέπει να είναι void:
class CarImporter {
private int carsImported;
public void importCars(int numberOfCars)
{
// Update private field from public method
carsImported = carsImported + numberOfCars;
}
}
Σε αυτή την άσκηση θα παίξεις με ένα τηλεχειριζόμενο αυτοκίνητο, για το οποίο μάζεψες επιτέλους αρκετά χρήματα για να το αγοράσεις.
Τα αυτοκίνητα ξεκινούν με γεμάτες (100%) μπαταρίες. Κάθε φορά που οδηγάς το αυτοκίνητο με το τηλεχειριστήριο, διανύει 20 μέτρα και καταναλώνει το ένα τοις εκατό της μπαταρίας.
Το τηλεχειριζόμενο αυτοκίνητο έχει μια εντυπωσιακή οθόνη LED που δείχνει δύο πληροφορίες:
"Driven <METERS> meters"."Battery at <PERCENTAGE>%".Αν η μπαταρία είναι στο 0%, δεν μπορείς να οδηγήσεις άλλο το αυτοκίνητο και η ένδειξη της μπαταρίας θα δείχνει "Battery empty".
Έχεις έξι εργασίες, καθεμία από τις οποίες θα δουλέψει με στιγμιότυπα τηλεχειριζόμενου αυτοκινήτου.
Υλοποίησε τη (static) μέθοδο JedliksToyCar.buy() ώστε να επιστρέφει ένα ολοκαίνουριο στιγμιότυπο τηλεχειριζόμενου αυτοκινήτου:
JedliksToyCar car = JedliksToyCar.buy();
Υλοποίησε τη μέθοδο JedliksToyCar.distanceDisplay() ώστε να επιστρέφει την απόσταση όπως εμφανίζεται στην οθόνη LED:
JedliksToyCar car = JedliksToyCar.buy();
car.distanceDisplay();
// => "Driven 0 meters"
Υλοποίησε τη μέθοδο JedliksToyCar.batteryDisplay() ώστε να επιστρέφει το ποσοστό της μπαταρίας όπως εμφανίζεται στην οθόνη LED:
JedliksToyCar car = JedliksToyCar.buy();
car.batteryDisplay();
// => "Battery at 100%"
Υλοποίησε τη μέθοδο JedliksToyCar.drive() που ενημερώνει τον αριθμό των μέτρων που έχουν διανυθεί:
JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.distanceDisplay();
// => "Driven 40 meters"
Ενημέρωσε τη μέθοδο JedliksToyCar.drive() ώστε να ενημερώνει το ποσοστό της μπαταρίας:
JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.batteryDisplay();
// => "Battery at 98%"
Ενημέρωσε τη μέθοδο JedliksToyCar.drive() ώστε να μην αυξάνει την απόσταση που έχει διανυθεί ούτε να μειώνει το ποσοστό της μπαταρίας όταν η μπαταρία έχει αδειάσει (στο 0%):
JedliksToyCar car = JedliksToyCar.buy();
// Drain the battery
// ...
car.distanceDisplay();
// => "Driven 2000 meters"
car.batteryDisplay();
// => "Battery empty"
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Java με 26 έννοιες158 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.