برنامه نویسی

کپسول بندی با استفاده از جاوا اسکریپت – انجمن DEV توضیح داده شده است

کپسوله سازی یکی از اصول اساسی برنامه نویسی شی گرا (OOP) است که به مفهوم اتصال داده ها (متغیر عضو) و روش هایی که روی داده ها (توابع عضو) در یک واحد واحد به نام کلاس عمل می کنند، اشاره دارد.

کپسوله سازی برنامه نویسان را قادر می سازد تا جزئیات پیاده سازی یک شی را از اشیاء دیگر پنهان کرده و دسترسی مستقیم به وضعیت داخلی یک شی را محدود کنند.

کپسولاسیون چندین مزیت دارد، مانند:

  • بهبود قابلیت نگهداری کد — تغییر و گسترش عملکرد کلاس را آسان تر می کند.

  • افزایش امنیت داده ها با جلوگیری از دسترسی غیرمجاز.

  • همچنین به برنامه نویس اجازه می دهد تا از رابط کلاس بدون دانستن جزئیات پیاده سازی استفاده کند که استفاده و درک آن را آسان تر می کند.

اجازه دهید به نمونه ای از کپسوله سازی در جاوا اسکریپت نگاه کنیم:

function createCounter() {
  let count = 0;

  function increment() {
    count++;
    console.log(count);
  }

  return increment;
}

const counter = createCounter();

counter(); // Output: 1
counter(); // Output: 2
counter(); // Output: 3


وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این مثال، ما یک createCounter تابعی که an را برمی گرداند increment تابع. را increment تابع دسترسی به count متغیر از طریق بسته شدن، اما متغیر count از خارج از تابع قابل دسترسی نیست. تنها راه برای اصلاح count متغیر با فراخوانی است increment تابع، که تعداد را افزایش می دهد و آن را در کنسول ثبت می کند.
این نمونه ای از کپسوله سازی است زیرا count متغیر از دنیای بیرون پنهان است و فقط از طریق می توان به آن دسترسی داشت increment تابع، که یک رابط کاملاً تعریف شده برای دسترسی و اصلاح تعداد ارائه می دهد.

علاوه بر استفاده از بسته، راه دیگری برای دستیابی به کپسوله سازی در جاوا اسکریپت استفاده از آن است setters و getters. Setters و getters روش هایی هستند که به ما اجازه می دهند تا نحوه تنظیم و بازیابی ویژگی ها از یک شی را کنترل کنیم.

در اینجا نمونه ای از استفاده از کپسوله سازی آورده شده است setters و getters:

class Person {
  constructor(name, age) {
    this._name = name;
    this._age = age;
  }

  get name() {
    return this._name;
  }

  set name(newName) {
    if (typeof newName === "string") {
      this._name = newName;
    } else {
      throw new Error("Name must be a string");
    }
  }

  get age() {
    return this._age;
  }

  set age(newAge) {
    if (typeof newAge === "number" && newAge > 0) {
      this._age = newAge;
    } else {
      throw new Error("Age must be a positive number");
    }
  }
}

const person = new Person("John Doe", 30);
console.log(person.name); // Output: John Doe
console.log(person.age); // Output: 30

person.name = "Jane Doe";
person.age = 25;

console.log(person.name); // Output: Jane Doe
console.log(person.age); // Output: 25

person.name = 123; // Throws an error: Name must be a string
person.age = -1; // Throws an error: Age must be a positive number

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این مثال، ما یک کلاس Person با ویژگی های name و age داریم که با استفاده از آن کپسوله شده اند setters وgetters. را getters به ما اجازه می دهد تا مقادیر این ویژگی ها را بازیابی کنیم، در حالی که the setters به ما اجازه می دهد تا نحوه تنظیم آنها را کنترل کنیم.

به عنوان مثال، تعیین کننده نام قبل از تنظیم ویژگی _name بررسی می کند که آیا مقدار جدید یک رشته است یا خیر، در حالی که تنظیم کننده سن بررسی می کند که آیا مقدار جدید یک عدد مثبت است یا خیر. این به ما اجازه می دهد تا محدودیت های خاصی را بر روی مقادیر این ویژگی ها اعمال کنیم و اطمینان حاصل کنیم که آنها همیشه معتبر هستند.

با کپسوله کردنname و age خواص با استفاده از setters و getters، می توانیم اجرای داخلی آنها را پنهان کنیم و نحوه دسترسی و اصلاح آنها را از خارج از کلاس کنترل کنیم. این به حفظ یکپارچگی جسم و جلوگیری از هرگونه عوارض جانبی غیرمنتظره ای که می تواند از دستکاری مستقیم ویژگی های آن ایجاد شود، کمک می کند.

به طور خلاصه، In encapsulation را می توان از طریق استفاده از بسته ها و ماژول ها و همچنین استفاده از setters و getters برای کنترل نحوه تنظیم و بازیابی خواص از یک شی. همچنین به بهبود کیفیت و قابلیت نگهداری سیستم های نرم افزاری کمک می کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا