المسارات
/
Java
Java
/
التمارين
/
سيارة جدليك اللعبة
سيارة جدليك اللعبة

سيارة جدليك اللعبة

تمرين تعلّمي

مقدمة

الأصناف

البنية الأساسية للبرمجة كائنية التوجه في 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

مستعد لبدء سيارة جدليك اللعبة؟

سجّل في Exercism لتتعلّم وتتقن Java عبر 26 مفهومًا158 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.