برنامه نویسی و طراحی سایت

زبان برنامه نویسی کاتلین چیست؟ — دانستنی های مهم Kotlin

زبان برنامه نویسی کاتلین چیست؟ — دانستنی های مهم Kotlin

زبان برنامه نویسی کاتلین (Kotlin) زبان رسمی برای برنامه نویسی اندروید به حساب می‌آید که توسط گوگل یعنی سازنده‌ این سیستم‌عامل معرفی شده است. زبان کاتلین در چند سال گذشته توانسته به محبوبیت بالایی دست پیدا کند و رقیب اصلی خود یعنی زبان جاوا را از پیش رو بردارد. مطمئناً این سوال مطرح ‌می‌شود که دلیل پیدایش زبان کاتلین چیست و شاید هم پرسیده شود که زبان برنامه نویسی کاتلین چیست و چه ويژگی‌هایی را ارائه داده است. حتی برای علاقه‌مندان به زبان جاوا نیز سوال است که دلیل برتری زبان کاتلین چیست و چطور این زبان توانسته جایگاه زبان قدرتمندی همچون جاوا را در برنامه نویسی اندروید از آن خود کند.

فهرست مطالب این نوشته
زبان برنامه نویسی کاتلین چیست؟

کاربردهای زبان کاتلین چیست ؟

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

مزیت اصلی زبان برنامه نویسی کاتلین چیست؟

توسعه چند‌پلتفرمی موبایل با کاتلین

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

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

ویژگی های زبان برنامه نویسی کاتلین چیست؟

قابلیت Lazy-Loading در زبان کاتلین

قابلیت Collection Filter در زبان کاتلین

قابلیت تعامل کاتلین با جاوا

کلاس های data در کاتلین

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

دلیل اقبال برنامه نویسان به زبان کاتلین چیست؟

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

چه شرکت هایی از زبان کاتلین استفاده می کنند؟

آیا کاتلین جایگزین جاوا است؟

تفاوت جاوا و کاتلین چیست؟

کد‌نویسی کمتر در کاتلین

وجود قابلیت همکاری در کاتلین

امکان مدیریت مقادیر Null در کاتلین

تفاوت جاوا و کاتلین به لحاظ کامپایل و عملکرد

تفاوت جاوا و کاتلین در خصوص استثنا‌های بررسی شده

قابلیت واگذاری وظیفه در کاتلین

جامعه برنامه نویسی وسیع تر جاوا

مزایا و معایب زبان برنامه نویسی کاتلین

نقاط مثبت زبان کاتلین چیست؟

نقاط منفی زبان کاتلین چیست؟

آینده زبان کاتلین

بازار کار کاتلین به چه صورت است؟

ساختار زبان برنامه نویسی کاتلین

تعریف متغیر ها در زبان کاتلین

منظور از استنتاج نوع در زبان برنامه نویسی کاتلین چیست؟

تفاوت val و var در زبان کاتلین چیست؟

منظور از خطای عدم مقدار‌دهی اولیه در زبان کاتلین چیست؟

نوع‌ های داده در زبان برنامه نویسی کاتلین

نوع داده‌ عددی در کاتلین

نوع داده‌ کاراکتر در زبان کاتلین

نوع داده‌ رشته ای در کاتلین

نوع داده‌ بولی در کاتلین

منظور از مجموعه در زبان برنامه نویسی کاتلین چیست؟

آرایه‌ در زبان کاتلین

لیست‌ در کاتلین چیست؟

ساختار Map در زبان کاتلین

تابع در کاتلین

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

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

منظور از تابع بدون آرگومان و مقدار بازگشتی در زبان برنامه نویسی کاتلین چیست؟

منظور از توابع با مقادیر پیش فرض در زبان کاتلین چیست؟

منظور از توابع با آرگومان‌های نامحدود در زبان کاتلین چیست؟

منظور از توابع با آرگومان‌های نام‌گذاری شده در زبان برنامه نویسی کاتلین چیست؟

ساختار های کنترلی در زبان برنامه نویسی کاتلین

ساختار شرطی if در کاتلین

ساختار انتخابی When در کاتلین

ساختار های حلقه تکرار

منظور از عملگر Range در زبان برنامه نویسی کاتلین چیست؟

ویژگی‌ های جذاب زبان برنامه نویسی کاتلین چیست؟

منظور از اسامی مستعار در زبان برنامه نویسی کاتلین چیست؟

منظور از قابلیت Tuples یا Pair/Triple در زبان کاتلین چیست؟

ویژگی Null-Safe در زبان برنامه نویسی کاتلین چیست؟

ویژگی فراخوانی ایمن

عملگر !!

عملگر Elvis

منظور از Interface در زبان برنامه نویسی کاتلین چیست؟

جمع‌بندی

faradars mobile

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

زبان برنامه نویسی کاتلین چیست؟

کاتلین در زمره زبان‌های برنامه نویسی «منبع‌آزاد» (Open-Source) قرار دارد که در سال 2016 میلادی (1395 شمسی) به جامعه برنامه نویسی معرفی شد. نام این زبان بر اساس نام جزیره کاتلین، در نزدیکی سن پترزبورگ روسیه انتخاب شد. دقیقاً همانند زبان جاوا که براساس نام جزیره‌ای در اندونزی نام‌گذاری شده است. زبان برنامه نویسی کاتلین توسط شرکت JetBrains توسعه داده شده است. این شرکت تلاش دارد که زبان کاتلین را به عنوان زبان برنامه نویسی اصلی برای اندروید و iOS به جامعه برنامه نویسی معرفی کند.

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

کلیک کنید

زبان برنامه نویسی کاتلین بر روی «ماشین مجازی جاوا» (Java Virtual Machine) اجرا می‌شود و به همین دلیل، کاتلین رقیبی برای جاوا شناخته می‌شود. جاوا در زمره‌ی زبان‌های باسابقه برنامه نویسی قرار دارد و این در حالی است که زبان کاتلین در دنیای برنامه نویسی به عنوان زبانی نوظهور شناخته می‌شود. اگر پرسیده شود که کاربرد‌های جاوا و زبان کاتلین چیست باید اشاره کرد که هر دو زبان در حوزه‌های مشابهی از جمله برنامه نویسی سمت سرور و سمت کاربر، برنامه نویسی وب و اندروید کاربرد دارند.

کاربردهای زبان کاتلین چیست ؟

کاتلین زبانی همه‌منظوره برای برنامه نویسی است، به این معنی که می‌توان از آن در حوزه‌های مختلفی استفاده کرد. معمولاً از زبان کاتلین برای «توسعه چند پلتفرمی» (Cross-Platform) در زمینه توسعه اپلیکیشن‌های موبایل، برنامه نویسی اندروید، جاوا‌ اسکریپت و برنامه نویسی سمت سرور استفاده می‌شود. در ادامه مطلب، کاربرد‌های مختلف زبان برنامه نویسی کاتلین بررسی شده است.

آموزش پروژه محور فلاتر – طراحی اپلیکیشن موبایل با Flutter – مقدماتی
فیلم آموزش پروژه محور فلاتر – طراحی اپلیکیشن موبایل با Flutter – مقدماتی در تم آف

کلیک کنید

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

تا قبل از اینکه در سال 2016 میلادی (1395 شمسی) زبان برنامه نویسی کاتلین به عنوان زبان رسمی برنامه نویسی اندروید توسط گوگل معرفی شود، تقریباً بیشتر اپلیکیشن‌های اندرویدی با زبان جاوا نوشته می‌شدند. با این حال، با توجه به سابقه درخشان زبان جاوا در صنعت برنامه نویسی و جامعه برنامه نویسی بزرگ آن، کسی گمان نمی‌کرد که جایگزینی برای این زبان با سابقه وجود داشته باشد، اما ظهور زبان برنامه نویسی کاتلین تمام معادلات را بر هم زد.

آموزش اینتلیجی آیدیا در جاوا و کاتلین – توسعه نرم افزار با IntelliJ IDEA
فیلم آموزش اینتلیجی آیدیا در جاوا و کاتلین – توسعه نرم افزار با IntelliJ IDEA در تم آف

کلیک کنید

زبان برنامه نویسی کاتلین روش جدیدی برای ساخت اپلیکیشن‌های اندرویدی معرفی کرد. با اینکه زبان برنامه نویسی جاوا قدمت زیادی داشت و همچنین، در میان توسعه‌دهندگان بسیار محبوب بود اما مشکلاتی نیز داشت. پس از معرفی زبان برنامه نویسی کاتلین توسط گوگل به عنوان ابزاری برای برنامه نویسی اندروید، دیگر توسعه‌دهندگان اندروید نیازی به استفاده از زبان جاوا احساس نمی‌کردند و کاتلین گزینه بسیار مناسبی برای آن‌ها بود. اگر چه برخی از مشکلات موجود در زبان جاوا در نسخه 8 آن حل شد و در نسخه‌های بعدی آن یعنی 9 و 10 نیز بیشتر مورد توجه قرار گرفت و اوضاع در این زمینه تا حدودی بهتر شد، اما با وجود قابلیت‌های جذاب کاتلین، دیگر زبان برنامه نویسی جاوا نتوانست محبوبیت سابقش را به دست آورد.

زبان کاتلین

مزیت اصلی زبان برنامه نویسی کاتلین چیست؟

با توجه به بخش قبلی، شاید برای شما نیز این سوال پیش آمده باشد که برتری اصلی زبان برنامه نویسی کاتلین چیست و چطور این زبان نوظهور توانست رقیب قدرتمندی همچون جاوا را پشت سر بگذارد. برای پاسخ به این سوال می‌توان دلایل بسیاری را برشمرد. اما مزیت اصلی کاتلین به ویژه در برنامه نویسی اندروید، سازگاری آن با نسخه 6 «کیت توسعه جاوا» (JDK) است، به این معنی که توسعه‌دهندگان می‌توانند برای مشکلات موجود در دستگاه‌های قدیمی‌تر نیز راهکار‌های نرم‌افزاری ارائه کنند. از دیگر دلایل روی آوردن بسیاری از توسعه‌دهندگان اندروید به زبان کاتلین می‌توان به کارایی بالا، قابلیت همکاری، کتابخانه کوچک برای زمان اجرا و کامپایل سریع اشاره کرد.

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

توسعه چند‌پلتفرمی موبایل با کاتلین

یکی از دلایلی که شرکت‌ها زبان کاتلین را برای توسعه اپلیکیشن‌های موبایل انتخاب می‌کنند، توانایی ایجاد اپلیکیشن‌های چند پلتفرمی به کمک آن است. پدیدآورندگان زبان برنامه نویسی کاتلین توسعه‌دهندگان را تشویق می‌کنند تا برنامه‌ها را به صورت گام به گام بسازند، به این صورت که برنامه نویسی را از ویژگی یا ماژول واحدی شروع کنند و بعد از آزمایش عملکرد به سراغ پیاده‌سازی قسمت بعدی بروند.

توسعه چند پلتفرمی زبان کاتلین

در زبان برنامه نویسی کاتلین پیاده‌سازی منطق تجاری برنامه و طراحی رابط کاربری به صورت جداگانه انجام می‌پذیرد و این زبان رابط کاربری (User Interface | UI) و ظاهر برنامه را به صورت کاملاًً بومی پیاده‌سازی می‌کند. زبان کاتلین به توسعه‌دهندگان این امکان را می‌دهد تا از کد‌هایی که قبلاً برای پیاده‌سازی برنامه‌ی اندرویدی نوشته‌اند، استفاده کرده و آن‌ها را برای ساخت برنامه iOS تغییر دهند.

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

مطلب پیشنهادی:

امکانات چند پلتفرمی کاتلین برای اشتراک کد بین اندروید و iOS — راهنمای کاربردی

شروع مطالعه

 

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

زبان برنامه نویسی کاتلین قابلیت اجرا بر روی ماشین مجازی را دارد، به این معنی که می‌توان کد نوشته شده در زبان کاتلین را با استفاده از «تبدیل‌گر سورس کد» (Transpilers) خیلی راحت به زبان برنامه نویسی دیگری تغییر داد. با این حال، ماشین مجازی از همه محیط‌ها، از جمله «سیستم‌های تعبیه شده» (Embedded Systems) و مرورگرها پشتیبانی نمی‌کند. به همین دلیل، برای اجرای اپلیکیشن در مرورگر، باید از زبان برنامه نویسی جاوا‌ اسکریپت استفاده کرد.

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

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

از زبان کاتلین تنها برای برنامه نویسی اندروید و ساختن اپلیکیشن‌های کاربردی استفاده نمی‌شود. این زبان برنامه نویسی قدرتمند، بر اساس داده‌های شرکت سازنده‌ی آن یعنی JetBrains، هم برای برنامه نویسی اندروید و هم توسعه سمت سرور استفاده می‌شود. در حال حاضر شرکت‌های زیادی از جمله Google ،Hexagon ،Gradle و سایر شرکت‌های مطرح این حوزه از چنین رویکردی استفاده می‌کنند.

آموزش کاتلین – پیاده سازی معماری MVP برای توسعه اپلیکیشن های اندروید با Kotlin
فیلم آموزش کاتلین – پیاده سازی معماری MVP برای توسعه اپلیکیشن های اندروید با Kotlin در تم آف

کلیک کنید

نقطه قوت زبان برنامه نویسی کاتلین در طراحی و پیاده‌سازی پروژه‌های پیچیده‌ای است که نیازمند استفاده از «کد‌های تکراری» (Boilerplate) و منطق قوی هستند. به نوعی زبان برنامه نویسی کاتلین بهترین انتخاب در این زمینه است. زبان برنامه نویسی کاتلین با حذف کد‌های تکراری به طور قابل توجهی حجم کد نوشته شده را در مقایسه با رقیب مستقیم خود یعنی زبان جاوا کاهش می‌دهد. تمام قابلیت‌های فوق‌العاده کاتلین در کنار یکدیگر، منجر به فرآیند توسعه کم هزینه‌ پروژه و پشتیبانی آسان‌تر آن می‌شود.

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

ویژگی های زبان برنامه نویسی کاتلین چیست؟

مطمئناً بعد از آشنایی مختصر با زبان برنامه نویسی کاتلین و دانستن این نکته که این زبان برنامه نویسی به دلیل قابلیت‌ها و ویژگی‌های منحصر بفرد خود تا کنون توانسته است چنین جایگاهی را در میان برنامه‌نویسان بدست آورد. اما قاعدتاً این سوال به ذهن خطور می‌کند که به راستی ویژگی‌های زبان کاتلین چیست که باعث این همه برتری در مدت زمان کوتاهی شده است.

آموزش کتابخانه ویو بایندینگ در کاتلین –  View Binding در Kotlin
فیلم آموزش کتابخانه ویو بایندینگ در کاتلین – View Binding در Kotlin در تم آف

کلیک کنید

برای پاسخ به این سوال باید گفت زبان کاتلین چندین ویژگی بسیار مهم و کلیدی دارد که در واقع امضای منحصر بفرد کاتلین در عرصه برنامه نویسی هستند. در ادامه برخی از مهم‌ترین ویژگی‌های زبان کاتلین فهرست شده است.

قابلیت Lazy-Loading در زبان کاتلین

ممکن است این واژه برای شما تا حدودی نا‌آشنا به نظر برسد، اما به زبان ساده ویژگی‌ «بارگذاری تنبل» (Lazy-Loading) باعث کاهش زمان راه‌اندازی برنامه می‌شود. هر توسعه‌دهنده‌ای که قصد دارد زمان راه‌اندازی برنامه خود را کاهش دهد، می‌تواند از ویژگی‌ «بارگذاری تنبل» (Lazy-Loading) موجود در زبان برنامه نویسی کاتلین استفاده کند. این ویژگی خاص از طریق بارگیری منابع مورد نیاز در حافطه اصلی، باعث کاهش زمان راه‌اندازی برنامه می‌شود.

قابلیت Collection Filter در زبان کاتلین

امروزه اکثر برنامه‌ها برای اجرای بخش‌های مختلف خود نیاز دارند تا با «رابط برنامه نویسی اپلیکیشن» (Application Programming Interface | API) در ارتباط باشند. در پیاده‌سازی ارتباط برنامه با API ممکن است برنامه‌نویس بارها و بارها با مجموعه‌های مختلف مواجه شود. زبان کاتلین دارای ویژگی فیلتر مجموعه (Collection Filter) است به این معنی که به برنامه‌نویس این اجازه را می‌دهد تا با تعیین الگویی مشخص، خروجی کار را برحسب نیازمندی برنامه دریافت کند.

قابلیت تعامل کاتلین با جاوا

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

قابلیت تعامل کاتلین با جاوا

کلاس های data در کاتلین

در زبان برنامه نویسی کاتلین، برخی از کلاس‌ها تنها عملکردهای استاندارد را حفظ و چند قابلیت کاربردی را اجرا می‌کنند. برای دسترسی به داده‌های کلاس به صورت دستی با ساختاری مشخص باید این کار را انجام داد. با این حال، برخی دیگر از کلاس‌ها در گام نخست داده‌های موجود را نگه می‌دارند. به این کلاس‌ها در زبان برنامه نویسی کاتلین، کلاس‌ Data گفته می‌شود و با کلمه‌ کلیدی Data در برنامه تعیین شده و قابل پیاده‌سازی هستند. در ادامه نیز برای روشن شدن پاسخ این سوال که منظور از پیاده‎‌سازی کلاس‌های data در زبان کاتلین چیست مثالی ساده آورده شده است.

data class User(val name: String, val age: Int)

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

class Student(var id: Int, var name: String, var family: String)

fun main(args: Array) {

    val Student1 = Student(1,"Hossein","Javid")
    val Student2 = Student(1,"Hossein","Javid")

    if(Student1 == Student2 ){
        println("They are the same")
    }else{
        println("they are not the same")
    }
}

در مثال بالا، دو شی از کلاس Student

 با نام‌های Student1

 و Student2

 ساخته شده است و در ادامه به کمک ساختار شرطی مورد مقایسه قرار می‌گیرند. خروجی کد بالا بر اساس توضیحات داده شده به صورت زیر است.

they are not the same

