トラック
/
Java
Java
/
演習
/
Jedlikのおもちゃの車
Jedlikのおもちゃの車

Jedlikのおもちゃの車

学習演習

はじめに

クラス

Javaにおける主要なオブジェクト指向の構成要素は_クラス_です。クラスは、データ(フィールド)と振る舞い(メソッド)を組み合わせたものです。 クラスのフィールドとメソッドは、まとめて_メンバー_と呼ばれます。

メンバーへのアクセスはアクセス修飾子で制御できます。よく使われるのは次の2つです。

  • 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;

privateなフィールドは、通常、メソッドを呼び出した副作用として更新されます。 そのようなメソッドは通常、値を返しません。その場合、戻り値の型はvoidにします。

class CarImporter {
    private int carsImported;

    public void importCars(int numberOfCars)
    {
        // Update private field from public method
        carsImported = carsImported + numberOfCars;
    }
}

説明

この演習では、ラジコンカーをあれこれ動かしてみます。このラジコンカーは、お金をやっと貯めて買えるようになったものです。

車は満充電(100%)のバッテリーからスタートします。リモコンで車を走らせるたびに、車は20メートル進み、バッテリーを1%消費します。

このラジコンカーには、2つの情報を表示するおしゃれなLEDディスプレイが付いています。

  • これまでに走った合計距離。表示は"Driven <METERS> meters"です。
  • バッテリーの残量。表示は"Battery at <PERCENTAGE>%"です。

バッテリーが0%になると、もう車を走らせることはできず、バッテリーの表示は"Battery empty"になります。

課題は6つあり、どれもラジコンカーのインスタンスを扱います。

1. 新品のラジコンカーを買う

新品のラジコンカーのインスタンスを返す(静的)なJedliksToyCar.buy()メソッドを実装しましょう。

JedliksToyCar car = JedliksToyCar.buy();

2. 走った距離を表示する

LEDディスプレイに表示される距離を返すJedliksToyCar.distanceDisplay()メソッドを実装しましょう。

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

3. バッテリーの残量を表示する

LEDディスプレイに表示されるバッテリーの残量を返すJedliksToyCar.batteryDisplay()メソッドを実装しましょう。

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. バッテリーが切れているときは走らせない

バッテリーが切れている(0%)ときは、走行距離を増やさず、バッテリーの残量も減らさないようにJedliksToyCar.drive()メソッドを更新しましょう。

JedliksToyCar car = JedliksToyCar.buy();

// Drain the battery
// ...

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

car.batteryDisplay();
// => "Battery empty"
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Java Exercism

Jedlikのおもちゃの車を始める準備はできましたか?

Exercismに登録すれば、26個のコンセプト158個の演習、そして本物の人間によるメンタリングとともに、Javaを学んでマスターできます。すべて無料です。