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

۴۸۹۷ بازدید
آخرین به‌روزرسانی: ۲۲ اسفند ۱۴۰۲
زمان مطالعه: ۳۷ دقیقه
زبان برنامه نویسی کاتلین چیست؟ — دانستنی های مهم Kotlin

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

فهرست مطالب این نوشته

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

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

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

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

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

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

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

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

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

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

زبان کاتلین

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1class Student(var id: Int, var name: String, var family: String)
2
3fun main(args: Array<String>) {
4
5    val Student1 = Student(1,"Hossein","Javid")
6    val Student2 = Student(1,"Hossein","Javid")
7
8    if(Student1 == Student2 ){
9        println("They are the same")
10    }else{
11        println("they are not the same")
12    }
13}

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

they are not the same

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

1data class Student(var id: Int, var name: String, var family: String)
2
3fun main(args: Array<String>) {
4
5    val Student1 = Student(1,"Hossein","Javid")
6    val Student2 = Student(1,"Hossein","Javid")
7
8    if(Student1 == Student2 ){
9        println("They are the same")
10    }else{
11        println("they are not the same")
12    }
13}

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

They are the same

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

در نمونه کد بالا، به ترتیب 3 متغیر با نام‌های a  ، b  ، c  تعریف شده‌اند. در ادامه هر کدام به صورت جداگانه بررسی خواهند شد.

  • متغیر a  : این متغیر با کلمه کلیدی var  تعریف شده است و مقدار آن قابل تغییر است و همچنین نوع آن نیز به صراحت در ابتدا از نوع رشته یا String  تعیین شده است.
  • متغیر b  : این متغیر با کلمه کلیدی val  تعریف شده است و مقدار آن ثابت و غیر قابل تغییر است یعنی در طول برنامه امکان تغییر مقدار آن وجود نخواهد داشت. همچنین نوع آن در ابتدا از نوع عدد صحیح یا int  در نظر گرفته شده است.
  • متغیر c  : این متغیر نیز با کلمه کلیدی val  تعریف شده است یعنی دارای مقدار ثابتی در طول برنامه خواهد بود. همچنین، به دلیل این‍که در ابتدا نوع متغیر مشخص نشده است در نتیجه، نوع آن به صورت خودکار از نوع عدد صحیح یا int   تعیین خواهد شد.
تفاوت val و var در زبان کاتلین

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

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

1var str: String
2println(str)

اجرای نمونه کد بالا با خطای Variable 'str' must be initialized  روبرو خواهد شد، زیرا در این کد، متغیر str  قبل از اینکه مقدار‌دهی اولیه شود، در برنامه استفاده شده است. در نتیجه، همواره باید مورد مهمی چون مقدار‌دهی اولیه متغیر‌ها را در نظر داشت.

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

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

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

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

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

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

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

نوعکاربردمحدوده عددیاندازه
Longاعداد صحیحاز 9223372036854775808- تا 922337203685477580864 بیت
Intاعداد صحیحاز 2147483647- تا 214748364832 بیت
Shortاعداد صحیحاز 32767- تا 3276816 بیت
Byteاعداد صحیحاز 127- تا 1288 بیت
Doubleاعداد اعشاریاز 1.7e-038 تا 1.7e+30864 بیت
Floatاعداد اعشاریاز 3.4e-038 تا 3.4e+03832 بیت

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

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

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

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

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

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

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

1val hand = 'u270B'
2// hand icon
3val star = 'u2b50'
4// star icon

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

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

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

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

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

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

1var firstName = "Wei-Meng"
2var lastName:String = "Lee"
3
4var fullName = "$firstName $lastName"
5// "Wei-Meng Lee"

در نمونه کد بالا، متغیر fullName  از الحاق دو رشته‌ firstName  و lastName  به کمک همین روش تشکیل شده است.

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

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

1fun main(arg: Array<String>){
2    var testA: Boolean;
3    val testB: Boolean;
4    testA = true;
5    testB = false;
6    println("testA status: $testA and testB status: $testB");
7}

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

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

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

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

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

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