یعنی کامپایلر زبان کاتلین این دو شی را به صورت مجزا در نظر گرفته است. زیرا در این حالت از تعریف کلاس، تنها آدرس خانه مورد بررسی قرار می‌گیرد. تمام این موارد گفته شد تا به این نقطه برسیم که مفهوم «کلاس Data» در زبان کاتلین برنامه نویسی چیست. در ادامه همین کلاس با استفاده از کلمه کلیدی data تعریف شده است و خروجی حاصل نیز مورد بررسی قرار می‌گیرد.

data class Student(var id: Int, var name: String, var family: String)

fun main(args: Array) {

    val Student1 = Student(1,"Hossein","Javid")
    val Student2 = Student(1,"Hossein","Javid")

    if(Student1 == Student2 ){
        println("They are the same")
    }else{
        println("they are not the same")
    }
}

با توجه به نمونه کد بالا، تنها تفاوت آن با کد قبلی استفاده از کلمه کلیدی data

 در خط اول تعریف یا اعلان کلاس است. با این حال خروجی حاصل از این کد به صورت زیر است.

They are the same

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

 قبل از نام کلاس، دیگر آدرس دو شی مورد بررسی قرار نمی‌گیرد و معیار مقایسه داده‌های موجود در دو شی است.

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

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

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

یکی از بهترین راه‌ها برای تثبیت مفاهیم و تکمیل شدن چرخه یادگیری در زمینه‌ی برنامه‌نویسی، انجام پروژه‌های عملی در این زمینه است. در مجموعه آموزش برنامه‌نویسی اندروید تم آف بسیاری از دوره‌های آموزشی پروژه‌محور نیز ارائه شده‌اند. در تصویر فوق تنها ۶ دوره آموزشی شاخص در این مجموعه به عنوان نمونه معرفی شده‌اند.

  • برای شروع یادگیری برنامه‌نویسی اندروید با زبان کاتلین و دسترسی به همه دوره‌های آموزش برنامه‌نویسی اندروید + اینجا کلیک کنید.

دلیل اقبال برنامه نویسان به زبان کاتلین چیست؟

اگر قرار باشد به این سوال پاسخ داده شود که دلیل اقبال برنامه‌نویسان به زبان کاتلین چیست باید ويژگی‌های زبان کاتلین را بیشتر شناخت. ترکیب ویژگی‌های جذاب زبان کاتلین با قابلیت «کد‌های منظم و واضح» (Clean Code) در آن باعث توجه برنامه‌نویسان در صنایع مختلف به کاتلین شده است. اما نقطه عطف زبان کاتلین به سال 2019 میلادی (1398 شمسی) باز می‌گردد. در این سال گوگل زبان کاتلین را به عنوان زبان برنامه نویسی ترجیحی برای برنامه نویسی اندروید معرفی کرد که باعث تغییر در وضعیت این زبان برنامه نویسی شد. همچنین، همان‌طور که پیش‌تر نیز اشاره شد، با توجه‌ به قابلیت‌های گسترده زبان کاتلین، شرکت‌های زیادی به دنبال جذب برنامه‌نویسان مسلط به کاتلین هستند و همین مورد نیز عامل محرک دیگری برای ترغیب افراد به یادگیری زبان کاتلین است.

دلیل اقبال برنامه‌نویسان به زبان کاتلین

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

همان‌طور که قبل‌تر نیز اشاره شد، بعد از معرفی زبان برنامه نویسی کاتلین توسط گوگل به عنوان زبان رسمی برنامه نویسی اندروید، سرعت رشد و محبوبیت این زبان در بین برنامه‌نویسان نیز بیشتر شد. در واقع کاتلین جایگزین زبان باسابقه و معروفی همچون جاوا شد و این موضوع مهر تاییدی بر قابلیت‌ها و قدرت این زبان برنامه نویسی نوظهور است.

آموزش ارتباط با دیتابیس سمت سرور در اندروید
فیلم آموزش ارتباط با دیتابیس سمت سرور در اندروید در تم آف

کلیک کنید

با کمک زبان کاتلین می‌توان اپلیکیشن‌های کاربردی برای تلفن همراه و برنامه‌های کاربردی تحت‌وب (وب اپلیکیشن) را پیاده‌سازی کرد. یادگیری زبان برنامه نویسی کاتلین می‌تواند به آگاهی بیشتر در مورد ساختار و طراحی سایر زبان‌های برنامه نویسی منجر شود و همچنین، برخی از شکاف‌های موجود در زبان جاوا را به برنامه‌‌نویس نشان دهد. حتی اگر یادگیری این زبان به قصد حرفه‌ای شدن در آن صورت نگیرد، یادگیری زبان کاتلین می‌تواند به کسب مهارت در زبان‌هایی همچون Go ،Rust ،Scala و Swift منجر شود، زیرا این زبان‌ها در برخی مفاهیم اساسی با زبان کاتلین مشترک هستند.

چه شرکت هایی از زبان کاتلین استفاده می کنند؟

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

شرکت‌های مطرحی در دنیا، کاتلین را به عنوان زبانی با پتانسیل بالا می‌شناسند. در این بین نام‌های شناخته شده‌ای همچون گوگل، نتفلیکس، اوبر، Atlassian ،Pinterest ،Kickstarter و بسیاری از شرکت‌های دیگر نیز به چشم می‌خورد. شکی نیست که در سال‌های آینده شرکت‌های بیشتری از زبان برنامه نویسی کاتلین برای پروژه‌های تجاری خود استفاده خواهند کرد.

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

آیا کاتلین جایگزین جاوا است؟

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

آموزش پایگاه داده اس کیو ال لایت SQLite در اندروید با کاتلین
فیلم آموزش پایگاه داده اس کیو ال لایت SQLite در اندروید با کاتلین در تم آف

کلیک کنید

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

نکته‌ای که به آن باید اذعان کرد، این است که زبان کاتلین از جاوا ایمن‌تر است. بنابراین، می‌توان در هنگام توسعه برنامه‌ها انعطاف بیشتری به خرج داد و نیازی به نگرانی در مورد خطرات احتمالی نیست. زبان کاتلین یکی از خطا‌های پیش‌فرض استاندارد موجود در جاوا را تحت عنوان «استثناهای اشاره‌گر تهی» (Null Pointer Exceptions) را برطرف کرده است. علاوه بر این، کاتلین از ویژگی‌های تعیین‌شده پشتیبانی می‌کند و وابستگی به زبان جاوا را نیز کاهش داده است. در ادامه نوشته این دو زبان به صورت کاملاً تخصصی با یکدیگر مقایسه خواهند شد و اگر علاقه‌مند هستید تا تفاوت‌های این دو زبان را بشناسید، پس ادامه نوشته را از دست ندهید.

تفاوت جاوا و کاتلین چیست؟

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

تفاوت جاوا و زبان کاتلین چیست؟

کد‌نویسی کمتر در کاتلین

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

برنامه‌نویسان در زبان برنامه نویسی کاتلین هیچ مشکلی در بررسی و تغییر کد نوشته شده توسط سایر برنامه‌نویسان ندارند. در نتیجه، به راحتی برنامه‌نویسان جدید می‌توانند کد‌های نوشته شده قبلی را درک کنند و تغییرات لازم را در کد انجام دهند. در طول اجرای پروژه‌های پیچیده و بزرگ که تیم برنامه نویسی رشد می‌کند، این مورد بسیار اهمیت دارد. ویژگی‌هایی همچون اینترفیس در کاتلین، Smart Cast و کلاس‌های Data در زبان کاتلین به کوتاه‌تر شدن کد‌ها کمک می‌کنند.

مطلب پیشنهادی:

فلاتر چیست؟ | به زبان ساده + نمونه پروژه Flutter

شروع مطالعه

 

وجود قابلیت همکاری در کاتلین

اگر سوال شود که جذاب‌ترین ویژگی زبان کاتلین چیست احتمالاً قابلیت همکاری پاسخ درستی برای این سوال خواهد بود. از همان ابتدای روند توسعه و شکل‌گیری زبان کاتلین، سازندگان آن هدف خود را در دسترس قرار دادن هر کتابخانه‌ای برای برنامه‌نویسان کاتلین تعیین کردند. این مورد اجازه می‌دهد تا به طور همزمان برنامه‌نویس از کد‌های کاتلین در کنار کد‌های جاوا بدون مشکل استفاده کند. همین مورد، فرآیند تغییر از جاوا به کاتلین را در طول فرایند توسعه بسیار آسان‌تر می‌کند.

آموزش کاتلین – پیاده سازی معماری MVP برای توسعه اپلیکیشن های اندروید با Kotlin
فیلم آموزش کاتلین – پیاده سازی معماری MVP برای توسعه اپلیکیشن های اندروید با Kotlin در تم آف

کلیک کنید

امکان مدیریت مقادیر Null در کاتلین

هنگامی که در مورد برنامه نویسی اندروید صحبت می‌شود، بحث مدیریت مقادیر Null در کاتلین به صورت پر رنگ‌تری دیده می‌شود. اما منظور از مدیریت مقادیر Null در زبان کاتلین چیست. خطایی تحت عنوان NullPointerException

 یکی از متداول‌ترین اشتباهات در برنامه نویسی اندروید است.

این مورد، به خصوص در زبان جاوا بسیار رخ می‌داد. زیرا زبان جاوا به توسعه‌دهندگان اجازه می‌داد تا مقداری Null را به شی اختصاص دهند. در بیشتر موارد، به دلیل چنین مقادیری، برنامه اندروید دچار خطا می‌شود. از طرف دیگر، زبان کاتلین دارای قابلیت مدیریت مقادیر Null است، به این معنی که به هیچ متغیر یا شی نمی‌توان مقدار Null نسبت داد. در نتیجه، میزان کد نوشته شده توسط توسعه‌دهندگان کمتر خواهد بود، زیرا نیازی به ارائه راه‌حلی برای دور زدن این خطا ندارند.

مدیریت مقادیر Null

تفاوت جاوا و کاتلین به لحاظ کامپایل و عملکرد

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

دو زبان برنامه نویسی کاتلین و جاوا در زمینه کامپایل تفاوت‌هایی با یکدیگر دارند. جاوا در مقایسه با کاتلین 10 تا 15 درصد سریع‌تر در «ساخت‌های تمیز» (Clean Build) کامپایل می‌شود. با این حال، در زمان کامپایل‌های افزایشی که فقط کد به همراه تغییرات کامپایل می‌شود و نیازی به ساخت کل برنامه نیست، کاتلین کمی بهتر از جاوا عمل می‌کند. به طور کلی، کاتلین برای مدیریت برنامه نویسی عملکردی مجهزتر است.

مطلب پیشنهادی:

کاتلین یا فلاتر — کدامیک بهتر است؟

شروع مطالعه

 

تفاوت جاوا و کاتلین در خصوص استثنا‌های بررسی شده

مورد دیگری که در آن دو زبان برنامه نویسی کاتلین و جاوا با هم تفاوت دارند، مبحث استثنا‌های بررسی شده است. در جاوا، چنین عبارات‌هایی در طول فرآیند کامپایل بررسی می‌شوند. اگر متدی دارای چنین عباراتی باشد، متد یا باید آن را مدیریت کند یا توسعه‌دهندگان باید آن‌ها را با کلمه کلیدی throws

 در برنامه مشخص کنند. توسعه‌دهندگان باید همه استثناهای موجود در برنامه را شناسایی کنند تا بتوانند آن‌ها را مدیریت کنند، در غیر این صورت باید با کلمه کلیدی throws به برنامه اعلام کنند که چنین استثناهایی می‌توانند ایجاد شوند، که همین مورد زمان زیادی می‌برد. همچنین، در برخی موارد مانع از اجرای کد می‌شود. زبان کاتلین استثناهای بررسی شده‌ای ندارد که دست آخر حاصل این کار این است که کد‌های کمتری تولید می‌شود.

قابلیت واگذاری وظیفه در کاتلین

زبان جاوا فاقد ویژگی واگذاری وظیفه است. این ویژگی باعث برتری کاتلین از نظر استفاده از ارث‌بری چندگانه می‌شود. در پاسخ به این سوال که مفهوم واگذاری وظیفه در زبان برنامه نویسی کاتلین چیست به این صورت باید عنوان کرد که در واقع کاتلین به شی دریافت کننده اجازه می‌دهد تا عملیات را به شی دیگری واگذار کند که نماینده دوم یا «شی کمک کننده» (Helper Object) نامیده می‌شود. این شی کمکی حاوی محتوای اصلی است، به طوری که توسعه‌دهندگان نیازی به بازنویسی مجدد آن شی ندارند.

با کمک «وراثت‌های چندگانه» (Multiple Inheritances) می‌توان از تکرار کد‌ها در برنامه جلوگیری کرد. اگر برای پیاده‌سازی برخی از ویژگی‌ها در برنامه نیاز به استفاده مجدد از کد‌های نوشته شده وجود داشته باشد، می‌توان کد را در یک ویژگی تفویض شده استخراج کرد.

مطلب پیشنهادی:

وراثت چندگانه در پایتون — به زبان ساده

شروع مطالعه

 

جامعه برنامه نویسی وسیع تر جاوا

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

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

مزایا و معایب زبان برنامه نویسی کاتلین

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

آموزش پروژه محور اندروید – ساخت اپلیکیشن پرداخت قبوض
فیلم آموزش پروژه محور اندروید – ساخت اپلیکیشن پرداخت قبوض

کلیک کنید

نقاط مثبت زبان کاتلین چیست؟

مزایای مهم کاتلین در ادامه فهرست شده‌اند.

  • قابلیت تعامل کاتلین با جاوا
  • امکان توسعه‌ و گسترش آسان
  • کد‌های کمتر و خوانایی بالاتر
  • خطا‌ها و باگ‌های کمتر
  • قابلیت توسعه چند پلتفرمی
  • یادگیری آسان
  • امنیت بالا

نقاط منفی زبان کاتلین چیست؟

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

  • کمبود نیروی متخصص کاتلین
  • جامعه برنامه‌نویسی کوچک
  • زمان کامپایل طولانی
  • منابع محدود یادگیری

آینده زبان کاتلین

هر زمان صحبت از آینده به میان مي‌آید، به دلیل وجود پارامتر‌های زیاد و غیر‌قابل پیش‌بینی، امکان این که بتوان در خصوص موضوعی به صورت قطعی نظری داد، بسیار سخت است. اما به هرحال برای انتخاب مسیر شغلی و تحصیلی، نیاز است بر اساس داده‌ها و اطلاعاتی که امروز در اختیار است، تصمیم درستی گرفته شود. در خصوص آینده‌ زبان برنامه نویسی کاتلین نیز با توجه به مواردی که عنوان شد، همچون ویژگی‌ها و ساختار قدرتمند کاتلین و همچنین حمایت شرکت بزرگی چون گوگل از آن، می‌توان به آینده این زبان برنامه نویسی امیدوار بود. احتمال اینکه در آینده زبان کاتلین به همین صورت در مسیر پیشرفت و توسعه باقی بماند، بسیار زیاد است.

آموزش برنامه نویسی اندروید Android – مقدماتی
فیلم آموزش برنامه نویسی اندروید Android – مقدماتی در تم آف

کلیک کنید

بازار کار کاتلین به چه صورت است؟

برای بررسی این مورد که بازار کار زبان برنامه نویسی کاتلین چگونه است و آیا می‌توان با گذاشتن وقت برای یادگیری این زبان به آینده کاری آن امید داشت، باید چند مورد را در کنار هم بررسی کرد تا به پاسخ روشنی رسید.

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

مورد بعدی در زمینه‌ی بازار کار کاتلین که باید حتماً مدنظر داشت، کاربرد اصلی کاتلین، یعنی برنامه نویسی اندروید به حساب می‌آید و بر کسی این روز‌ها پوشیده نیست که سیستم‌عامل اندروید فراگیرترین سیستم‌عامل موبایل در جهان به حساب می‌آید. در نتیجه، با یادگیری زبان کاتلین می‌توان به برنامه‌نویس اندروید تبدیل شد و از فرصت‌های موجود در این شاخه از برنامه نویسی استفاده کرد.

مطلب پیشنهادی:

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

شروع مطالعه

 

ساختار زبان برنامه نویسی کاتلین

بعد از اینکه مفاهیم و ویژگی‌های اصلی زبان کاتلین شرح داده شدند، در ادامه‌ نوشته، ساختار زبان برنامه نویسی کاتلین به زبان ساده مورد بررسی قرار گرفته است. برای شروع کار با کاتلین می‌توان پروژه اندرویدی جدیدی را در اندروید استودیو (Android Studio) ساخت و سپس در بخش انتخاب زبان برنامه نویسی پروژه، زبان کاتلین را به عنوان زبان مورد نظر برای توسعه انتخاب کرد.

آموزش نصب اندروید استودیو (Android Studio) (رایگان)
فیلم آموزش نصب اندروید استودیو (Android Studio) (رایگان) در تم آف

کلیک کنید

همچنین، در ادامه‌ مطلب به این سوال پاسخ داده خواهد شد که مهم‌ترین ساختار‌های موجود در زبان برنامه نویسی کاتلین چیست و به چه صورتی می‌توان این ساختار‌ها را پیاده‌سازی کرد. همچنین، برای اینکه دید خوبی از زبان کاتلین ایجاد شود، سعی شده است تا سینتکس (قواعد نحوی) زبان برنامه نویسی کاتلین به زبان ساده به همراه نمونه کد‌های آموزشی، از تعریف متغیر گرفته تا پیاده‌سازی توابع مختلف مورد بررسی قرار گیرد.

ساختار زبان برنامه نویسی کاتلین

تعریف متغیر ها در زبان کاتلین

برای تعریف متغیرها در زبان کاتلین باید از کلمه کلیدی var

 استفاده شود. در نمونه کد زیر می‌توان نحوه تعریف متغیر در زبان برنامه نویسی کاتلین را مشاهده کرد.

var result = 0
var str:String = "Hello, World!"

منظور از استنتاج نوع در زبان برنامه نویسی کاتلین چیست؟

یکی از نکات مثبت کاتلین در مقایسه با جاوا، قابلیت «استنتاج نوع» (Type Inference) در آن است، اما سوالی که پیش می‌آید این است که منظور از استنتاج نوع در زبان کاتلین چیست؛ به زبان ساده یعنی کاتلین می‌تواند به صورت خودکار نوع داده تعریف شده را حدس بزند.

