Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التغليف

جزء من قسم Object Oriented Programming في رحلة JavaScript على Coddy — الدرس 17 من 56.

التغليف (Encapsulation) هو عملية دمج البيانات داخل class ضمن وحدة واحدة.

يساعد هذا في وضع قيود على الوصول إلى بيانات class بشكل مباشر، مما يساعدنا في النهاية على منع أي تعديل عرضي للبيانات. 

دعونا نرى التغليف (encapsulation) في العمل من خلال مثال بسيط. أنشئ كائناً أساسياً بخصائص عامة:

const user = {
  name: "John",
  email: "john@example.com"
};

يمكن لأي شخص الوصول إلى هذه الخصائص وتعديلها مباشرة:

user.name = "Jane"; // من السهل تعديلها من الخارج
console.log(user.email); // من السهل الوصول إليها من الخارج

يستخدم نهج أكثر تغليفاً الإغلاقات (closures) لإخفاء البيانات:

function createUser(name, email) {
  // هذه المتغيرات خاصة (مغلفة)
  let userName = name;
  let userEmail = email;
  
  // إرجاع كائن يحتوي على دوال للتفاعل مع البيانات الخاصة
  return {
    getName: function() {
      return userName;
    },
    getEmail: function() {
      return userEmail;
    },
    setName: function(newName) {
      userName = newName;
    }
  };
}
const encapsulatedUser = createUser("John", "john@example.com");

الآن، للتفاعل مع البيانات:

console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"

// لا يمكن الوصول إلى البيانات مباشرة
console.log(encapsulatedUser.userName); // undefined
challenge icon

التحدي

لقد تم تزويدك بكود يستخدم التغليف (encapsulation) لحماية بيانات المستخدم. مهمتك هي إضافة طريقة getAge() للوصول إلى العمر.

ستتحقق الاختبارات مما يلي:

  • وجود طريقة getAge()
  • أنها تعيد العمر الصحيح
  • أن تظل معلومات العمر خاصة

المخرجات المتوقعة:

john_doe

25

جرّب بنفسك

import { createUser } from './createUser.js';

// كود اختبار - لا تقم بالتعديل
const user = createUser("john_doe", 25);
console.log(user.getUsername()); // يجب أن تكون النتيجة "john_doe"
console.log(user.getAge());      // يجب أن تكون النتيجة 25

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming