Kotlin #1 | Kotlin Temelleri

Ego1st

Uzman üye
15 Mar 2018
1,109
25
Merhaba THT ailesi. Bu gün obje odaklı bir programlama dili olan Kotlin ile karşınızdayım. Bu serinin amacı Google'ın öncelikli dil olarak seçtiği Kotlin'i Android Geliştirme için temellerini öğrenmek. Umarım yazıdan keyif alırsınız.

NaKJWN.png


Kotlin Nedir? Neden Kullanmalıyız

Kotlin 2011 senesinde JetBrains tarafından duyrulan, yeni diyebileceğimiz bir programlama dilidir. Kotlin kodları JVM (Java Virtual Machine) üzerinde çalışır. Kotlin hakkında geliştirme sorumlusu Andrey Breslav, Kotlin'in nesne yönelimli endüstriyel bir dil ve Java'dan "daha iyi bir dil" olarak tasarlandığını söyledi

NaKJWN.png


Bazı Bilgiler:


Kotlin değişken bildirimleri ve parametre listelerinin veri türü, değişken adından sonra gelir. Scala ve Groovy'de olduğu gibi, noktalı virgül bir deyim sonlandırıcısı olarak isteğe bağlıdır; çoğu durumda derleyici ifadenin sona erdiğini anlaması için bir satırsonu yeterlidir.