آموزش برنامه نویسی اندروید Android – تکمیلی
فیلم آموزش برنامه نویسی اندروید Android – تکمیلی در تم آف

کلیک کنید

در نمونه کد بالا، متغیر result

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

 در نظر می‌گیرد. همچنین می‌توان در زمان تعریف متغیر نوع آن را برای کامپایلر کاتلین مشخص کرد. به عنوان مثال در خط دوم از کد بالا، متغیر str

 در زمان تعریف از نوع رشته یا String

 تعیین شده است.

تفاوت val و var در زبان کاتلین چیست؟

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

 می‌توان متغیری تعریف کرد که مقدار آن ثابت یا غیرقابل تغییر باشد.

// 1
var a: String = "fardars" 
println(a)
// 2
val b: Int = 6
// 3
val c = 7 

در نمونه کد بالا، به ترتیب 3 متغیر با نام‌های a

 ، b

 ، c

 تعریف شده‌اند. در ادامه هر کدام به صورت جداگانه بررسی خواهند شد.

  • متغیر a

     : این متغیر با کلمه کلیدی var

     تعریف شده است و مقدار آن قابل تغییر است و همچنین نوع آن نیز به صراحت در ابتدا از نوع رشته یا String

     تعیین شده است.

  • متغیر b

     : این متغیر با کلمه کلیدی val

     تعریف شده است و مقدار آن ثابت و غیر قابل تغییر است یعنی در طول برنامه امکان تغییر مقدار آن وجود نخواهد داشت. همچنین نوع آن در ابتدا از نوع عدد صحیح یا int

     در نظر گرفته شده است.

  • متغیر c

     : این متغیر نیز با کلمه کلیدی val

     تعریف شده است یعنی دارای مقدار ثابتی در طول برنامه خواهد بود. همچنین، به دلیل این‍که در ابتدا نوع متغیر مشخص نشده است در نتیجه، نوع آن به صورت خودکار از نوع عدد صحیح یا int

      تعیین خواهد شد.

تفاوت val و var در زبان کاتلین

منظور از خطای عدم مقدار‌دهی اولیه در زبان کاتلین چیست؟

در زبان برنامه نویسی کاتلین می‌توان متغیر را در هر جایی از برنامه مقدار‌دهی کرد، اما نکته‌ای که وجود دارد این است که متغیر باید حتماً قبل از اولین استفاده در برنامه مقدار‌دهی شود.

var str: String
println(str)

اجرای نمونه کد بالا با خطای Variable ‘str’ must be initialized

 روبرو خواهد شد، زیرا در این کد، متغیر str

 قبل از اینکه مقدار‌دهی اولیه شود، در برنامه استفاده شده است. در نتیجه، همواره باید مورد مهمی چون مقدار‌دهی اولیه متغیر‌ها را در نظر داشت.

خطا در زبان برنامه نویسی کاتلین

نوع‌ های داده در زبان برنامه نویسی کاتلین

اگر سوال شود که تفاوت‌ دیگر جاوا و زبان برنامه نویسی کاتلین چیست باید به نوع‌های داده اشاره کرد. در زبان برنامه نویسی جاوا متغیر‌ها به دو دسته‌ی کلی تقسیم می‌شوند.

  • متغیر‌های Primitive: این متغیر‌ها شامل نوع‌های داده char ،byte ،boolean ،long ،int و سایر موارد می‌شوند.
  • متغیرهای Reference: این متغیرها شامل نوع‌های داده String یا رشته، آرایه‌ها و سایر موارد هستند.

اما در زبان برنامه نویسی کاتلین تمامی متغیر‌های موجود فارغ از نوعی که دارند، به عنوان شی یا Object در نظر گرفته می‌شوند.

نوع داده‌ عددی در کاتلین

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

نوع کاربرد محدوده عددی اندازه
Long اعداد صحیح از 9223372036854775808- تا 9223372036854775808 64 بیت
Int اعداد صحیح از 2147483647- تا 2147483648 32 بیت
Short اعداد صحیح از 32767- تا 32768 16 بیت
Byte اعداد صحیح از 127- تا 128 8 بیت
Double اعداد اعشاری از 1.7e-038 تا 1.7e+308 64 بیت
Float اعداد اعشاری از 3.4e-038 تا 3.4e+038 32 بیت

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

val num1 = 5     // Int
val num2 = 1.6   // Double
val num3 = 3.4F  // Float

در مثال بالا، نوع هیچکدام از متغیر‌ها مشخص نشده است، اما کاتلین به صورت خودکار نوع int 

 را به متغیر num1

 ، نوع Double

 را به متغیر num2

  و نوع Float

 را به متغیر num3

 اختصاص می‌دهد.

آموزش برنامه نویسی اندروید Android – پیشرفته
فیلم آموزش برنامه نویسی اندروید Android – پیشرفته در تم آف

کلیک کنید

نوع داده‌ کاراکتر در زبان کاتلین

از این نوع داده‌ای در زبان کاتلین برای نگه‌داری کاراکتر استفاده می‌شود. مقدار‌دهی این نوع با علامت (‘ ‘) انجام می‌پذیرد.

var c1 = 'C'
var c2 :Char = 'D'

زبان برنامه نویسی کاتلین از کاراکتر‌های یونیکد (Unicode) نیز پشتیبانی می‌کند.

val hand = 'u270B'
// hand icon
val star = 'u2b50'
// star icon

نوع داده‌ رشته ای در کاتلین

در زبان برنامه نویسی کاتلین رشته‌ها با کلمه کلیدی String مشخص می‌شوند. رشته‌ها در واقع نوعی آرایه هستند که فیلد‌های تشکیل دهنده‌ آن‌ها را کاراکترها تشکیل می‌دهند. در زمان مقدار‌دهی رشته‌ها، این کاراکترها درون جفت گیومه (” “) قرار می‌گیرند.

var str1 = "A string"
var str2:String = "A string"

همچنین برای الحاق رشته‌ها در زبان کاتلین می‌توان از عملگر به اضافه (+) استفاده کرد. در مثال زیر، رشته‌ها به کمک این عملگر به یکدیگر متصل شده‌اند.

var str3 = str1 + str2
var str4 = "A" + " " + "String"

همچنین به کمک عملگر «$» می‌توان مقدار متغیر‌هایی که از نوع رشته‌ هستند را اصطلاحاً درون‌یابی کرد و به نوعی آن‌ها را به هم الحاق کرد.

var firstName = "Wei-Meng"
var lastName:String = "Lee"

var fullName = "$firstName $lastName"
// "Wei-Meng Lee"

در نمونه کد بالا، متغیر fullName

 از الحاق دو رشته‌ firstName

 و lastName

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

آموزش پروژه محور اندروید – ساخت اپلیکیشن اشتراک ویدئو با API اختصاصی
فیلم آموزش پروژه محور اندروید – ساخت اپلیکیشن اشتراک ویدئو با API اختصاصی در تم آف

کلیک کنید

نوع داده‌ بولی در کاتلین

نوع داده‌ منطقی (Boolean) همانند سایر زبان‌های برنامه نویسی در زبان کاتلین نیز وجود دارد. این نوع داده‌ای توانایی نگه‌داری دو وضعیت یا مقدار، «درست» (True) یا «غلط» (False) را دارد. در ادامه نمونه کدی برای کاربرد نوع داده‌ی منطقی آورده شده است.

fun main(arg: Array){
    var testA: Boolean;
    val testB: Boolean;
    testA = true;
    testB = false;
    println("testA status: $testA and testB status: $testB");
}

در نمونه کد بالا، متغیر‌های testA

 و testB

 از نوع داده‌ Boolean تعریف شده‌اند. از این نوع داده‌ای در ترکیب با ساختار شرطی در برنامه‌ها زیاد استفاده می‌شود.

منظور از مجموعه در زبان برنامه نویسی کاتلین چیست؟

زبان برنامه نویسی کاتلین از چند ساختار داده‌‌ای مختلف برای نگه‌داری مجموعه‌‌ای از داده‌ها پشتیبانی می‌کند. این ساختار‌ها عبارتنداز:

  • آرایه‌ها
  • لیست‌ها
  • ساختار Map

آرایه‌ در زبان کاتلین

آرایه‌ها یکی از ساختار‌های مهم داده‌ای هستند که برای نمایش مجموعه‌ای از داده‌ها به کار می‌روند که همگی نوع داده یکسانی دارند. به عنوان مثال، نمونه کد زیر آرایه‌ای به نام name

 را نشان می‌دهد که سایز آرایه برابر 5 است و با 5 رشته خالی نیز پر شده است.

val names = Array(5) {""}
// 5 elements all containing ""
// array size is fixed at 5 elements

همچنین می‌توان آرایه را تعریف و با استفاده از دستور arrayOf()

 عناصر مربوط به آن را مشخص کرد. در نمونه کد زیر آرایه‌ OperatingSystem

 با استفاده از دستور فوق مقدار‌دهی شده است.

val OperatingSystem: Array =  arrayOf("iOS", "Android", "Windows Phone")
// array size is fixed at 3 elements

برای دسترسی پیدا کردن به عناصر آرایه می‌توان با استفاده از اندیس (Index) آرایه به هر کدام از عناصر دسترسی پیدا کرد.

val os = OSes[0] // iOS

همچنین باید گفت که آرایه‌ها قابل تغییر هستند و به کمک اندیس هر عنصر می‌توان مقدار آن را نیز تغییر داد.

// Array is mutable
OSes[2] = "Fuchsia"

لیست‌ در کاتلین چیست؟

لیست‌ها در زبان کاتلین نیز همانند آرایه‌ها برای نگه‌داری مجموعه‌ای از عناصر داده‌ای به کار می‌روند. در نمونه کد زیر لیستی به نام items

 تعریف شده است که دارای 5 مقدار از نوع عدد صحیح است.

var items: List = listOf(1,2,3,4,5)

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

var item1 = items[0] // 1
var item2 = items[1] // 2
var item3 = items[2] // 3

برای پاسخ به این سوال که تفاوت لیست و آرایه در زبان کاتلین چیست باید گفت که لیست‌ها برخلاف آرایه‌ها قابل تغییر نیستند. به عنوان مثال، اجرای دستور زیر در زبان برنامه نویسی کاتلین با خطا همراه خواهد بود.

// error
items[3] = 9 // list is immutable

اما اشتراک میان لیست و آرایه در زبان کاتلین چیست؟ برای این مورد باید اشاره کرد که اندازه لیست و آرایه پس از مقدار‌دهی اولیه ثابت و غیرقابل تغییر می‌شود. اگر نیاز است که اندازه مجموعه در زمان اجرا تغییر یابد، باید از ساختار دیگری به نام MutableList

 استفاده کرد.

var wishes: MutableList = mutableListOf()

در نمونه کد بالا، متغیر wishes

 از نوع MutableList

 تعریف شده است. در نتیجه، همانند کد زیر می‌توان در زمان اجرا عناصری را به آن اضافه یا کم کرد.

wishes.add("iPhone")
wishes.add("iPad")
wishes.add("Samsung Fold")
wishes.removeAt(1)
wishes.remove("Samsung Fold")

ساختار Map در زبان کاتلین

ساختار داده‌ای Map یکی دیگر از ساختار‌های پرکاربرد برای نگه‌داری مجموعه‌ای از داده‌ها در زبان برنامه نویسی کاتلین است. در این ساختار، داده‌ها و عناصر به صورت زوج‌های مرتب «کلید» (Key) و «مقدار» (Value) معرفی می‌شوند. برای تعریف ساختار Map در زبان کاتلین از دستور hashMapOf()

 استفاده می‌شود. در مثال زیر متغیر platforms1

 از نوع Map تعریف شده است.

val platforms1 = hashMapOf(    
    "Apple" to "iOS",    
    "Google" to "Android",    
    "Microsoft" to "Windows Phone"
)

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

val platforms1:HashMap

به شکل زیر نیز می‌توان در ساختار Map، مقدار کلید مشخصی را به دست آورد.

val p1 = platforms1["Apple"]   //---"iOS"---
val p2 = platforms1["Samsung"] //---null---

در صورتی که اطلاعات دقیق‌تر و کامل‌تری همچون اندازه، کلید‌ها و مقادیر از ساختار داده‌ای Map نیاز باشد، می‌توان مانند مثال زیر عمل کرد.

val count = platforms1.size.     // 3

val companies = platforms1.keys
// MutableSet of "Apple", "Google", and "Microsoft"
val oses = platforms1.values
// MutableCollection of "iOS", "Android", and "Windows Phone"

نکته‌ای که باید در نظر داشت این است که از آنجایی که تمامی کلید‌های موجود در ساختار داده‌ای Map باید منحصر بفرد و غیر تکراری باشند. در مثال بالا خروجی کد platforms1.keys

 از نوع MutableSet

 خواهد بود. همچنین از آنجایی که مقادیر موجود در ساختار Map نیازی نیست که حتماً منحصر بفرد باشند در نتیجه، خروجی کد platforms1.values

 از نوع MutableCollection

 خواهد بود. برای اضافه کردن زوج مرتب جدید کلید و مقدار به ساختار Map در زبان کاتلین به صورت زیر می‌توان عمل کرد.

platforms1["Samsung"] = "Bada"

در نمونه کد بالا، کلید جدیدی با نام Samsung

 و حاوی مقدار “Bada”

 تعریف شده است.

آموزش پروژه محور اندروید – ساخت اپلیکیشن نقاشی ساده
فیلم آموزش پروژه محور اندروید – ساخت اپلیکیشن نقاشی ساده در تم آف

کلیک کنید

تابع در کاتلین

توابع در هر زبان برنامه نویسی به عنوان یکی از بخش‌های مهم و اساسی آن زبان شناخته می‌شوند. زبان کاتلین نیز از این قاعده مستثنا نیست؛ کاتلین از توابع با ويژگی‌های زیر پشتیبانی می‌کند.

  • توابع با مقادیر پیش‌فرض
  • توابع با آرگومان‌های نامحدود
  • توابع با آرگومان‌های نام‌گذاری شده
مطلب پیشنهادی:

آرگومان در برنامه نویسی چیست ؟ — به زبان ساده

شروع مطالعه

 

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

برای تعریف تابع در زبان کاتلین باید به این صورت عمل کرد؛ در ابتدا کلمه کلیدی fun

 قرار می‌گیرد و بعد از آن به ترتیب نام تابع، آرگومان‌ها ،،البته در صورت وجود،، و در انتها نیز نوع مقدار بازگشتی تابع باید قرار گیرند. نمونه کد زیر، تابعی با نام addNums

 را به همراه 3 آرگومان ورودی و همچنین مقدار بازگشتی از نوع «عدد صحیح» (Int) را نشان می‌دهد.

fun addNums(num1:Int , num2:Int , num3:Int):Int {    
    return num1+num2+num3;
            }

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

فراخوانی تابع در زبان برنامه نویسی کاتلین بسیار ساده است. برای فراخوانی و استفاده از تابع در هر قسمت از برنامه کافی است که ابتدا آرگومان‌های مورد نیاز به تابع ارسال شوند و در گام آخر نیز مقدار بازگشتی تابع به متغیر مورد نظر ارجاع داده شود. در نمونه کد زیر، تابع addNums(5,6,7)

 با آرگومان‌های ارسالی (5,6,7)

 به آن فراخوانی شده است و مقدار بازگشتی تابع نیز در متغیر sum

 ذخیره می‌شود.

val sum = addNums(5,6,7)

منظور از تابع بدون آرگومان و مقدار بازگشتی در زبان برنامه نویسی کاتلین چیست؟

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

fun doSomething() {    
    // statement(s)
}

منظور از توابع با مقادیر پیش فرض در زبان کاتلین چیست؟

در زبان برنامه نویسی کاتلین می‌توان در زمان تعریف تابع برخی از آرگومان‌های ورودی را به صورت پیش‌فرض تعریف کرد. منظور از آرگومان پیش‌فرض به بیان ساده این است که ارسال این آرگومان‌ها به تابع اختیاری است و می‌توان در زمان فراخوانی تابع آن‌ها را مقدار‌دهی نکرد. برای درک بهتر این موضوع مثال زیر را در نظر بگیرید:

fun join(firstName:String,         
         lastName:String,         
         joiner:String=" "):String {    
    return "$firstName$joiner$lastName"
}

در این مثال، تابع join

 با 3 آرگومان ورودی مشخص شده است که از این تعداد آرگومان joiner

 به صورت پیش‌فرض یا اختیاری در نظر گرفته می‌شود و می‌توان در زمان فراخوانی تابع آن را مقدار‌دهی نکرد. این بدین معناست که می‌توان این تابع را با 2 یا 3 آرگومان فراخوانی کرد.

// with three arguments
var fullName =    
    join("Wei-Meng", "Lee", ",")
// Wei-Meng,Lee

// with two arguments      
fullName = join("Wei-Meng", "Lee")
// Wei-Meng Lee

همان‌طور که در نمونه کد بالا مشاهده می‌شود، تابع join

 قابلیت پیاده‌سازی با 2 و 3 پارامتر ورودی را دارد.

آموزش پروژه محور اندروید استودیو – ساخت بازی Snake
فیلم آموزش پروژه محور اندروید استودیو – ساخت بازی Snake در تم آف

کلیک کنید

منظور از توابع با آرگومان‌های نامحدود در زبان کاتلین چیست؟

یکی از قابلیت‎‌های جذاب زبان کاتلین در زمینه تعریف توابع، امکان تعریف تابع با تعداد نامحدودی از آرگومان‌های ورودی است. برای انجام این کار باید از کلمه کلیدی vararg

 قبل از نام آرگومان استفاده کرد. در نمونه کد زیر تابع average

 تعداد نامحدودی از آرگومان‌های ورودی را از طریق آرگومان nums

 دریافت می‌کند.

fun average(vararg nums:Int):Float {    
    var sum: Float = 0F    
    for (num in nums) {        
        sum += num.toFloat()    
    }    
    return sum/nums.size
}

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

var avg = average(1,2,3,4,5,6) // 3.5
avg = average(1,2,3) // 2.0
avg = average(1,2,3,4,5) // 3.0

منظور از توابع با آرگومان‌های نام‌گذاری شده در زبان برنامه نویسی کاتلین چیست؟

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

val sum = addNums(num1 = 5, num2 = 6, num3 = 7)

در فراخوانی تابع به این سبک می‌توان موقعیت آرگومان‌های ارسالی را نیز تغییر داد و مشکلی برای برنامه به وجود نخواهد آمد.

val sum = addNums(num2 = 6, num1 = 5, num3 = 7)

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

val sum = addNums(5, num2 = 6, num3 = 7)

ساختار های کنترلی در زبان برنامه نویسی کاتلین

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

آموزش مبانی برنامه نویسی – الگوریتم و فلوچارت با رویکرد حل مساله
فیلم آموزش مبانی برنامه نویسی – الگوریتم و فلوچارت با رویکرد حل مساله در تم آف

کلیک کنید

در ادامه‌ مطلب، هر کدام از این ساختار‌ها به صورت کامل بررسی خواهد شد.

ساختار شرطی if در کاتلین

منظور از ساختار شرطی این است که در صورت برقراری شرط ذکر شده درون پرانتز، دستورات تعیین شده در برنامه اجرا خواهند شد. همچنین، در صورت نیاز می‌توان دستوراتی برای حالت عدم برقراری شرط نیز پیاده‌سازی کرد. برای پیاده‌سازی ساختار شرطی در زبان کاتلین همانند بسیاری از زبان‌های برنامه نویسی از دستور if استفاده می‌شود. در ادامه نمونه کدی از پیاده‌سازی ساختار شرطی به کمک دستور if در زبان کاتلین آورده شده است.

val num1 = 5
val num2 = 6
var max:Int
if (num1>num2) {    
    max = num1
} else {    
    max = num2
}

در مثال بالا، عبارت درون پرانتز یعنی num1>num2

 شرط برنامه است. در صورتی که این شرط برقرار باشد، دستورات موجود در بدنه‌ی ساختار if

 اجرا خواهند شد. در غیر این صورت نیز دستورات موجود در بدنه else

 اجرا می‌شوند. باید به این نکته توجه کرد که دستورات مربوط به بخش برقراری شرط و همچنین عدم برقراری شرط باید درون کروشه نوشته شوند و تنها در صورتی که فقط یک دستور در این بخش‌ها وجود داشته باشد، گذاشتن کروشه اختیاری خواهد بود.

ساختار شرطی if در زبان کاتلین

در نمونه کد زیر این حالت از ساختار شرطی پیاده‌سازی شده است.

max = if (num1>num2) num1 else num2

همان‌طور که ملاحظه می‌شود، در مثال بالا دو مقدار num1

 و num2

 از نظر مقدار با کمک ساختار شرطی if با یکدیگر مقایسه شده‌اند.

مطلب پیشنهادی:

شرط در برنامه نویسی — آشنایی با مفاهیم if و else

شروع مطالعه

 

ساختار انتخابی When در کاتلین

ساختار‌های انتخابی در شرایطی استفاده می‌شوند که برای متغیر مورد نظر امکان داشتن حالت‌های مختلف وجود داشته باشد و به ازای هر کدام از این حالت‌ها نتیجه نیز متفاوت است. ساختار انتخابی When

 در زبان برنامه نویسی کاتلین در واقع معادل خلاصه شده‌ ساختار switch case

 در سایر زبان‌های برنامه نویسی رایج همچون جاوا است. در ادامه نمونه کدی از پیاده‌سازی این ساختار در زبان کاتلین ارائه شده است.

var grade: Char = 'B'
when (grade) {    
    'A', 'B', 'C', 'D' -> { print("Passed") }    
    'F' -> { print("Failed") }    
    else -> { print("Undefined") }
}

در مثال بالا، متغیر grade

 برای بررسی به ساختار when ارسال شده است. کاربرد جالب این ساختار این است که می‌تواند مقدار برگشتی نیز داشته باشد. در نمونه کد بالا، مقدار برگشتی ساختار when درون متغیر result

 قرار داده می‌شود. نکته‌ای که باید به آن توجه داشت این است که ساختار when باید تمام حالت‌های ممکن را در نظر بگیرد. در این مثال نیز دستور else

 این کار را انجام می‌دهد.

ساختار های حلقه تکرار

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

  • حلقه for
  • حلقه while
  • حلقه repeat

ساختار های حلقه تکرار

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

// prints 0 to 4            
for (i in 0..4) {    
    print(i)
}

// prints each item in the array
for (item in arrayOf(
    "Swift","Kotlin","Python")) {    
    println(item)
    }

ساختار تکرار معروف دیگر در زبان کاتلین، ساختار حلقه while است. این ساختار تا زمانی که شرط در نظر گرفته شده برقرار باشد به تکرار حلقه ادامه می‌دهد.

