الميثودات التي تعدل الحالة
جزء من قسم Object Oriented Programming في رحلة JavaScript على Coddy — الدرس 15 من 56.
يمكن للأساليب (Methods) في أصناف JavaScript تعديل حالة (خصائص) الكائن. وتعد هذه إحدى الميزات الرئيسية للبرمجة كائنية التوجه (object-oriented programming).
لنقم بإنشاء فئة BankAccount بسيطة:
class BankAccount {
constructor(owner, balance = 0) {
this.owner = owner;
this.balance = balance;
}
deposit(amount) {
this.balance += amount;
}
}الآن لنقم بإنشاء مثيل (instance) وتعديل حالته:
const johnsAccount = new BankAccount("John", 100);
console.log(johnsAccount.balance); // المخرجات: 100
johnsAccount.deposit(50);
console.log(johnsAccount.balance); // المخرجات: 150في هذا المثال، تقوم الطريقة deposit() بتعديل الحالة الداخلية (الخاصية balance) لمثيل BankAccount.
يمكننا إضافة المزيد من الطرق التي تعدل الحالة:
class BankAccount {
constructor(owner, balance = 0) {
this.owner = owner;
this.balance = balance;
}
deposit(amount) {
this.balance += amount;
}
withdraw(amount) {
if (amount <= this.balance) {
this.balance -= amount;
}
}
transfer(amount, toAccount) {
if (amount <= this.balance) {
this.balance -= amount;
toAccount.balance += amount;
}
}
}الآن يمكننا التعامل مع حسابنا البنكي بطرق متعددة.
التحدي
لقد تم تزويدك بفئة Thermostat. مهمتك هي إضافة دوال (methods) تقوم بتعديل حالة درجة الحرارة الخاصة بها:
increaseTemp()- تزيد درجة الحرارة بمقدار درجة واحدةdecreaseTemp()- تنقص درجة الحرارة بمقدار درجة واحدة
ورقة مرجعية
يمكن للأساليب (Methods) في أصناف (classes) جافا سكريبت تعديل حالة (خصائص) الكائن.
مثال على صنف يحتوي على أساليب لتعديل الحالة:
class BankAccount {
constructor(owner, balance = 0) {
this.owner = owner;
this.balance = balance;
}
deposit(amount) {
this.balance += amount;
}
withdraw(amount) {
if (amount <= this.balance) {
this.balance -= amount;
}
}
transfer(amount, toAccount) {
if (amount <= this.balance) {
this.balance -= amount;
toAccount.balance += amount;
}
}
}استخدام أساليب تعديل الحالة:
const johnsAccount = new BankAccount("John", 100);
console.log(johnsAccount.balance); // Outputs: 100
johnsAccount.deposit(50);
console.log(johnsAccount.balance); // Outputs: 150جرّب بنفسك
import { Thermostat } from './thermostat.js';
// كود الاختبار - لا تقم بالتعديل
const livingRoom = new Thermostat("Living Room", 20);
livingRoom.increaseTemp();
livingRoom.increaseTemp();
console.log(livingRoom.currentTemp); // يجب أن تكون النتيجة 22
livingRoom.decreaseTemp();
console.log(livingRoom.currentTemp); // يجب أن تكون النتيجة 21
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Object Oriented Programming
1الكائنات والكلمة المفتاحية this
مراجعة سريعة: الكائناتإضافة Methods إلى الكائناتفهم الكلمة المفتاحية thisConstructor Functionsالكلمة المفتاحية newتحدي المراجعة7الوراثة والكلمة المفتاحية extends
الوراثةعلاقة "is-a"الكلمة المفتاحية extendsالدالة super()وراثة الخصائص والوظائفتحدي المراجعة2تنظيم الكود
ما هي الـ Modules؟التصدير باستخدام exportالاستيراد باستخدام importالـ Default مقابل الـ Named Exports8تنظيم كود OOP
تنظيم الـ Classes في Modules11مشروع: مصيّر الأشكال
إعداد: فئة Shape والتصديروراثة فئة Circle