یکی از زبان های برنامه نویسی جدیدی که مورد استقبال شرکت های بزرگ نمر افزاری قرار گرفته است زبانی به نام kotlin می باشد. داستان این زبان برنامه نویسی از آنجایی شروع می شود که شرکت اپل برای برنامه نویسی سیستم های iOS زبان برنامه نویسی swift را ارائه کرد. به دنبال این کار برنامه نویسان اندروید نیز خواستار زبان مشابه swift برای اندروید شدند. زبان kotlin با استفاده از ماشین مجازی JVM اجرا می شود و شباهت های زیادی به زبان swift دارد. همچنین زبان kotlin یک زبان نوع استاتیک است که توسط شرکت jetbrains ارائه شده است. شرکت jetbrains شرکتی است که محصولاتی مانند resharper, Intellij idea, phpStorm , web storm را برای راحتی و کار سریع برنامه نویسان ارائه کرده است. حتی برنامه اندروید استودیو هم بر پایه محصول intellij idea این شرکت ساخته شده است.
مشخصات زبان kotlin
سینتکس زبان kotlin قابل درک تر از سینتکس زبان جاوا است و مختصر تر از زبان جاوا است. از قابلیت های دیگر این زبان lambda expression و بارگذاری عملگر ها (operator overloading) و توابعی که با توابع کار می کنند (higher-order functions) می باشد. این توابع توابعی هستند که یا ورودی آنها تابع است یا خروجی آنها یک تابع است. زبان kotlin می تواند با زبان جاوا همکاری و تعامل داشته باشد بنابراین می توان در یک پروژه از هردوی این زبان ها باهم استفاده کرد. اگر شما یک برنامه نویس جاوا باشید می توانید زبان kotlin را در مدت زمان خیلی کوتاهی یاد بگیرید. در ادامه به خصوصیات این زبان برنامه نویسی به شکل فنی خواهیم پرداخت. دقت داشته باشید که برای این که این مطلب را درک کنید لازم است که با سینتکس زبان جاوا آشنایی نصبی داشته باشید..
کلاس ها در زبان kotlin
برای ساخت کلاس در کتلین شما باید از کلمه کلیدی class استفاده کنید. برای مثال اگر شما قصد دارید که یک کلاس خالی با نام Person بسازید باید مانند کد زیر عمل کنید.
Class Person{
}
افزودن خصوصیاتی مانند فیلد ها در زبان kotlin
در برنامه نویسی شی گرا معمولا یک کلاس دارای فیلد ها و متدها می باشد. حال اگر بخواهیم به کلاس Person که ساختیم دو فیلد اضافه کنیم باید به شکل زیر عمل کنیم. در کد زیر دو فیلد تعریف شده است که یکی name است که از نوع رشته ای و دیگری age است که از نوع عدد صحیح است.
var name: String = ""
var age: Int = 0
همانطور که می بینید نحوه تعریف فیلد و متغیر با جاوا فرق دارد. در زبان kotlin برای تعریف متغیر شما باید از کلمه کلیدی var استفاده کنید. در حالی که در جاوا اینگونه نیست. همچنین اگر شما بخواهید در کتلین یک متغیر read only یا فقط خواندنی داشته باشید باید از کلمه کلیدی val به جای var استفاده کنید. همچنین برای فیلد هایی که می توانند null باشند یا نباشند نیز کتلین راه حل هایی در نظر گرفته است و این دو نوع متغیر را از هم جدا کرده است یعنی متغیر هایی که می توانند مقدار null بگیرند و متغیرهایی که هیچ وقت نمی توانند null باشند و اگر null شوند کامپایلر خطا خواهد داد. متغیرهای age و name که تعریف کردیم از این نوع است و نمی توانند null باشند. برای این که متغیری بتواند مقدار null هم بگیرد باید هنگام تعریف آن از علامت سوال بعد از نوع متغیر استفاده کرد (این روش در زبان سی شارپ هم وجود دارد.) مانند مثال زیر
var college: String? = null
برای این که یک شئ از یک کلاس ساخته شود در کتلین نیاز به استفاده از کلمه کلیدی new نیست و اصلا کتلین این کلمه کلیدی را ندارد. برای ساخت یک شئ از یک کلاس باید مانند کد زیر عمل کنید.
var jake = Person()
وقتی که یک شئ از یک کلاس ساخته شد مانند زبان جاوا می توان از فیلد های آن استفاده کرد و آنها را مقدار دهی نمود و یا مقادیر آنها را خواند مانند کد زیر:
jake.name = "Jake Hill"
jake.age = 24
jake.college = "Stephen's College"
استفاده از سازنده ها (constructor) در کتلین
همانگونه که می دانید در برنامه نویسی شی گرا از constructorها بسیار استفاده می شود. دلیل آن هم این است که برای مقداردهی اولیه به فیلد های یک کلاس از طریق constructor ها انجام می شود. زیرا که هنگام تعریف متغیر معمولا مقدار متغیر را مشخص نمی کنیم و مقادیر اولیه را از کاربر می گیریم. سینتکس کتلین برای ساخت constructor ها به شکل زیر است:
class Person(var name: String, var age: Int, var college: String?) {
}
همانگونه که می بینید هنگام تعریف کلاس شما contructor را هم مشخص می کنید. ولی معمولا کلاس ها بیش از یک constructor دارند. اما نمی توانیم که چند تا کلاس با یک نام تعریف کنیم حال برای این که چند constructor در یک کلاس داشته باشیم باید چکار کنیم؟ برای حل این مشکل باید از کلمه کلیدی constructor استفاده کنیم که به این سازنده های سازنده های ثانویه می گوییم که در سازنده های ثانویه با استفاده از کلمه کلیدی this باید سازنده اصلی را مقدار دهی کنیم و ورودی های سازنده اصلی را نیز مقدار دهی کنیم. برای مثال باید کد را به شکل زیر بنویسیم.
class Person(var name: String, var age: Int, var college: String?) {
var email: String = ""
constructor(name:String, age:Int, college: String?, email: String) : this(name, age, college) {
this.email = email
}
}
حال اگر بخواهیم یک شی از کلاس بسازیم باید کد آن را به شکل زیر بنویسیم.
var jake = Person("Jake Hill", 24, "Stephen's College", "jake.hill@example.com")
متدهای کلاس(توابع عضو کلاس) در زبان kotlin
در کتلین برای این که یک تابع یا متد را تعریف کنیم باید از کلمه کلیدی fun استفاده کنیم. برای این که یک متد ساده تعریف کنیم به شکل زیر کد می نویسیم. در کد زیر یک متد به نام isChild تعریف کرده ایم که خروجی آن یک مقدار Boolean می باشد.
fun isChild (): Boolean {
return age < 18
}
در متد بالا اگر سن زیر 18 سال باشد خروجی true و در غیر این صورت مقدار false برمی گرداند. برای فراخوانی این متد به همان روش جاوا باید عمل کنیم. مانند شکل زیر کد می نویسیم.
jake.isChild()
تا به این قسمت به توضیح مفاهیم و سینتکس های زبان برنامه نویسی کتلین اشاره کردیم و گفتیم که تفاوت این زبان با جاوا در چه قسمت هایی است.
نویسنده: مهدی عادلی فر
منبع: Itpro