Nesnel tabanlı programlamanın sınıflarına ve metodlarına (Kotlin'de üye fonksiyonları olarak adlandrılır) ek olarak, Kotlin ayrıca fonksiyon kullanımı ile prosedürel programlamayı da destekler. C ve C++'da olduğu gibi, Kotlin programının giriş noktası "main" olarak adlandırılan fonksiyondan, herhangi bir komut satırı argümanı içeren diziler geçer. Perl ve Unix/Linux shell script stili dize enterpolasyonu desteklenmektedir. Ayrıca tür çıkarımı da desteklenir.
Vikipedi

NaKJWN.png


Kotlin Nerelerde Kullanılır?

Android: Google'ın öncelikli dil olarak tercih etmesiyle Android geliştirmede oldukça popülerleşmiştir. Verimli kod yazımı sayesinde Android geliştiricileri tarafından da tercih edilmektedir
JVM: Java ile uyumlu çalıştığını bahsetmiştik. Bu sayede JVM'in kullanıldığı her yerde kullanılabilir
Web: Kotlinle aynı zamanda yazdığınız kodları Javascript olarak derleyip web uygulamaları geliştirebilirsiniz.
Native: Sanal makinenin (JVM gibi) tercih edilmediği veya sanal makine kullanımının mümkün olmadığı sistemlerde bu köprüyü aradan kaldırmak ve native (donanım bazında) çalışan uygulamalar geliştirmek için Kotlin Native kullanıma sunulmuştur. (Buna gömülü sistemler, iOS örnek olarak verilebilir.) Kotlin Native birçok platformda desteklenmektedir.Alıntılanan Konu



NaKJWN.png


Kotlin Temelleri

1- Değişkenler

Başlamadan önce şunu belirteyim kotlinin güzel özelliklerinden biri komut satırlarının sonunda noktalı virgüle ihtiyaç duymamasıdır. Tabi ki istediğiniz zaman koyabilirsiniz ama lambda expression (diğer derste değineceğim) hariç çoğu zaman gerekmez.

Değişkenlere tam sayılarla başlayalım Kotlin Dökümanlarda da belirtildiği gibi Kotlin'de 4 adet tam sayı bulunmaktadır



Ondalıklı Sayılar ise bu şekilde;



Characters

Kotlin'de karakter diğer dillerde olduğu gibidir. Ancak bazılarına karşın direkt olarak 1 gibi sayı değerlerini tutamazlar

Boolean

Boolean bildiğiniz gibi true ya da false tutan değişkenlerdir

&& = ve
|| = veya, ya da
! = tersini gösteren durumdur.

Atıyorum goToSchool diye bir değişkenimiz olsun. eğer biz goToSchool'un tam tersini almak istiyorsak if(!goToSchool) yazmamız yeterli olacaktır bu if(goToSchool == false) anlamına gelir

Diziler

Kotlin'de diziler basitçe arrayOf() şeklinde tanımlanabilir. İçine istediğiniz türden ama hepsi aynı olacak şekilde yazabilirsiniz.

String

Metin tutan değişken tipidir. String şeklinde tanımlanır. Bir String'in içinde değişken belirtmek istiyorsanız "Değişkenimizin değeri: $degiskenAdi" şeklinde yapabiliriz.

Kotlinde Değişken tanımlama

Kotlin'de değişken temel olarak 3 şekilde tanımlanır.
val
var
lateinit var

val; cannot be reassigned yani yeniden tanımlanamaz değişken için verilir orada initialize yani başlatmak gerekir Örneğin

Kod:
val stringA = String

bu şekilde oluşturulan değişken bir daha değiştirilemez.

var; val'ın tam tersi propertyleri ve tuttuğu değerler daha sonradan değiştirilebilir

Kod:
var sayi = Int
sayi = 9
sayi = 10

gördüğünüz gibi bu kod hata vermeyecektir.

lateinit var: Adından da anlayacağınız üzere direkt olarak initalize edilmeyen yani başlatılmayan tanımlama şeklidir sadece tür belirtilir

Kod:
lateinit var sayi : Int
sayi = 9
sayi = 10

Gördüğünüz gibi burada : koyduk bu işaretin anlamı değişkenin türünün belirtilmesidir.

Neden lateinit val yok? Çünkü val değerler değiştirilemez ama lateinit'in de sonradan initialize edilmesi gerekir. Bu sebepten çakışırlar.

Evet değişkenlerimiz bu şekilde.

NaKJWN.png


2- Fonksiyonlar

Kotlin'de fonksiyon tanımlanaması fun ile yapılır. Kotlin'de ana fonksiyon

Kod:
fun main() {
}
dir. Bir kotlin dosyası çalıştırıldığında otomatik olarak call edilir

Kotlin'de fonksiyonlar fun şeklinde tanımlandığı zaman public olarak tanımlanır

Private fonksiyonlar ise private fun şeklinde yapılır.

Kotlin'de fonksiyonlarda değişken almak şu şekilde yapılır

fun fun1(sayi: Int){}

Kod:
fun(sayi: Int){}

Fonksiyonların hangi değeri döndüreceği () 'dan sonra yazılır Örneğin;

Kod:
fun deger(): Int{
return 0
}

gördüğünüz gibi

NaKJWN.png


3- Sınıflar

Kotlin'de sınıflar otomatik olarak private oluşturulur. public yapmak için başına yazmanız gereklidir.

Kod:
class ExampleClass{} // Bir private sınıf
public class ExamplePublicClass{} // Bir public sınıf

Kotlin'in javaya kıyasla en güzel özelliklerinden biri de primary constructor oluşturmanıza ve this.deger = deger şeklinde tanımlamara ihtiyaç duymamanızdır.

Kotlinde bir sınıf oluşturduğunuzda parantez içinde değerleri isterseniz otomatik olarak işlemler yapılır daha sonra getter ve setter'ları private veya public olarak ayarlayabilirsiniz. Bunu da ayrı ayrı function'lar oluşturarak değil değişkenin altına get() yazarak yapabilirsiniz

Eğer bu mantığı beğenmediyseniz sınıfın içinde constructor() tanımlamasını yaparak işlemlerinize koyulabilirsiniz.

NaKJWN.png


4- Kontroller

Kotlin'de kontroller diğer programlama dillerinden pek de farklı değildir. Örnek bir if else yapısı görelim

Kod:
val a = 15

if(a == 15){
//a 15 ise çalışacak işlemler
} else if(a < 15) {
//a 15'ten küçükse çalışacak işlemler
} else if(a > 15){
//a 15'ten büyükse çalışacak işlemler
}else {
//Kontrol edilen durumların hepsi false yani doğru değilse çalışacak işlemler
}

Kotlin'de diğer dillerden aşina olduğumuz switch case yapısı yoktur bunun yerine when vardır. Bir örnek verelim daha sonra açıklayalım

Kod:
val str = "THT"
when (str){
"THT" -> //str == THT ise yapılacak işlemler
"Ego1st" -> //str == Ego1st ise yapılacak işlemler
}

Örnekte de gördüğünüz gibi bir kullanım vardır. "->" Bu gösterime Kotlin'de lambda gösterimi adı verilir. Lambda gösterimine bir sonraki derste değineceğim. Şimdilik bunu bilelim yeter

NaKJWN.png


5- Döngüler

While döngüsü: Verilen koşul doğru olduğu sürece kod bloğu içindeki işlemleri yapar. Örnek kod:
Kod:
val sayi1 = 3
while(sayi1 < 10){
println(sayi1.toString()) //println kotlindeki yazdır fonksiyonu. toString() ise herhangi bir değeri stringe çevirir
sayi1++
}

Do While Döngüsü: Aynı While gibi Ancak başında do var do bir kere yapılır ancak while doğru olduğu sürece devam eder.

Kod:
do {
val x = internettenVeriCek()
} while (x != null){
println(x.toString())
}

Gördüğünüz gibi normalde başka yapılardaki değişkenlere erişemezken do while döngüsünde erişebiliyoruz. Bu da ayrı bi güzellik

For Döngüleri: For döngüleri Kotlin'de özellikle android'de değişkenleri teker teker diziye atamak için çok kullanılır ve kullanışlıdır. Örnek görelim

Kod:
val internettenGelenVeri = veriCek()

for(deger in internettenGelenVeri){
println(deger)
}

internettenGelenVeri dizisindeki her bir elemanı alıp değer değişkenine atıyor ardından kod bloğu çalıştırıldıktan sonra 2. elemanı alıyor. Bu şekil bitene kadar gidiyor. Burdaki güzellik kodun anlaşılır, ekstra tanımlamalara gerek duyulmadan yapılabilmesidir.

NaKJWN.png


6- Operatörler

Kotlin'de operatörleri tanıyalım

Matematik Operatörleri; +, -, *, /, %

+ : Toplama işlemi yapan operatördür
sayi++ şeklinde kullanıldığında sayi'nın değeri bir artar

- : Çıkarma işlemi yapan operatördür
sayi-- şeklinde kullanıldığında sayi'nın değeri bir azalır

* : Çarpma işlemi için kullanılan operatördür

/: Bölme işlemi için kullanılan operatördür

% : Mod operatörüdür. Bir sayının diğer sayıya bölümünden kalanı verir.

sayi1.mod(sayi2) veya sayi1 % sayi2 şeklinde kullanılabilir

= : Değer atama operatörüdür

+= : Topla ve ekle

-= : Çıkar ve ekle

*= : Çarp ve ekle

/= : Böl ve ekle

%= : Mod al ve ekle

&& : 'Ve' operatörüdür

|| : 'Veya' operatörüdür

! : 'Değil' operatörüdür

< : Küçüktür <= : Küçük eşittir
> : Büyüktür >= : Büyük eşittir

[ ve ] : Dizilerdeki elemanlara erişmek için kullanılır. get ve set işlemleri yapılabilir

?. : Önceki belirtilen değer null yani boş değil ise çalıştırılır.
Kod:
sayi1?.let {//işlemler}

? : Değişkeni nullable yani null değer alabilir olarak tanımlar
Kod:
val metin_a = String?
Bu sayede metin_a null değer olabilir

-> : Lambda gösterimi(Diğer ders değinilecek)

$ : Bir string gösteriminin içindeyken herhangi bir ifade çağırmak istediğimizde kullanılır
Kod:
"Bu işlemin sonucu: $sayi1"

Yanlışım veya eksiğim varsa affola :) Söylemeyi unutmayın

 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.