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

معرفی
جاوا اسکریپت یکی از محبوب ترین زبان های برنامه نویسی است که امروزه مورد استفاده قرار می گیرد. این یک زبان همه کاره است که برای اهداف مختلفی از جمله توسعه وب، توسعه بازی و برنامه نویسی سمت سرور استفاده می شود. یکی از مهم ترین ویژگی های جاوا اسکریپت پشتیبانی آن از برنامه نویسی شی گرا (OOP) است که به توسعه دهندگان این امکان را می دهد تا کلاس هایی ایجاد کنند که اشیاء دنیای واقعی را نشان می دهند و رفتار و داده های آنها را محصور می کنند.
در این پست وبلاگ، مفهوم کلاسها در جاوا اسکریپت و نحوه استفاده از آنها برای ایجاد کد قابل استفاده مجدد و قابل نگهداری را بررسی خواهیم کرد. ما نحو و معنای کلاس ها و همچنین رابطه آنها با اشیا و ارث را پوشش خواهیم داد. ما همچنین برخی از بهترین روش ها را برای استفاده از کلاس ها در کد شما مورد بحث قرار خواهیم داد.
کلاس ها در جاوا اسکریپت چیست؟
یک کلاس در جاوا اسکریپت طرحی برای ایجاد اشیا است. این ویژگی ها و روش هایی را که یک شی خواهد داشت، و همچنین هر رفتاری را که شی باید از خود نشان دهد، تعریف می کند. کلاسها را میتوان بهعنوان الگوها یا نمونههای اولیه برای اشیاء در نظر گرفت که بر اساس تعریف کلاس خود نمونهسازی میشوند (یعنی ایجاد میشوند).
کلاسها در ECMAScript 6، آخرین نسخه زبان جاوا اسکریپت، به عنوان راهی برای سادهتر کردن OOP در جاوا اسکریپت و استفاده آسانتر معرفی شدند. قبل از ECMAScript 6، توسعه دهندگان از ترکیبی از توابع سازنده و زنجیره های نمونه اولیه برای دستیابی به OOP در جاوا اسکریپت استفاده می کردند. کلاسها روشی ساختاریافتهتر و سازمانیافتهتر برای تعریف اشیاء ارائه میکنند و به گونهای طراحی شدهاند که برای توسعهدهندگانی که به OOP در سایر زبانهای برنامهنویسی عادت دارند، آشناتر باشند.
سینتکس یک کلاس جاوا اسکریپت
سینتکس یک کلاس جاوا اسکریپت نسبتا ساده است. در اینجا مثالی از تعریف کلاس آورده شده است:
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
console.log("Hello, my name is " + this.name + " and I am " + this.age + " years old.");
}
}
این کلاس Person نام دارد و دارای دو ویژگی name و age و همچنین یک متد sayHello() است. متد constructor() یک متد خاص است که زمانی فراخوانی می شود که یک شی بر اساس کلاس ایجاد شود. مقادیر اولیه خصوصیات شی را تعیین می کند. متد sayHello() یک متد معمولی است که می تواند بر روی نمونه ای از کلاس فراخوانی شود.
برای ایجاد یک شی بر اساس یک کلاس، از کلمه کلیدی جدید مانند زیر استفاده می کنید:
let person1 = new Person("John", 30);
let person2 = new Person("Jane", 25);
person1.sayHello(); // Output: "Hello, my name is John and I am 30 years old."
person2.sayHello(); // Output: "Hello, my name is Jane and I am 25 years old."
در این مثال، دو شی بر اساس کلاس Person ایجاد می کنیم و متد sayHello() را روی هر شیء فراخوانی می کنیم.
رابطه بین کلاس ها و اشیا
در جاوا اسکریپت، کلاس ها و اشیا ارتباط نزدیکی با هم دارند. یک کلاس ویژگی ها و متدهایی را که یک شی خواهد داشت تعریف می کند، اما یک شی نمونه ای از یک کلاس است که مقادیر منحصر به فرد خود را برای آن ویژگی ها دارد. هنگامی که یک شی را بر اساس یک کلاس ایجاد می کنید، در حال ایجاد یک نمونه از آن کلاس هستید که تمام ویژگی ها و متدهای کلاس را به ارث می برد.
به عنوان مثال، اگر کلاسی به نام Car ایجاد کنیم:
class Car {
constructor(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
start() {
console.log("The " + this.make + " " + this.model + " is starting.");
}
stop() {
console.log("The " + this.make + " " + "is stopping.");
}
}
وراثت در کلاس های جاوا اسکریپت
وراثت یک مفهوم مهم در OOP است و کلاس های جاوا اسکریپت از وراثت پشتیبانی می کنند. وراثت به شما این امکان را می دهد که یک کلاس جدید بر اساس یک کلاس موجود ایجاد کنید که تمام ویژگی ها و متدهای کلاس والد را به ارث می برد. سپس کلاس جدید می تواند ویژگی ها و متدهای خود را اضافه کند یا ویژگی ها و متدهای کلاس والد را لغو کند.
برای ایجاد یک زیر کلاس، از کلمه کلیدی extends استفاده می کنید، مانند این:
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(this.name + " makes a noise.");
}
}
class Dog extends Animal {
speak() {
console.log(this.name + " barks.");
}
}
let dog = new Dog("Fido");
dog.speak(); // Output: "Fido barks."
در این مثال، کلاسی به نام Animal ایجاد می کنیم که دارای ویژگی name و متد speak() است. سپس یک زیر کلاس به نام Dog ایجاد می کنیم که کلاس Animal را با استفاده از کلمه کلیدی extends گسترش می دهد. کلاس Dog متد speak() از کلاس Animal را لغو می کند، به طوری که اکنون به جای “صدا می کند” خروجی “barks” می دهد.
وقتی نمونه ای از کلاس Dog ایجاد می کنیم، ویژگی ها و متدهای کلاس Animal را به ارث می برد و می توانیم متد speak() را روی شی Dog فراخوانی کنیم.
بهترین روش ها برای استفاده از کلاس ها در جاوا اسکریپت
در اینجا برخی از بهترین روش ها برای استفاده از کلاس ها در کد جاوا اسکریپت آمده است:
- از کلاس ها برای ایجاد اشیاء پیچیده با خواص و متدهای متعدد استفاده کنید. اگر فقط به یک شیء ساده با چند ویژگی نیاز دارید، ممکن است یک شیء ساده به معنای واقعی کلمه کافی باشد.
- از نام های معنی دار برای کلاس های خود استفاده کنید، که اشیایی را که آنها نشان می دهند توصیف می کند. به عنوان مثال، اگر در حال ایجاد یک کلاس برای یک خودرو هستید، از نام Car استفاده کنید.
- از تورفتگی و قالب بندی مناسب برای خوانایی بیشتر کد خود استفاده کنید. این امر به ویژه هنگام کار با کلاس ها که می توانند خواص و متدهای زیادی داشته باشند بسیار مهم است.
- تعاریف کلاس خود را کوتاه و متمرکز نگه دارید. اگر یک کلاس دارای ویژگی ها و متدهای زیادی باشد، ممکن است نشانه آن باشد که باید به چندین کلاس کوچکتر تبدیل شود.
- از وراثت به مقدار کم استفاده کنید، و تنها زمانی که برای مورد استفاده شما منطقی باشد. استفاده بیش از حد از وراثت می تواند منجر به ایجاد کد پیچیده و سخت در نگهداری شود.
- برای کنترل دسترسی به ویژگی ها و متدهای کلاس خود از اصلاح کننده های دسترسی مانند عمومی، خصوصی و محافظت شده استفاده کنید. این می تواند به جلوگیری از تغییرات ناخواسته در وضعیت اشیاء شما کمک کند.
نتیجه
کلاس های جاوا اسکریپت یک ویژگی قدرتمند است که به توسعه دهندگان اجازه می دهد کدهای قابل استفاده مجدد و قابل نگهداری ایجاد کنند. کلاس ها روشی ساختاریافته و سازمان یافته برای تعریف اشیا ارائه می دهند و پیاده سازی OOP در جاوا اسکریپت را آسان تر می کنند. کلاسها در جاوا اسکریپت با پشتیبانی از اصلاحکنندههای وراثت و دسترسی، روشی انعطافپذیر و قدرتمند برای ایجاد کدهای پیچیده و توسعهپذیر ارائه میکنند.
با پیروی از بهترین شیوه ها و استفاده از کلاس ها به روشی متفکرانه و هدفمند، می توانید کدی ایجاد کنید که خواندن، درک و نگهداری آسان باشد، حتی با افزایش پیچیدگی پایگاه کد شما.