Nima Mohamadian
Nima Mohamadian
خواندن ۳ دقیقه·۶ سال پیش

آموزش مقدماتی دارت Dart - قسمت ۷

این قسمت کلاس و ارث بری

در صورتی که قسمت های قبلی رو از دست دادید:

https://virgool.io/@novonimo/آموزش-مقدماتی-دارت-dart-قسمت-۱-vrd1jjuoble1




آموزش مقدماتی دارت
آموزش مقدماتی دارت



کلاس به ما اجازه میده که شی تعریف کنیم. تعریف کلاس در زبان دارت مشابه زبان های دیگست.

تو این کلاسی که نوشتم در قسمت constructor دو مقدار name و age رو ورودی میگیریم و به شی که میسازیم نسبت میدیم. متد speak هم متد دلخواهی هست که برای این کلاس تعریف کردم. بعد از تعریف کلاس در تابع main که بلافاصله بعد از اجرای برنامه خونده میشه یک شی جدید میسازم. برخلاف سایر زبان ها که معمولا از new استفاده میکنند اینجا از اسم خود کلاس استفاده میکنیم و بعد متد speak رو برای شی که ساختیم پیاده میکنیم.

تعریف یک کلاس در دارت
تعریف یک کلاس در دارت

برای تعریف قسمت constructor یک روش ساده تر هم وجود داره که توصیه میکنم از هر دو روش استفاده کنید. همچنین برای تعریف پارامتر ها هم میشه از تایپشون استفاده کرد.

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

همچنین برای تعریف توابع و پارامتر های خصوصی میتونید از یک underline یا underscore قبل از اسمشون استفاده کرد.

متد خصوصی
متد خصوصی




برای تعریف متد های getter & setter هم از این روش استفاده میکنیم:

setter & getter
setter & getter




زبان هایی مثل Java به ما اجازه میدند که چندین constructor برای یک کلاس تعریف کنیم که هرکدوم مقادیر متفاوتی از پارامترهارو دارند و توی سازنده کلاس ازش استفاده میکنند.
توی زبان دارت هم میتونیم از این خاصیت استفاده کنیم و با روش دیگری سازنده کلاس رو پیاده سازی کنیم. (البته من برای خوانایی کد قبلی سازنده رو حذف کردم)

سازنده از json
سازنده از json



وراثت

در این مثال من کلاس از Person کلاس Employee رو ارث گرفتم پس همه متدهاو ... کلاس والد به کلاس Employee هم ارث میرسه. توی سازنده کلاس با استفاده از متد super میتونیم متد ها و متغیر هامون رو از کلاس والد بگیریم.

من برای کلاس جدید Employee یک متغیر جدید دیگه هم در نظر گرفتم که توی سازنده کلاس بهش میدم.
برای اینکه بیشتر نکات ارث بری رو همینجا گفته باشم به override کردن متد ها هم اشاره کنم که برای اینکار کافیه یک دکوراتیو بزنیم و متد جدیدمون رو تعریف کنیم .

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

ویژگی cascade operator
در خط دوم به جای اینکه از عبارت bob.speak برای صدا زدن متد speak استفاده کنیم میایم از زنجیره دارت استفاده میکنیم به این شکل که علامت ; از انتهای خط تعریف شی رو حذف میکنیم و با ۲ تا نقطه متد مورد نظر رو صدا میزنیم . دقت کنید که میتونیم بیشمار متد و ... رو با استفاده از این زنجیره پشت سر هم استفاده کرد و هر دفعه خود شی رو صدا نزنیم.

اگه دقت کنید تو کلاس جدید برای تعریف ورودی جدید joinDate  از نوع DateTime استفاده کردم و قبلش هم کلمه final  رو به کار بردم . کلمه فاینال همون طور که تو قسمت ۴ مطرح شد برای اینه که دیگه نشه بعد تعریف ، تغییرش داد.
پس وقتی وقتی میخوایم این خصوصیت از شی bob رو تغییر بدیم به خطا میرسیم چون مقدار این خاصیت دیگه تغییر نمیکنه !

ارث بری در دارت
ارث بری در دارت



همچنین سایر قسمت های این سری از آموزش دارت:
قسمت۱ قسمت۲ قسمت۳ قسمت۴ قسمت۵ قسمت۶

از نوشته های دیگر من در ویرگول

https://virgool.io/@novonimo/%D9%86%DA%A9%D8%A7%D8%AA-%D8%B7%D9%84%D8%A7%DB%8C%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%D8%AF%D9%87%D9%86%D8%AF%DA%AF%D8%A7%D9%86-%D8%B1%DB%8C-%D8%A7%DA%A9%D8%AA-%D9%86%DB%8C%D8%AA%D9%88-reactnative-%D9%82%D8%B3%D9%85%D8%AA-%DB%B1-l8kuhkrr98ps
https://virgool.io/@novonimo/%D8%B1%DB%8C-%D8%A7%DA%A9%D8%AA-%D8%B1%D9%88-%D9%82%D9%88%D8%B1%D8%AA-%D8%A8%D8%AF%D9%87-%DB%B1-u8t5ysweyxyj


Contact With me:
https://t.me/nimamohamadian
https://www.facebook.com/nimamohamadian89
https://twitter.com/Nima_Mohamadian
https://www.linkedin.com/in/nima-mohamadian-57ba63123/

dartdartlanggoogledeveloperflutter
توسعه دهنده جاواسکریپت
شاید از این پست‌ها خوشتان بیاید