آموزش جامع اینترفیس‌ها و کلاس‌ها (Classes) در ES6 جاوا اسکریپت: مفاهیم و کاربردها

دسته : آموزش رایگان جاوا اسکریپت (JavaScript)

آموزش جامع اینترفیس‌ها و کلاس‌ها (Classes) در ES6 جاوا اسکریپت: مفاهیم و کاربردها

آموزش جامع اینترفیس‌ها و کلاس‌ها (Classes) در ES6 جاوا اسکریپت: مفاهیم و کاربردها

در ECMAScript 6 (ES6)، قابلیت‌های جدیدی برای برنامه‌نویسی شیءگرا به جاوا اسکریپت اضافه شد که شامل کلاس‌ها (Classes) و اینترفیس‌ها (Interfaces) می‌شود. این ویژگی‌ها به توسعه‌دهندگان کمک می‌کنند تا کدهای خود را ساختارمندتر، قابل‌فهم‌تر و قابل‌مدیریت‌تر بنویسند. در این مقاله، به بررسی مفاهیم کلاس‌ها و اینترفیس‌ها در ES6 می‌پردازیم و نحوه استفاده از آن‌ها را توضیح می‌دهیم.

 

کلاس‌ها (Classes) در ES6

کلاس‌ها در ES6 به عنوان یک راه جدید و ساده برای تعریف شیءها و وراثت در جاوا اسکریپت معرفی شدند. کلاس‌ها به توسعه‌دهندگان این امکان را می‌دهند که به صورت واضح‌تر و سازمان‌یافته‌تر از اصول شیءگرا استفاده کنند.

 

تعریف کلاس‌ها

برای تعریف یک کلاس در ES6 از کلمه‌کلیدی class استفاده می‌کنیم. ساختار کلی تعریف کلاس به صورت زیر است:


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

  greet() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

const ali = new Person('Ali', 30);
ali.greet(); // Output: Hello, my name is Ali and I am 30 years old.

 

در این مثال:

  • class Person برای تعریف کلاس Person استفاده می‌شود.

  • constructor یک متد خاص است که برای مقداردهی اولیه به خصوصیات شیء استفاده می‌شود.

  • متد greet یک متد عمومی است که می‌توان از آن در نمونه‌های کلاس استفاده کرد.

 

وراثت در کلاس‌ها

کلاس‌ها در ES6 به راحتی از کلاس‌های دیگر ارث می‌برند. برای این کار از کلمه‌کلیدی extends استفاده می‌کنیم.


class Student extends Person {
  constructor(name, age, grade) {
    super(name, age); // فراخوانی سازنده کلاس پدر
    this.grade = grade;
  }

  study() {
    console.log(`${this.name} is studying in grade ${this.grade}.`);
  }
}

const sara = new Student('Sara', 20, '12th');
sara.greet(); // Output: Hello, my name is Sara and I am 20 years old.
sara.study(); // Output: Sara is studying in grade 12th.

 

در این مثال:

  • Student کلاس جدیدی است که از Person ارث می‌برد.

  • super(name, age) برای فراخوانی سازنده کلاس پدر و مقداردهی به خصوصیات آن استفاده می‌شود.

  • study متدی است که به طور خاص برای کلاس Student تعریف شده است.

 

متدهای استاتیک و خصوصی

کلاس‌ها در ES6 از متدهای استاتیک و خصوصی نیز پشتیبانی می‌کنند.

متدهای استاتیک:


class MathUtils {
  static add(x, y) {
    return x + y;
  }
}

console.log(MathUtils.add(2, 3)); // Output: 5

 

متدهای خصوصی:


class Person {
  #socialSecurityNumber;

  constructor(name, socialSecurityNumber) {
    this.name = name;
    this.#socialSecurityNumber = socialSecurityNumber;
  }

  getSocialSecurityNumber() {
    return this.#socialSecurityNumber;
  }
}

const ali = new Person('Ali', '123-45-6789');
console.log(ali.getSocialSecurityNumber()); // Output: 123-45-6789
// console.log(ali.#socialSecurityNumber); // SyntaxError: Private field '#socialSecurityNumber' must be declared in an enclosing class

 

در این مثال، #socialSecurityNumber یک متغیر خصوصی است که فقط از داخل کلاس قابل دسترسی است.

 

اینترفیس‌ها (Interfaces) در جاوا اسکریپت

در حالی که جاوا اسکریپت به طور مستقیم از اینترفیس‌ها پشتیبانی نمی‌کند، می‌توانیم مفهوم اینترفیس‌ها را با استفاده از کلاس‌ها و قراردادهای طراحی شبیه‌سازی کنیم. اینترفیس‌ها به طور کلی مجموعه‌ای از متدها و خصوصیات هستند که یک کلاس باید پیاده‌سازی کند.

 

شبیه‌سازی اینترفیس‌ها

برای شبیه‌سازی اینترفیس‌ها در جاوا اسکریپت، می‌توانیم از کلاس‌های انتزاعی (Abstract Classes) و الگوهای طراحی استفاده کنیم.

ایجاد یک "اینترفیس" و پیاده‌سازی آن در کلاس‌ها:


class Drawable {
  draw() {
    throw new Error("Method 'draw()' must be implemented.");
  }
}

class Circle extends Drawable {
  constructor(radius) {
    super();
    this.radius = radius;
  }

  draw() {
    console.log(`Drawing a circle with radius ${this.radius}`);
  }
}

const circle = new Circle(5);
circle.draw(); // Output: Drawing a circle with radius 5

 

در این مثال:

  • Drawable یک کلاس انتزاعی است که به عنوان یک "اینترفیس" عمل می‌کند. متد draw باید توسط هر کلاسی که از Drawable ارث می‌برد پیاده‌سازی شود.

  • Circle از Drawable ارث می‌برد و متد draw را پیاده‌سازی می‌کند.

 

بررسی پیاده‌سازی اینترفیس‌ها

برای اطمینان از پیاده‌سازی صحیح اینترفیس‌ها، می‌توانیم از بررسی‌های دستی استفاده کنیم.


function checkInterfaceImplementation(obj, interface) {
  const methods = Object.getOwnPropertyNames(interface.prototype);
  methods.forEach(method => {
    if (typeof obj[method] !== 'function') {
      throw new Error(`Class does not implement ${method} method from the interface.`);
    }
  });
}

class Circle extends Drawable {
  constructor(radius) {
    super();
    this.radius = radius;
  }

  draw() {
    console.log(`Drawing a circle with radius ${this.radius}`);
  }
}

const circle = new Circle(5);
checkInterfaceImplementation(circle, Drawable); // No error if all methods are implemented

 

در این مثال:

  • تابع checkInterfaceImplementation بررسی می‌کند که آیا تمامی متدهای لازم در کلاس پیاده‌سازی شده‌اند یا خیر.

 

نتیجه‌گیری

کلاس‌ها و اینترفیس‌ها (شبیه‌سازی شده) در ES6 جاوا اسکریپت ابزارهای قدرتمندی برای طراحی و پیاده‌سازی برنامه‌های شیءگرا هستند. کلاس‌ها با استفاده از کلمه‌کلیدی class به شما این امکان را می‌دهند که به راحتی اشیاء و وراثت را مدیریت کنید. همچنین، با شبیه‌سازی اینترفیس‌ها می‌توانید تضمین کنید که کلاس‌های شما پیاده‌سازی صحیحی از متدها و خصوصیات مورد نظر را دارند. با استفاده از این قابلیت‌ها، می‌توانید کدهای خود را ساختارمندتر و قابل‌مدیریت‌تر کنید.

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

مفاهیم Promise و چگونگی استفاده از آن در جاوا اسکریپت: راهنمای کامل همراه با مثال‌ها

مفاهیم Promise و چگونگی استفاده از آن در جاوا اسکریپت: راهنمای کامل همراه با مثال‌ها

30م مهر 1403

مطالعه بیشتر

مدیریت رویدادها در جاوا اسکریپت: اضافه و حذف Event Listeners - آموزش جامع با مثال‌ها

مدیریت رویدادها در جاوا اسکریپت: اضافه و حذف Event Listeners - آموزش جامع با مثال‌ها

2م آبان 1403

مطالعه بیشتر

آموزش مفاهیم پایه‌ای اشیاء در جاوا اسکریپت: تعریف، ویژگی‌ها و متدها

آموزش مفاهیم پایه‌ای اشیاء در جاوا اسکریپت: تعریف، ویژگی‌ها و متدها

2م شهریور 1403

مطالعه بیشتر

نصب Node.js و Create React App: شروع پروژه‌های React.js به‌صورت آسان

نصب Node.js و Create React App: شروع پروژه‌های React.js به‌صورت آسان

28م شهریور 1402

مطالعه بیشتر

آموزش قالب‌بندی متن در HTML: استفاده از تگ‌ها و CSS برای استایل‌دهی

آموزش قالب‌بندی متن در HTML: استفاده از تگ‌ها و CSS برای استایل‌دهی

23م مرداد 1402

مطالعه بیشتر

آموزش ایجاد تگ‌های صفحه‌بندی در HTML و CSS: طراحی و استایل‌دهی pagination

آموزش ایجاد تگ‌های صفحه‌بندی در HTML و CSS: طراحی و استایل‌دهی pagination

29م مرداد 1402

مطالعه بیشتر

استفاده از setTimeout و setInterval در جاوا اسکریپت: آموزش کامل و مثال‌ها

استفاده از setTimeout و setInterval در جاوا اسکریپت: آموزش کامل و مثال‌ها

29م مهر 1403

مطالعه بیشتر

آموزش تغییر نوع و اندازه فونت و رنگ متن با CSS: استایل‌دهی حرفه‌ای به متن‌ها

آموزش تغییر نوع و اندازه فونت و رنگ متن با CSS: استایل‌دهی حرفه‌ای به متن‌ها

5م شهریور 1402

مطالعه بیشتر

معرفی Vue.js و ویژگی‌های کلیدی آن: فریمورک مدرن برای توسعه وب تعاملی

معرفی Vue.js و ویژگی‌های کلیدی آن: فریمورک مدرن برای توسعه وب تعاملی

28م شهریور 1402

مطالعه بیشتر

عملگرها و عبارات محاسباتی در جاوا اسکریپت: نحوه استفاده و کاربردهای مختلف

عملگرها و عبارات محاسباتی در جاوا اسکریپت: نحوه استفاده و کاربردهای مختلف

28م شهریور 1402

مطالعه بیشتر

مقدمه‌ای بر CSS و نحوه اضافه کردن آن به HTML: راهنمای ساده و کامل برای مبتدیان

مقدمه‌ای بر CSS و نحوه اضافه کردن آن به HTML: راهنمای ساده و کامل برای مبتدیان

4م شهریور 1402

مطالعه بیشتر

آموزش لیست‌ها در HTML: طراحی و استایل‌دهی لیست‌های مرتب و نامرتب

آموزش لیست‌ها در HTML: طراحی و استایل‌دهی لیست‌های مرتب و نامرتب

20م مرداد 1402

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد