Kotlin’de Özel Sınıflar

Kotlin’de Özel Sınıflar

Herkese merhabalar. Kotlin serisinin 7. ve son yazısını okumaya başlamak üzeresiniz. Benim için hem yazarken hem de doküman karıştırırken öğretici ve keyifli bir süreçti. Buraya kadar gelen, 7 aydır birlikte bir programlama dili üzerine konuştuğumuz bütün okurlara teşekkür ederim. Umarım sizlere bir şey katabilmişimdir. Bu yazıda son basamağımız olan özel sınıflara değineceğiz.

Data Class

Data Class’lar verileri depolamak için kullanılan özel sınıflardır ve data anahtar sözcüğüyle tanımlanırlar. Data Class’larda getter ve setter metotları, hashCode(), equals(), toString(), copy() metotları üretilir. Yapısal olarak şu şekilde görünür:

data class<SınıfAdı>(parametreler)

Bir örnekle açıklayalım.

Employee adında bir data class oluşturduk ve çalışan adı ile çalışana ait maaş bilgisini tutacağımız parametreler ekledik. Main fonksiyonumuzun çıktısı şu şekilde olacaktır:

Employee(name=Chris, salary=5000)

Enum Class

Kullanıcı tarafından tanımlanan veri kümeleri için enum class‘lar kullanılabilir. Daha okunaklı kod yazılmasını sağlar.

Her enum sabiti bir nesnedir ve örnekteki gibi virgülle ayrılırlar.

Kotlin’de enum class’lar birkaç özellikle birlikte tanımlanır. Bunlar derleyiciye otomatik olarak eklenir. Bunlara herhangi bir enum class’ı örneğinde erişebiliriz.

  • Ordinal: Geçerli enum sabitinin listenin neresinde olduğunun bilgisini bize verir. Saymaya sıfırdan başlanır.
  • Name: Enum sabitinin adını string tipinde döndürür.

Singleton Class

Singleton class singleton nesnesi olarak da adlandırılabilir. Bir sınıftan yalnızca bir örnek oluşturmak ve bunu bu haliyle her yerde kullanmak istediğimizde bu yolu izleyebiliriz. Class anahtar sözcüğü yerine object anahtar sözcüğünü kullanırız.

Companion Object

Kotlin’de statik özellikler ve statik metotlar oluşturmak mümkün değildir. Eğer statik bir özellik tanımlamak istersek object kullanırız. Statik olmasını istediğimiz sabitler, özellikler ve metotlar burada tanımlanır. Android Development Resource for Educators dokümanında ilgili örnek şu şekilde veriliyor:

Sealed Class

Sealed classları enum yapısının bir üst modeli gibi düşünebiliriz. Sealed classlar enum classların genişletilmiş halidir. Enum classlar tek bir değişken tipine sahipken sealed classlar her bir durum için farklı değişken tiplerine sahip olabilir. Sealed classlar soyut oldukları için bu sınıflardan nesne üretemeyiz.

İlk önce bir enum örneği yapalım ve sonrasında bunu sealed classa dönüştürelim.

Öncelikle öğrenci bilgilerini tuttuğumuz bir data class oluşturalım. Bu bilgileri enum classta parametre olarak alacağız.

Enum sınıfında ise sistemde gözüken derslere kayıtlı bazı öğrencilerin adlarını, yaşlarını ve derecelerini görüyoruz. Diyelim ki bu derslerden biri ayrılıyor ve biz bunu da görmek istiyoruz. Bu kişi ise DELETED olarak adlandırılsın. Sistemde bilgileri mevcut olmadığı için parametreler boş kalacaktır. Yani biz bunu parametresiz girmeliyiz fakat enum classlar tek tip veri türü kabul ettiği için bu mümkün olmayacaktır. Burada ise devreye sealed classlar giriyor.

Enum class yapısını sealed class kullanarak bu şekilde yazabiliriz.

Kotlin’de kullanılan özel sınıflara temel kullanımlarıyla göz atmış olduk ve tebrikler simülasyonu tamamladınız. Herhangi bir sorunuz olması halinde bana sosyal medya hesaplarımdan ulaşabilirsiniz. Gelecek yazıda Android programlamaya merhaba diyeceğiz, görüşmek üzere.

yazı

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.