Διαδρομές
/
Java
Java
/
Ασκήσεις
/
Το αυτοκινητάκι του Jedlik
Το αυτοκινητάκι του Jedlik

Το αυτοκινητάκι του Jedlik

Άσκηση εκμάθησης

Εισαγωγή

Κλάσεις

Το βασικό αντικειμενοστρεφές δομικό στοιχείο στη 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".

Έχεις έξι εργασίες, καθεμία από τις οποίες θα δουλέψει με στιγμιότυπα τηλεχειριζόμενου αυτοκινήτου.

1. Αγόρασε ένα ολοκαίνουριο τηλεχειριζόμενο αυτοκίνητο

Υλοποίησε τη (static) μέθοδο JedliksToyCar.buy() ώστε να επιστρέφει ένα ολοκαίνουριο στιγμιότυπο τηλεχειριζόμενου αυτοκινήτου:

JedliksToyCar car = JedliksToyCar.buy();

2. Εμφάνισε την απόσταση που έχει διανυθεί

Υλοποίησε τη μέθοδο JedliksToyCar.distanceDisplay() ώστε να επιστρέφει την απόσταση όπως εμφανίζεται στην οθόνη LED:

JedliksToyCar car = JedliksToyCar.buy();
car.distanceDisplay();
// => "Driven 0 meters"

3. Εμφάνισε το ποσοστό της μπαταρίας

Υλοποίησε τη μέθοδο JedliksToyCar.batteryDisplay() ώστε να επιστρέφει το ποσοστό της μπαταρίας όπως εμφανίζεται στην οθόνη LED:

JedliksToyCar car = JedliksToyCar.buy();
car.batteryDisplay();
// => "Battery at 100%"

4. Ενημέρωσε τον αριθμό των μέτρων που διανύθηκαν όταν οδηγάς

Υλοποίησε τη μέθοδο JedliksToyCar.drive() που ενημερώνει τον αριθμό των μέτρων που έχουν διανυθεί:

JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.distanceDisplay();
// => "Driven 40 meters"

5. Ενημέρωσε το ποσοστό της μπαταρίας όταν οδηγάς

Ενημέρωσε τη μέθοδο JedliksToyCar.drive() ώστε να ενημερώνει το ποσοστό της μπαταρίας:

JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.batteryDisplay();
// => "Battery at 98%"

6. Εμπόδισε την οδήγηση όταν η μπαταρία έχει αδειάσει

Ενημέρωσε τη μέθοδο JedliksToyCar.drive() ώστε να μην αυξάνει την απόσταση που έχει διανυθεί ούτε να μειώνει το ποσοστό της μπαταρίας όταν η μπαταρία έχει αδειάσει (στο 0%):

JedliksToyCar car = JedliksToyCar.buy();

// Drain the battery
// ...

car.distanceDisplay();
// => "Driven 2000 meters"

car.batteryDisplay();
// => "Battery empty"
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Java Exercism

Έτοιμος να ξεκινήσεις την άσκηση Το αυτοκινητάκι του Jedlik;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Java με 26 έννοιες158 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.