Programming? – Telegram
Programming?
11.9K subscribers
373 photos
645 videos
978 files
511 links
🏅Channel privileges

🎗Ninth year of operation
🎗Completely specialized members
🎗Transmitter in channel automation
🎗, ...

🎯 second channel Programming books 👇
@topbookit

🎯 third channel laptop👇
@sysline


👨🏻‍💻Admin channels : @coderme
Download Telegram
پس کل این 4 تمرین رو در 14 خط کد برنامه نویسی نوشتیم !

این تمرینا فقط یه سری مثال بودن که کمک کردن بفهمیم کجا ها لازم نیست الکی متغیر بسازیم و یادگرفتن توابع پیش ساخته ی پایتون مثل ()sum میتونه خیلی کمک کننده باشه، و همچنین تقسیم برنامه بین چند تابع که هر کدوم وظیفه ی خاصی رو انجام میدن، میتونه مارو تبدیل کنه به یه برنامه نویس مرتب و منظم !
حالا وقت این رسیده یه نگاه اجمالی به توابع بازگشتی بندازیم:

قبل از توضیح دوست دارم بهتون بگم که اصلا به چه دردی میخوره؟
تا بحال چیزی به نام زبان های تابعی به گوشتون خورده؟
اصلا میدونید فرقشون با زبان های شئ گرا مثل پایتون چیه؟
یه خصوصیت مهمشون اینه که (اگر از نوع pure functional باشن) حلقه ندارن !
پیش خودتون فکر میکنید که چطور ممکنه یه زبان حلقه نداشته باشه و یا این که زبان های تابعی زبان های ضعیفی هستند و ...

اما اینطور نیست و بهتره بدونید برنامه های بسیار قدرتمندی هم با این زبان ها نوشته شده، مثل سیستم چت فیسبوک یا chat.facebook.com که توسط یه برنامه که به زبان تابعی نوشته شده اجرا میشه و تونسته چت رو همزمان بین چندین میلیون نفر کاربر فعال برقرار کنه !
خوب بجای حلقه از چی استفاده میشه؟
از توابع بازگشتی.

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

یه مثال میزنم که یه حلقه بی نهایته !
👇👇👇👇
خوب به راحتی میتونیم با اضافه کردن یک سری شرط، برای توابع بازگشتی حد خاصی رو تعیین کنیم 👇
من نمیدونم شما چه برنامه ریزی برای آینده ی برنامه نویسیتون دارید، ولی اگر قصد این رو دارید که به یه زبان تابعی مهاجرت کنید، بهتره که توابع بازگشتی رو تو یه زبان قابل فهم و ساده مثل پایتون تمرین کنید.

در جلسه ی بعد، بعد از چند مثال کاربردی، به سراغ تعریف کلاس ها میریم، و از اینجا به بعد دیگه قراره شئ بسازیم، و بقیه ی مباحث رو در کلاس ها تمرین میکنیم و یاد میگیریم.
👍1
خوب در این جلسه قصد داریم به ادامه مباحث شی گرایی بپردازیم و به احتمال زیاد مبحث شی گرایی رو تموم کنیم
مبحث کلاس های abstract :
ممکن است شما بخواهید کلاسی تعریف کنید که فقط و فقط از این کلاس جهت ارث بردن استفاده کنید و هیچ منظور دیگری از تعریف این کلاس نداشته باشید در این گونه مواقع می توانید کلاس رو به صورت abstract تعریف نمایید کلاس های های abstract فقط و فقط برای ارث بردن و همچنین تقویت مبحث کپسوله سازی تعریف می شوند از کلاس های abstract نمی توان شی ای ساخت و یا ازشون اجرایی گرفت کلاس های abstract تمام ویژگی های یه کلاس عادی رو به جز ایجاد شی از کلاس رو دارند و برای کپسوله سازی که قبلا در بخش متدها این مبحث رو توضیح دادیم بهترین گزینه هستن
در تصویر بالا ما کلاس car رو که قبلا تعریف کرده بودیم با اضافه کردن کلمه abstract به این نوع کلاس تبدیل کردیم که فقط جهت ارث بردن تعریف شده و دیگر نمی توان ازش شی ای ساخت
در مورد مبحث کپسوله سازی نیز عرض کنم که این مبحث رو در قسمت آموزش متد ها که حتما مطالعه کرده اید کامل توضیح دادم که بهترین موقعیت برای استفاده از کپسوله سازی در کلاس های abstract هست
مبحث interface در جاوا :
خوب رابط ها یا interface بسیار شبیه به کلاس هایی با تعریف abstract هستن ولی این اشتباه رو نکنید رابط ها کلاس نیستند چرا که ما در کلاس ضمن اینکه اجزای کلاس مثل متدها و اجزای دیگر و تعریف می کنیم پیاده سازی اجزا رو هم انجام میدیم ولی در رابط ها فقط اجزا رو تعریف می کنیم به صورت استاتیک و فینال یا ثابت همون
رابط ها جهت ارث بردن ازشون ایجاد می شوند در حقیقت رابط ها خودشون abstract هستند به طور پیش فرض ینی فقط برای ارث بردن ازشون ایجاد می شوند هر کلاس می تواند فقط از یک کلاس ارث برید داشته باشد در صورتی که هر کلاس می تواند از چندین رابط ارث ببرد همچنین رابط ها هم می تواندد از همدیگر ارث بری داشته باشند
در تصویر بالا ما یه رابط ایجاد کردیم برای ساخت interface شما می تونید روی project کلیک راست کرده و به جای class اینبار interface رو انتخاب کرده و یک نام که اول حرفش بزرگ باشد به رابط بدید و ok کنید
خوب در این تصویر ما اومدیم دو تا متد فقط در رابطمون تعریف کردیم اما برای ارث بردن یک کلاس از یک رابط باید از کلمه کلیدی implements استفاده کرد
خوب اگر در تصویر بالا دقت کنید ما در کلاس car از رابط samface توسط کلمه کلیدی implements ارث بردی و متدهای رابط رو داخل کلاس car پیاده سازی کردیم