1val names = Array<String>(5) {""}
2// 5 elements all containing ""
3// array size is fixed at 5 elements

همچنین می‌توان آرایه را تعریف و با استفاده از دستور arrayOf()  عناصر مربوط به آن را مشخص کرد. در نمونه کد زیر آرایه‌ OperatingSystem  با استفاده از دستور فوق مقدار‌دهی شده است.

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

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

1val os = OSes[0] // iOS

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

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

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

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

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

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

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

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

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

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

1var wishes: MutableList<String> = mutableListOf()

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

1wishes.add("iPhone")
2wishes.add("iPad")
3wishes.add("Samsung Fold")
4wishes.removeAt(1)
5wishes.remove("Samsung Fold")

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

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

1val platforms1 = hashMapOf(    
2    "Apple" to "iOS",    
3    "Google" to "Android",    
4    "Microsoft" to "Windows Phone"
5)

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

1val platforms1:HashMap<String, String>

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

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

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

1val count = platforms1.size.     // 3
2
3val companies = platforms1.keys
4// MutableSet of "Apple", "Google", and "Microsoft"
5val oses = platforms1.values
6// MutableCollection of "iOS", "Android", and "Windows Phone"

نکته‌ای که باید در نظر داشت این است که از آنجایی که تمامی کلید‌های موجود در ساختار داده‌ای Map باید منحصر بفرد و غیر تکراری باشند. در مثال بالا خروجی کد platforms1.keys  از نوع MutableSet  خواهد بود. همچنین از آنجایی که مقادیر موجود در ساختار Map نیازی نیست که حتماً منحصر بفرد باشند در نتیجه، خروجی کد platforms1.values  از نوع MutableCollection  خواهد بود. برای اضافه کردن زوج مرتب جدید کلید و مقدار به ساختار Map در زبان کاتلین به صورت زیر می‌توان عمل کرد.

1platforms1["Samsung"] = "Bada"

در نمونه کد بالا، کلید جدیدی با نام Samsung  و حاوی مقدار "Bada"  تعریف شده است.

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

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

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

 

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

برای تعریف تابع در زبان کاتلین باید به این صورت عمل کرد؛ در ابتدا کلمه کلیدی fun  قرار می‌گیرد و بعد از آن به ترتیب نام تابع، آرگومان‌ها ،،البته در صورت وجود،، و در انتها نیز نوع مقدار بازگشتی تابع باید قرار گیرند. نمونه کد زیر، تابعی با نام addNums  را به همراه 3 آرگومان ورودی و همچنین مقدار بازگشتی از نوع «عدد صحیح» (Int) را نشان می‌دهد.

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

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

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

1val sum = addNums(5,6,7)

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

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

1fun doSomething() {    
2    // statement(s)
3}

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

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

1fun join(firstName:String,         
2         lastName:String,         
3         joiner:String=" "):String {    
4    return "$firstName$joiner$lastName"
5}

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

1// with three arguments
2var fullName =    
3    join("Wei-Meng", "Lee", ",")
4// Wei-Meng,Lee
5
6// with two arguments      
7fullName = join("Wei-Meng", "Lee")
8// Wei-Meng Lee

همان‌طور که در نمونه کد بالا مشاهده می‌شود، تابع join  قابلیت پیاده‌سازی با 2 و 3 پارامتر ورودی را دارد.

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

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

1fun average(vararg nums:Int):Float {    
2    var sum: Float = 0F    
3    for (num in nums) {        
4        sum += num.toFloat()    
5    }    
6    return sum/nums.size
7}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1val num1 = 5
2val num2 = 6
3var max:Int
4if (num1>num2) {    
5    max = num1
6} else {    
7    max = num2
8}

