Kişisel web sayfamda yazılım, teknoloji ve genel hayat hakkında paylaşımlar yapmayı hedefliyorum.

Kotlin Programlama Dersleri – Inner, Enum, Sealed Class, Object ve Companion Object

Bu yazı, aslında Kotlinde Sınıfların devamı niteliğinde fakat ben normal sınıflar konusundan ayrı bir yazıda değerlendirmek istedim. Bu yazıda birçok programlama dilinde de bulunan iç içe class yapısı olan Enum Classları, Kotlin ile karşımıza çıkan özelleştirilmiş Enum Classlar gibi düşünebileceğimiz Sealed Classlar ve Object – Companion yapılarına değineceğiz.

Inner Class

Kotlinde bir sınıf ya da fonksiyon yazmak için Javada olduğu gibi bir classa ihtiyacımız yoktu; bunun yerine bir .kt uzantılı dosya içinde kodarımızı yazabiliyorduk. Böylece tek dosyada birden fazla sınıf oluşturabiliyoruz. Ayrıca bir sınıfın içinde de sınıf tanımlayabilir ve bu sınıfların görünürlüğü ile oynayabiliriz.

Bir sınıfın içinde bir sınıf tanımladığımızı Kotline belirtirken inner belirtecini kullanırız. Inner classlarda içerideki class üst classın özelliklerine ya da üst sınıfın miras aldığı özelliklere erişebilir. Fakat üst sınıf içerideki sınıfın verilerine erişemez. Sınıflardan nesne üretirken ise, içerideki sınıftan nesne almamız için dışarıdaki sınıfa da ihtiyacımız vardır.

Eğer inner belirtimini yapmazsak sınıflar nested yapıda olur. Bu durumda nesne üretirken iki sınıfa da ihtiyacımız kalmaz. Dışarıdaki sınıf bir namespace görevi görür. Nested classlarda sınıflar birbirlerinden veri almak için nesnelerine ihtiyaç duyar.

Enum Class

Birçok programlama dilinde olduğu gibi Kotlinde de enum yapısı bulunur. Genel kullanım amacı, type-safe yapılar oluşturmaktır. Yani bir senaryonun olası seçenekleri enum classlar ile tanımlanır. Değişkenlere EnumClass.Type syntaxı ile erişilir.

Bir enum tipin, adına name; sırasına ordinal ile erişebiliriz.

Enum Classlara özelllik vererek de kontrol işlemi gerçekleştirebiliriz.

Sealed Class

Kotlinde Enum Classların özelleştirilmiş halidir. Enum classların state, veri tutabilen halleri desek aslında yanlış olmaz. Özellikle farklı durumlara göre değişen datalar için şu anda en uygun çözüm olarak karşımıza Sealed Classlar çıkıyor. Gerçek hayatta en çok kullanıldığı alandan, uzak sunucudan bir veri isterken oluşabilecek senaryolar için bir örnek vermek istiyorum.

Örnek kod için ekrana sadece bilgi yazdırdık fakat state durumlarına göre kullanıcı ekranımızı güncelleyebiliriz. (State loading iken yüklenme animasyonu; success iken veriyi göstermek gibi)

Object

Bazen bir yapıdan sadece bir kez oluşturmak ve birçok yerde aynı nesneyi kullanmak isteriz. Bu tasarım yaklaşımına Singleton Pattern denir. Kotlinde singleton bir yapı oluşturmak için object keywordü yeterlidir. Böylelikle sistemde sadece birkez oluşturulan yapıya sahip olacağız. (Object Declaration)

Bazen ise bir sınıfın ya da bir yapının bir kısmı ile işimiz olur. Örneğin, bir sınıfın içindeki tek fonksiyon ile. Bu gibi durumlarda Object Expression yapısı ile anonymos yapılar oluşturabiliriz.

Companion Object

Class içindeki bir üyeye o classtan nesne almadan erişmek istediğimizde ya da üyenin değerinin nesne başlatılması ile bağlantısı yoksa o üyeyi static tanımlarız. Kotlinde static tanımlamalar için Companion Object yapısı kullanılır.

Kotlindeki diğer sınıf yapıları ile ilgili bahsedeceklerim şimdilik bu kadar. Bir sonraki yazıda görüşmek üzere 🙂

Share

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir