برنامهنویسی شیگرا (OOP) روشی برای سازماندهی کدها بر اساس مفهوم «شی» است؛ دقیقاً مانند دنیای واقعی که هر چیز، ویژگیها و رفتارهای خود را دارد. کلاس در واقع یک نقشه یا قالب برای ساخت اشیا است. مثلاً کلاس Car قالب ساخت خودروهای مختلفی است که هر کدام رنگ، مدل و سال ساخت خاص خود را دارند. جاوااسکریپت از نسخه ES6 سینتکس کلاس را معرفی کرد که کار با شیگرایی را بسیار سادهتر میکند.
تعریف کلاس
هر کلاس با کلمه کلیدی class تعریف میشود و متد constructor هنگام ساخت شی جدید اجرا شده و ویژگیهای اولیه را تنظیم میکند:
class Car {
constructor(brand, model, year) {
this.brand = brand;
this.model = model;
this.year = year;
}
getInfo() {
return this.brand + " " + this.model + " (" + this.year + ")";
}
}
const myCar = new Car("سایپا", "کوییک", 1403);
console.log(myCar.getInfo()); // سایپا کوییک (1403)
Getter و Setter
با get و set میتوان دسترسی به ویژگیها را کنترل کرد یا هنگام خواندن، مقداری پردازششده برگرداند؛ مثلاً نمایش قیمت به همراه واحد پول:
class Product {
constructor(name, price) {
this.name = name;
this.price = price;
}
get formattedPrice() {
return this.price.toLocaleString() + " تومان";
}
}
const laptop = new Product("لپتاپ ایسوس", 45000000);
console.log(laptop.formattedPrice);
وراثت (Inheritance)
یکی از قدرتمندترین مفاهیم شیگرایی وراثت است؛ یعنی یک کلاس میتواند ویژگیها و متدهای کلاس دیگری را به ارث ببرد. با کلمه extends کلاس فرزند از کلاس والد مشتق میشود و با super میتوان به سازنده و متدهای والد دسترسی پیدا کرد:
class Animal {
constructor(name) {
this.name = name;
}
speak() {
return this.name + " صدایی تولید میکند";
}
}
class Dog extends Animal {
speak() {
return this.name + " واق واق میکند";
}
}
const dog = new Dog("سگ نگهبان");
console.log(dog.speak()); // سگ نگهبان واق واق میکند
محصول اورجینال INZIP
دانلود پوسته وردپرس باریستا؛ قالب کافیشاپ، رُستری قهوه و فروشگاه قهوه دوزبانه با منوی رومیزی، رزرو آنلاین میز با کد پیامکی و ووکامرس. طراحی اختصاصی inzip.ir
تحویل آنی
آپدیت رایگان
بدون قفل لایسنس
پشتیبانی واقعی
٪۲۶
تخفیف ویژه
۱,۰۳۰,۰۰۰ تومان
متدهای استاتیک
متدهایی که با static تعریف میشوند به خود کلاس تعلق دارند، نه اشیا ساختهشده از آن، و بیشتر برای توابع کمکی کاربرد دارند:
class MathHelper {
static square(number) {
return number * number;
}
}
console.log(MathHelper.square(5)); // 25
مزایای برنامهنویسی شیگرا
شیگرایی باعث نظم و ساختار بهتر کدها میشود، از تکرار جلوگیری میکند، نگهداری برنامههای بزرگ را ساده میسازد و امکان استفاده مجدد از کدها را فراهم میکند. فریمورکهای معروفی مانند React نیز در بسیاری از بخشها بر همین مفاهیم تکیه دارند؛ پس سرمایهگذاری روی یادگیری آن ارزشمند است.
جمعبندی
در این مقاله با تعریف کلاس، سازنده، متدها، Getter و Setter، وراثت و متدهای استاتیک آشنا شدید. برای تثبیت یادگیری پیشنهاد میکنیم یک پروژه کوچک مانند سیستم مدیریت کتابخانه با کلاسهای Book و Library طراحی کنید تا این مفاهیم برایتان ملموستر شود.