// prints 0 to 4            
var count = 0
while (count 

در مورد حلقه تکرار repeat نیز می‌توان گفت این حلقه بلوکی از کد را به دفعات مشخصی تکرار می‌کند.

// prints 0 to 4      
count = 0
repeat (5) {    
    print(count)    
    count += 1
}

منظور از عملگر Range در زبان برنامه نویسی کاتلین چیست؟

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

 می‌توان اعداد مورد نظر را ایجاد کرد. در نمونه کد زیر، نحوه استفاده از این عملگر در زبان کاتلین نشان داده شده است.

//---prints 5 to 9 inclusive---
for (num in 5..9 step 1) { print(num) }

در صورتی که نیاز باشد اعداد محدوده به صورت نزولی مرتب شوند از کلمه کلیدی downTo

 باید استفاده کرد.

//---prints 9 to 5 inclusive---            
for (num in 9 downTo 5 step 1) { print(num) }

ویژگی‌ های جذاب زبان برنامه نویسی کاتلین چیست؟

از ابتدای نوشته تاکنون در مورد ويژگی‌های منحصر بفرد و کاربردی زبان برنامه نویسی کاتلین بار‌ها و بار‌ها صحبت شد. مطمئناً این سوال برای هر خواننده‌ای پیش می‌آید که ويژگی‌های جذاب زبان کاتلین چیست و چگونه باعث رشد و محبوبیت این زبان برنامه نویسی در مدت کوتاهی شده است.

آموزش کتابخانه ویو بایندینگ در کاتلین –  View Binding در Kotlin
فیلم آموزش کتابخانه ویو بایندینگ در کاتلین – View Binding در Kotlin در تم آف

کلیک کنید

در ادامه‌ نوشته، بعد از بررسی ساختار و سینتکس زبان برنامه نویسی کاتلین، برخی از ويژگی‌های کاربردی و جذاب آن مورد بررسی قرار گرفته‌اند.

منظور از اسامی مستعار در زبان برنامه نویسی کاتلین چیست؟

همانند بسیاری از زبان‌های برنامه نویسی مدرن، زبان کاتلین نیز از «نوع مستعار» (Type Alias) پشتیبانی می‌کند. نوع مستعار این امکان را ایجاد می‌کند تا نام‌های جایگزین برای کلاس‌ها در دسترس قرار گیرند. به عنوان مثال، در برنامه نویسی بسیار پیش می‌آید که کلاسی با نام طولانی مثلاً MyBestFunctionForPowerClass

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

typealias CustomerIDType   = Int
typealias CustomerNameType = String
class MainActivity : AppCompatActivity() {    

    override fun onCreate(
    savedInstanceState: Bundle?)
    {  
        super.onCreate(savedInstanceState)        
        setContentView(R.layout.activity_main)        
        
        var customerID: CustomerIDType = 12345        
        var customerName: CustomerNameType = "Samatha Choo"    
    }

منظور از قابلیت Tuples یا Pair/Triple در زبان کاتلین چیست؟

برای پاسخ دادن به این سوال که منظور از Tuple‌ها در زبان کاتلین چیست می‌توان گفت که تاپل‌ها یا چندتایی‌ها در کاتلین زمانی استفاده می‌شوند که خروجی تابع به صورت مجموعه‌ای دوگانه یا سه‌گانه برگشت داده می‌شود. این نکته را باید در نظر داشت که آخرین نسخه زبان برنامه نویسی کاتلین، پشتیبانی از کلاس Tuple را حذف کرده است. در عوض، کلاس‌های دو‌تایی و سه‌تایی را برای پشتیبانی از Tupleهای دو و سه عضوی معرفی کرده است. همچنین، برای Tupleهایی که بیش از سه عضو دارند، باید از «کلاس‌های داده» (Data Classes) استفاده کرد.

Tuple ساختار داده‌ای به حساب می‌آید که از چندین عضو مرتب شده تشکیل شده است. در نمونه کد زیر دو Tuple با استفاده از کلاس‌های Pair و Triple ایجاد شده است.

val pt:Pair = Pair(7,8)
// using type inference
val flight = Triple(7031, "ATL", "ORD")

برای استخراج داده‌های موجود در هر Tuple می‌توان با توجه به تعداد عناصر موجود در آن، مجموعه‌ای مرتب را به آن نسبت داد. در ادامه مثالی برای استخراج مقادیر از Tuple ارائه شده است.

val (flightno, orig, dest) = flight
print(flightno)  //---7031---
print(orig)      //---ATL---
print(dest)      //---ORD---

به طور ساده‌تر نیز می‌توان با استفاده از کلمات کلیدی first

 ، second

 و third

 و به کار‌گیری سینتکس نقطه‌ای به هر عضو موجود در Tuple دسترسی داشت.

print(flight.first)  //---7031---
print(flight.second) //---ATL---
print(flight.third)  //---ORD---

ویژگی Null-Safe در زبان برنامه نویسی کاتلین چیست؟

مانند بسیاری از زبان‌های برنامه نویسی مدرن، کاتلین نیز قابلیت مدیریت مقادیر Null را ارائه داده است. اما منظور از Null-Safe در زبان کاتلین چیست و چه زمانی به کمک برنامه‌نویس می‌آید. برای پاسخ به این سوال باید اشاره کرد زمانی که متغیری از نوع شی تعریف می‌شود اما مقداری به آن اختصاص نمی‌یابد، اخطار مرجع تهی رخ می‌دهد. به طور پیش‌فرض در زبان‌هایی که دارای قابلیت Null Saftey هستند، نباید هیچ متغیری دارای مقدار Null باشد، اما در کاتلین می‌توان به صورت دستی و با قرار دادن علامت ?

 در انتهای نوع متغیر، آن را از نوع Null تعیین کرد.

var insurance_no:String?insurance_no = "12345678"

در مثال بالا، متغیر insurance_no

 متغیری از نوع nullable است، به این معنی که می‌تواند هم مقداری از نوع رشته داشته باشد و هم بدون مقدار یا از نوع Null باشد.

insurance_no = null

ویژگی فراخوانی ایمن

همواره برای دسترسی به متغیر‌های nullable باید از Null بودن یا نبودن آن‌ها اطمینان حاصل کرد. این اطمینان می‌تواند به صورت صریح انجام شود. در ادامه برای این مورد مثالی ارائه شده است.

if (insurance_no != null) {
    val length = insurance_no.length
}

در زبان برنامه نویسی کاتلین به جای بررسی صریح متغیر برای مقادیر Null، می‌توان از عملگر Safe Call یعنی ?

 مانند مثال زیر استفاده کرد.

insurance_no = null
val len = insurance_no?.length
// len is null

عملگر ?

 متغیر را ارزیابی می‌کند تا ببیند آیا مقدار آن Null است یا خیر. اگر مقدار Null باشد، به عنوان نتیجه، مقدار null

 را بر می‌گرداند. در غیر این صورت، ویژگی length

قابل دسترسی است و مقدار آن بازگردانده می‌شود. بر همین اساس نیز متغیر len

 از نوع Int?

 در نظر گرفته می‌شود. برای انجام دستوراتی خاص، در صورتی که متغیر از نوع Null نباشد، می‌توان همانند مثال زیر از ساختار ?.let{}

 نیز استفاده کرد.

insurance_no = "12345678"
insurance_no?.let {
Log.d("", it.length.toString()) // 8}

کلمه کلیدی it

 به طور ضمنی به پارامتر منفرد موجود در تابع لامبدا ( { } به عنوان تابع لامبدا شناخته می شود) اشاره دارد. در این مثال، کلمه it

 به متغیر insurance_no

 اشاره دارد. در ادامه مثال دیگری در این خصوص ارائه شده است.

val fruits:List =
    listOf("apple", "orange", null, "pineapple")
for (fruit in fruits) {
    fruit?.let {
        Log.d("", it)
    }
}

در صورتی که نیاز باشد با دستور print

 لیستی را در خروجی چاپ کرد که این لیست همانند لیست fruits

 در مثال بالا دارای مقدار Null باشد می‌توان از تابع run

 همانند مثال زیر استفاده کرد.

for (fruit in fruits) {
    fruit?.let {        
        Log.d("", it)    
    }?:run {        
        Log.d("", "Item is null")    
    }
}

عملگر !!

گاهی اوقات برنامه‌نویس در مورد Null نبودن بعضی از متغیر‌ها یقین دارد. در این شرایط، برنامه‌نویس می‌تواند از عملگر !! استفاده کند.

insurance_no = "12345678"
val length = insurance_no!!.length
// length is implicitly declared as Int

در مثال بالا متغیر insurance_no

 چنین شرایطی دارد.

عملگر Elvis

ظاهر عملگر Elvis که به صورت علامت دو نقطه و سپس علامت سوال است، به عملگر سه‌تایی if در جاوا است شباهت دارد، اما کاربرد آن متفاوت است. در زمینه مقدار‌دهی به متغیر‌ها گاهی نیاز است به متغیر‌هایی که دارای مقدار Null هستند، مقداری پیش‌فرض اختصاص داده شود. این کار را می‌توان با استفاده از ساختار شرطی if انجام داد. در ادامه، نمونه کدی برای اختصاص مقدار پیش‌فرض به متغیر با ساختار شرطی ارائه شده است.

val genderOfCustomer =
    if (gender == null) "male" else gender
// genderOfCustomer is now male

در مثال بالا، با ساختار شرطی مقدار متغیر gender

 مورد بررسی قرار گرفته است. در صورتی که این متغیر مقدار null

 داشته باشد، به صورت پیش‌فرض مقدار “male”

 برای آن در نظر گرفته خواهد شد. در زبان برنامه نویسی کاتلین برای راحت‌تر شدن کار در این زمینه، عملگر : ?

 که تحت عنوان Elvis شناخته می‌شود، در نظر گرفته شده است. در مثال زیر، نمونه کد بالا به کمک عملگر : ?

 بازنویسی می‌شود.

var genderOfCustomer = gender ?: "male"
// genderOfCustomer is now male

gender = "female"
genderOfCustomer = gender ?: "male"
// genderOfCustomer is now female

در این مثال به کمک عملگر : ?

 ابتدا مقدار متغیر gender

 بررسی می‌شود و سپس در صورتی که مقدار آن برابر null

باشد، مقدار پیش‌فرض در نظر گرفته شده برای آن اختصاص داده خواهد شد. مهم‌ترین نکته‌ استفاده از عملگر : ?

 در زبان کاتلین این است که تنها در شرایطی مقدار پیش‌فرض اختصاص داده می‌شود که متغیر دارای مقدار null

 باشد.

منظور از Interface در زبان برنامه نویسی کاتلین چیست؟

اینترفیس موجودیت مهمی در برنامه‌نویسی شی‌گرا به حساب می‌آید که می‌تواند شامل تعریف «متُدهای» (Method) انتزاعی و پیاده‌سازی متد‌های غیر‌انتزاعی باشد. قابلیت استفاده از Interface در کاتلین امکانات بیشتری را در کار با کلاس‌ها در اختیار برنامه‌نویس قرار می‌دهد که از جمله آن‌ها پیاده‌سازی وراثت چندگانه است.

آموزش مبانی برنامه نویسی شی گرا در جاوا (رایگان)
فیلم آموزش مبانی برنامه نویسی شی گرا در جاوا (رایگان) در تم آف

کلیک کنید

اینترفیس‌ها انواع سفارشی ارائه شده توسط کاتلین هستند که امکان نمونه‌سازی مستقیم آن‌ها وجود ندارد. در عوض، اینترفیس‌ها شکلی از رفتار را تعریف می‌کنند که اجرا کننده‌ باید از براساس آن عمل کند. با کمک اینترفیس‌ها می‌توان آرایه‌هایی داشت که از ماهیت «اشیا» (Object) داخل خود خبر ندارند. این آرایه‌ها صرفاً می‌دانند که اشیا ذخیره شده چه کار‌هایی می‌توانند انجام دهند. در واقع، مرز بین دو مفهوم کلاس و Interface در کاتلین بسیار نزدیک به یکدیگر است. در نتیجه، توانایی تشخیص دادن این دو مفهوم از یکدیگر و همچنین آشنا بودن به تفاوت‌ها و کاربرد‌های هر کدام برای هر توسعه‌دهنده‌ای که از زبان برنامه نویسی کاتلین استفاده می‌کند، بسیار ضروری است.

مطلب پیشنهادی:

Interface در کاتلین — آموزش اینترفیس و پیاده سازی آن + کد

شروع مطالعه

 

جمع‌بندی

تا همین چندی پیش اگر از برنامه‌نویسان و توسعه‌دهندگان در مورد زبان کاتلین سوال می‌شد، به جرات می‌توان گفت برای بسیاری از آن‌ها حتی نام کاتلین ناآشنا بود، چه برسد به این که بدانند، زبان برنامه نویسی کاتلین چیست و چه کاربرد‌هایی دارد. هیچ کس نمی‌توانست، چنین رشد و محبوبیتی را در این مدت کوتاه برای زبان نوظهوری چون کاتلین پیش‌بینی کند. اما زبان برنامه نویسی کاتلین برخلاف پیش‌بینی‌ها نه تنها محبوبیت بالایی پیدا کرد، بلکه به عنوان زبان رسمی برنامه نویسی اندروید هم معرفی شد و زبان باسابقه‌ای همچون «جاوا» (Java) را از پیش رو بردارد.

مجموعه آموزش برنامه نویسی اندروید
فیلم مجموعه آموزش برنامه نویسی اندروید در تم آف

کلیک کنید

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

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

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

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.