66- دروس جافا سكربت – JS Classes

### مقدمة إلى الكلاسات (Classes) في JavaScript

تُعتبر الكلاسات (Classes) في JavaScript جزءًا من البرمجة الكائنية التوجه (Object-Oriented Programming) والتي تُستخدم لإنشاء كائنات (Objects) تحتوي على [شركة برمجة مصرية] خصائص (Properties) ووظائف (Methods). وقد أُضيفت الكلاسات إلى JavaScript في النسخة ES6 لتسهيل العمل مع [شركة برمجة مصرية] البرمجة الكائنية، وهي تقدم طريقة أبسط وأكثر وضوحًا لإنشاء الكائنات وإدارة الوراثة (Inheritance) بالمقارنة مع النماذج القديمة التي كانت تعتمد على الدوال.

### تعريف الكلاس

يمكن تعريف الكلاس باستخدام الكلمة المفتاحية `class` متبوعةً باسم الكلاس. إليك مثالًا بسيطًا لتعريف كلاس يُسمى `Car`:

class Car {
    constructor(brand, model, year) {
        this.brand = brand;
        this.model = model;
        this.year = year;
    }

    displayInfo() {
        return `${this.brand} ${this.model} from ${this.year}`;
    }
}

const myCar = new Car('Toyota', 'Corolla', 2020);
console.log(myCar.displayInfo()); // Toyota Corolla from 2020

### المكون Constructor

المكون `constructor` هو دالة خاصة تُستدعى عند إنشاء كائن جديد من الكلاس باستخدام الكلمة المفتاحية `new`. تُستخدم لتعيين القيم الأولية للخصائص.

### إنشاء كائنات

يمكنك إنشاء كائنات جديدة من الكلاس باستخدام الكلمة المفتاحية `new` كما في المثال السابق. هذا يُنشئ نسخة جديدة من الكلاس مع الخصائص والوظائف المحددة.

### الوراثة (Inheritance)

توفر الكلاسات في JavaScript إمكانية الوراثة، حيث يمكن لكلاس أن يرث الخصائص والوظائف من كلاس آخر باستخدام الكلمة المفتاحية `extends`. إليك مثال على ذلك:

class ElectricCar extends Car {
    constructor(brand, model, year, batteryLife) {
        super(brand, model, year);
        this.batteryLife = batteryLife;
    }

    displayInfo() {
        return `${super.displayInfo()} with a battery life of ${this.batteryLife} hours`;
    }
}

const myElectricCar = new ElectricCar('Tesla', 'Model S', 2022, 12);
console.log(myElectricCar.displayInfo()); // Tesla Model S from 2022 with a battery life of 12 hours

### الأساليب (Methods)

يمكن أن تحتوي الكلاسات على أساليب تُستخدم لتنفيذ مهام على الكائنات. تُعرف الأساليب داخل الكلاس دون الحاجة لاستخدام الكلمة المفتاحية `function`.

### الخصائص والطرق الساكنة (Static)

يمكن تعريف الخصائص والطرق الساكنة باستخدام الكلمة المفتاحية `static`. هذه الخصائص والطرق تكون متاحة على مستوى الكلاس نفسه وليس على مستوى الكائنات المُنشأة منه.

class MathUtilities {
    static add(a, b) {
        return a + b;
    }
}

console.log(MathUtilities.add(5, 10)); // 15

### الخاتمة

تُعد الكلاسات في JavaScript أداة قوية لتنظيم الكود وتسهيل إعادة استخدامه. من خلال استخدام الكلاسات، يمكن للمطورين إنشاء كود نظيف ومنظم يسهل قراءته وصيانته. كما تُعتبر الوراثة ميزة قوية لتوسيع الوظائف دون تكرار الكود. يعد فهم كيفية عمل الكلاسات واستخدامها بشكل صحيح مهارة أساسية لأي مطور يعمل مع JavaScript.