برنامه نویسی

برنامه نویسی شی گرا در جاوا اسکریپت!🤔

برنامه نویسی شی گرا چیست؟🤔

برنامه نویسی شی گرا (OOP) یک پارادایم برنامه نویسی است (سبک کد، نحوه نوشتن و سازماندهی کد) بر اساس مفهوم اشیاء.
ما می توانیم از اشیاء برای مدل سازی (توصیف) دنیای واقعی یا ویژگی های انتزاعی استفاده کنیم
اشیاء ممکن است حاوی داده ها(خواص) و کد (مواد و روش ها). با استفاده از اشیاء، داده ها و رفتار مربوطه را در یک بلوک بسته بندی می کنیم

نمونه کد

const user = {
    user: 'cyber',
    password: '12345',

    login(password) {
        //Login Logic
    }
    sendMessage(str) {
        //sending Logic
    }
 }
وارد حالت تمام صفحه شوید

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

در کد بالا، کاربر شی مورد استفاده برای مدل سازی یک کاربر واقعی است، در آن نام و رمز عبور کاربر وجود دارد، این داده ها
با این حال دو تابع موجود در شی کاربر است رفتار – اخلاق از آن شی

در OOP، اشیاء قطعات/بلوک های کد مستقلی هستند
آنها همچنین بلوک های سازنده کاربرد هستند و با یکدیگر تعامل دارند. این تعامل از طریق یک رابط عمومی (API) اتفاق می افتد: روش هایی که کد خارج از یک شی می تواند به آنها دسترسی داشته باشد و از آنها برای برقراری ارتباط با شی استفاده کند

چرا OOP در واقع وجود دارد؟ 🤷‍♂️

OOP با هدف سازماندهی کد، برای انعطاف پذیرتر کردن و نگهداری آسان تر آن (جلوگیری از “کد اسپاگتی”) توسعه داده شد.

چهار (4) اصول OOP

✅ انتزاع
✅ کپسوله سازی
✅ ارث
✅ چند شکلی

انتزاع – مفهوم – برداشت

انتزاع عبارت است از نادیده گرفتن یا پنهان کردن جزئیاتی که اهمیتی ندارند و به ما این امکان را می دهد که به جای اینکه با جزئیاتی که واقعاً برای اجرای ما اهمیتی ندارند، یک چشم انداز کلی از چیزی که در حال اجرا هستیم به دست آوریم.

کپسوله سازی

کپسوله سازی به سادگی به معنای خصوصی نگه داشتن ویژگی ها و روش ها در داخل کلاس است، بنابراین از کلاس خارجی قابل دسترسی نیستند، اما برخی از روش ها را می توان به عنوان یک رابط عمومی (API) در معرض دید قرار داد. به همین دلیل است که قبلاً گفتیم تعامل بین اشیا از طریق یک رابط عمومی اتفاق می افتد

وراثت

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

پلی مورفیسم

چند شکلی به سادگی به این معنی است که یک کودک می تواند زیاد نوشتن متدی که از یک کلاس والد به ارث برده است

OOP در JAVASCRIPT (نمونه های اولیه)

اشیاء به یک شی نمونه اولیه پیوند داده می شوند، نمونه اولیه شامل روش هایی (رفتار) است که برای همه اشیاء مرتبط با آن نمونه اولیه قابل دسترسی است. این مفهوم شناخته شده است وراثت نمونه اولیه

مثال: آرایه

const num = [1, 2, 3, 4]
num.map(v => v * 2);

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

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

The above code shows the use case for the map method. checking the **MDN web docs**, we find out that the name of the map method is actually _**Array.prototype.map()**_.
Array.prototype is the prototype of all array objects we create in JavaScript. when we call an array with this map method, all methods associated with the map is been accessible by our array. 
وارد حالت تمام صفحه شوید

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

راه های پیاده سازی وراثت نمونه در جاوا اسکریپت

سوالات زیر ممکن است به ذهن شما خطور کند
چگونه می توانیم نمونه های اولیه را ایجاد کنیم؟ 🤷‍♂️
چگونه اشیاء را به نمونه های اولیه پیوند دهیم؟ 🤷‍♂️
چگونه می توانیم اشیاء جدید را بدون داشتن کلاس ایجاد کنیم؟ 🤷‍♂️

*در واقع سه راه..
*

1. توابع سازنده

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

const Person = function (firstName, birthYear) {
  this.firstName = firstName,
 this.birthYear = birthYear;
// Adding method
// Never create a method in a constructor function like this
this.calcAge = function() {
  console.log(2023 - this.birthYear);
}
};
const cyber = new Person('cybermaxi', 1990);
console.log(cyber);
// Rather create methods like this
Person.prototype.calcAge = function() {
  console.log(2023 - this.birthYear);
}
cyber.calcAge()
1. a new object / {} is created
2. the function is called, this = object / {}
3. the object / {} is linked to the prototype
4. the function automatically returns an object / {}

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

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

2. کلاس های ES6

جایگزین مدرن برای نحو تابع سازنده

** قند نحوی **
: در پشت صحنه، کلاس های ES6 دقیقاً مانند عملکرد سازنده کار می کنند
کلاس‌های ES6 مانند کلاس‌های «OOP کلاسیک» رفتار نمی‌کنند.

class PersonCl {
  constructor (firstName, birthYear) {
    this.firstName = firstName,
    this.birthYear = birthYear

  }

  calcAge = function() {
    console.log(2023 - this.birthYear)
  }
} 
const cyber = new PersonCl('cybermaxi', 1990)
cyber.calcAge()
وارد حالت تمام صفحه شوید

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

توجه داشته باشید

  1. کلاس ها نیستند برافراشته شد(قبل از اظهارنامه قابل استفاده نیست)
  2. کلاس ها هستند شهروندان درجه یک درست مانند توابع (می توان به توابع منتقل و از یک تابع برگرداند)
  3. کلاس ها در حالت سخت اجرا می شوند

یکی از مزیت های کلاس ها نسبت به سازنده ها این است که تمام کدها (یعنی متغیرها و رفتارها) را در یک بلوک خوب و تمیز نگه می دارد.

3. OBJECT.CREATE()

این ساده ترین و سرراست ترین راه برای پیوند یک شی به یک شی نمونه اولیه است

NB. جاوا اسکریپت کلاس ندارد، بنابراین سازنده ها از ابتدا برای شبیه سازی کلاس ها استفاده شده اند

const PersonProto = {
  birthYear: 2000,
  name: 'Caleb',
  calcAge() {
    console.log(2023 - this.birthYear);
  }
}
const caleb = Object.create(PersonProto);
// caleb.name="Caleb"
// caleb.birthYear = 2000
caleb.calcAge()
وارد حالت تمام صفحه شوید

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

امیدوارم این مورد براتون مفید بوده باشه 😊

Cybermaxi7 💗
دوره جاوا اسکریپت Jonas Schmeddtmann ❤️

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

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

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

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