در مثال بالا، عبارت درون پرانتز یعنی num1>num2  شرط برنامه است. در صورتی که این شرط برقرار باشد، دستورات موجود در بدنه‌ی ساختار if  اجرا خواهند شد. در غیر این صورت نیز دستورات موجود در بدنه else  اجرا می‌شوند. باید به این نکته توجه کرد که دستورات مربوط به بخش برقراری شرط و همچنین عدم برقراری شرط باید درون کروشه نوشته شوند و تنها در صورتی که فقط یک دستور در این بخش‌ها وجود داشته باشد، گذاشتن کروشه اختیاری خواهد بود.

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

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

1max = if (num1>num2) num1 else num2

همان‌طور که ملاحظه می‌شود، در مثال بالا دو مقدار num1  و num2  از نظر مقدار با کمک ساختار شرطی if با یکدیگر مقایسه شده‌اند.

 

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

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

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

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

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

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

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

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

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

1// prints 0 to 4            
2for (i in 0..4) {    
3    print(i)
4}
5
6// prints each item in the array
7for (item in arrayOf(
8    "Swift","Kotlin","Python")) {    
9    println(item)
10    }

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

1// prints 0 to 4            
2var count = 0
3while (count < 5) {    
4    print (count)    
5    count += 1
6}

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

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

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

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

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

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

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

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

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

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

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

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

1typealias CustomerIDType   = Int
2typealias CustomerNameType = String
3class MainActivity : AppCompatActivity() {    
4
5    override fun onCreate(
6    savedInstanceState: Bundle?)
7    {  
8        super.onCreate(savedInstanceState)        
9        setContentView(R.layout.activity_main)        
10        
11        var customerID: CustomerIDType = 12345        
12        var customerName: CustomerNameType = "Samatha Choo"    
13    }

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

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

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

1val pt:Pair<Int, Int> = Pair(7,8)
2// using type inference
3val flight = Triple(7031, "ATL", "ORD")

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

1val (flightno, orig, dest) = flight
2print(flightno)  //---7031---
3print(orig)      //---ATL---
4print(dest)      //---ORD---

به طور ساده‌تر نیز می‌توان با استفاده از کلمات کلیدی first  ، second  و third  و به کار‌گیری سینتکس نقطه‌ای به هر عضو موجود در Tuple دسترسی داشت.

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

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

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

1var insurance_no:String?insurance_no = "12345678"

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

1insurance_no = null

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

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

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

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

1insurance_no = null
2val len = insurance_no?.length
3// len is null

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

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

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

1val fruits:List<String?> =
2    listOf("apple", "orange", null, "pineapple")
3for (fruit in fruits) {
4    fruit?.let {
5        Log.d("", it)
6    }
7}

در صورتی که نیاز باشد با دستور print  لیستی را در خروجی چاپ کرد که این لیست همانند لیست fruits  در مثال بالا دارای مقدار Null باشد می‌توان از تابع run  همانند مثال زیر استفاده کرد.

1for (fruit in fruits) {
2    fruit?.let {        
3        Log.d("", it)    
4    }?:run {        
5        Log.d("", "Item is null")    
6    }
7}

عملگر !!

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

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

در مثال بالا متغیر insurance_no  چنین شرایطی دارد.

عملگر Elvis

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

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

در مثال بالا، با ساختار شرطی مقدار متغیر gender  مورد بررسی قرار گرفته است. در صورتی که این متغیر مقدار null  داشته باشد، به صورت پیش‌فرض مقدار "male"  برای آن در نظر گرفته خواهد شد. در زبان برنامه نویسی کاتلین برای راحت‌تر شدن کار در این زمینه، عملگر : ?  که تحت عنوان Elvis شناخته می‌شود، در نظر گرفته شده است. در مثال زیر، نمونه کد بالا به کمک عملگر : ?  بازنویسی می‌شود.

1var genderOfCustomer = gender ?: "male"
2// genderOfCustomer is now male
3
4gender = "female"
5genderOfCustomer = gender ?: "male"
6// genderOfCustomer is now female

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

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

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

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

 

جمع‌بندی

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

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

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
codemaginfoworldmakeuseoflearn.g2
نظر شما چیست؟

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