- 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.
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
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
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
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
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
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
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.
2- Fonksiyonlar
Kotlin'de fonksiyon tanımlanaması fun ile yapılır. Kotlin'de ana fonksiyon
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){}
Fonksiyonların hangi değeri döndüreceği () 'dan sonra yazılır Örneğin;
gördüğünüz gibi
3- Sınıflar
Kotlin'de sınıflar otomatik olarak private oluşturulur. public yapmak için başına yazmanız gereklidir.
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.
4- Kontroller
Kotlin'de kontroller diğer programlama dillerinden pek de farklı değildir. Örnek bir if else yapısı görelim
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
Ö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
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:
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.
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
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.
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.
? : Değişkeni nullable yani null değer alabilir olarak tanımlar
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
Yanlışım veya eksiğim varsa affola Söylemeyi unutmayın
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
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
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
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.
2- Fonksiyonlar
Kotlin'de fonksiyon tanımlanaması fun ile yapılır. Kotlin'de ana fonksiyon
Kod:
fun main() {
}
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
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.
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
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.
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?
-> : 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: