學習軌道
/
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 公尺,並消耗 1% 的電池電量。

這台遙控車有個酷炫的 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,透過 26 個概念158 個練習 和真人引導來學習並精通 Java,全部免費。