Kotlin Nesne ve Sınıf Kavramı

Merhaba Arkadaşlar, Mobilhanem.com sitemiz üzerinden anlattığımız Kotlin Dersleri yazı serimizde bu dersimizde Kotlin Nesne ve Sınıf Kavramı kullanımını ve methodlarını anlatacağız.

Önceki yazılarımızda Map kullanımından bahsetmiştik.  O dersimizi okumadıysanız öncelikle o dersimizi okumanızı tavsiye ederim. Derse gitmek için tıklayınız.

Öncelikle dersimize Nesne Tabanlı Programlama yani OOP kavramını tanıyarak başlayacağız.

 

Nesne Tabanlı Programlama Nedir ?

Nesne tabanlı programlama tamamen nesnelerden oluşan yapılardır.

Nesne tabanlı programlama nesnelerin özellik ve işlevlerini temel alarak yeni kavramlar geliştiren yapılardır.

Nesne özelliklerinin kavram olarak özellik(properties) denilmektedir.

 

Yukarıdaki tabloda anlatılanların kafada kalması için günlük hayattan örneklerle desteklenmiştir.

Nesneye yönelik bir dil olan Kotlin’i öğrenmek adına nesne ile ilgili temel kavramları bilmemiz gerekir.

 

Temel Kavramlar

Sınıf(Class)

Sınıflar nesne özelliklerine sahip değişken ve metodların bulunduğu yapılardır. Sınıflar nesne tabanlı programlama kullanan her programlama dilinde kullanılabilir. Sınıf ile nesne aynı yapılar değildir. Sınıf nesne özelliklerini tutan soyut (abstract) ifadelerdir.  Sınıf ve nesne birbirine bağlıdır ama aynı kavramlar değildir. Bunu unutmamak gerekir.  🙂

Nesne(Object)

Sınıf ile nesne arasında bir ilişki bulunduğunu yukarıda belirtmiştik. Sınıflar soyut ifadelerdir. Gündelik hayatta evlerin planlarına benzemektedir. Sınıflar gündelik hayatta planlar ise nesneler ise o planları takip ederek inşa edilen eve benzemektedir. Birden fazla ev yapmak ise bir sınıfın birden fazla nesnesi olacağı anlamına gelmektedir.

Nokta(.) Operatörü

Programın içerisinde bulunan sınıflara ait özellikleri ve metotları kullanabilmek için bir sınıftan bir nesne oluşturmamız gerekmektedir. Nesne ile sınıfın özellik ve metodlarına erişebilmek için nokta(.) operatörü kullanılmaktadır. Nokta operatörü nesne ile birlikte kullanılır.

this Anahtar Sözcüğü

this anahtar sözcüğü Javada da kullanılmaktadır. İşaret etmek anlamında kullanılır. Sınıf içerisinde kullanılır ve nesneyi oluşturduktan sonra oluşan nesneyi ifade etmeye yarar. İlerleyen derslerimizde bu kavramı daha da detaylı bir şekilde anlatacağız. Şu anda nesne tabanlı programlamada kullanacağımız kavramlara aşinalık olması açısından kısaca bahsediyoruz.

Özellikler(properties)

Sınıf ve nesne ile ilişkili olan bir kavramdır. Nesnelerin özelliklerini ifade etmek için kullanılmaktadır. Bir sınıf oluşturulduğunda: Değişkenler, Sabitler, Metotlar ve Sınıfların içinde tanımlanmış sınıflar yani İnner Class oluşturulur. Saymış olduğumuz bu dört kavramda nesne özelliğine aittir.

Metotlar(Methods)

Daha önceden bu konu ile ilgili ders yapmıştık. Bu derse linkten ulaşabilirsiniz. Metodlar uygulamalarda belirlenmiş işlevleri ve görevleri yapmak için dizayn edilmiş programcıklardır. Metod tanımlamak için fun anahtar sözcüğü kullanılır. Nesnelerin işlevlerini belirlemek ve nasıl kullanılacaklarını göstermek için metodlar kullanılır. Burada kısaca bir tekrar verdik. Daha fazla bilgiye yukarıda belirttiğimiz linkten ulaşabilirsiniz.

Arayüz(Interface)

Nesne yönelimli programlama dillerinde en soyut kavramlar arayüzlerdir diyebiliriz.  Sınıflar soyuttur fakat metodlar belirli bir işi yerine getirmek üzere tasarlandıkları için soyut değildir. Arayüzlerde ise nesnelerin özellikleri ve işlevleri sadece liste olarak tanımlayabildiğimiz kavramlardır. Kısacası Arayüzlerde nesnelere hangi özellik ve işlevler verilecekse onların sadece sınıf isimleri belirtilir.

Örnek olarak kitap nesnesi için bir arayüz aşağıdaki gibidir :

Arayüzler nesnelerin hem özelliklerini hem de işlevlerini tuttuklarını görmektesiniz. Bu yapıyı ilerleyen derslerde daha ayrıntılı bir şekilde işleyeceğiz.

Kalıtım(Inheritance)

Kalıtım gündelik hayattaki kullanımdan esinlenerek oluşturulmuş bir yapıdır. Nesneler kalıtım özelliğini kullanarak özelliklerini başka nesnelere aktarabilirler. Kalıtım kullanılarak oluşturulan bir sınıftan yeni sınıflar türetilebilir. Kotlin dilinde tüm sınıflar Any sınıfından türetilerek elde edilmiştir. Kalıtım kullanılarak kod karmaşasından kurtularak daha verimli geliştirme yapılabilir.

Soyutlama(Abstract)

Kalıtım yoluyla alınan özelliklerin türetilen sınıf içinde override edilerek farklı özellikler kazandırılmasıdır. Kotlin’de soyutlama iki farklı şekilde yapılmaktadır: Abstract sınıflar ve Interface kullanılarak soyutlama işlemi yapılabilir.

Neden Nesne Tabanlı Programlama Öğrenmeliyim ?

  • Java, C++, C# ve birçok daha dilde kullanılır. Nesne tabanlı programlamayı öğrenmek birçok dilin temel çalışma yapısını kolayca kavramamızı sağlar.
  • Nesne tabanlı programlama ile daha büyük yazılım projeleri daha kolay şekilde tasarlanabilir.
  • Kod kalabalığından kurtarır ve daha sade bir şekilde kod yazmamızı sağlar.
  • Uygulamaya ait kodların modüler olarak kullanılmasını sağlar.
  • Bir sınıfa ait farklı ve birden fazla nesne oluşturulabilir. Kod tekrarından kaçınılır.

Evet arkadaşlar Nesne Tabanlı programlama mantıksal olarak anlatıldıktan sonra bundan sonraki bölümde ise kodlama örnekleriyle konunun derinine ineceğiz.

 

Sınıf Oluşturmak

Sınıflar, nesneleri örneklendirebileceğimiz bir yapı planlarına benzemektedir. Java, C++ ve C# dillerinde olduğu gibi Kotlin’de de sınıf oluşturmak için class anahtar sözcüğü kullanılır.

class sinifAdi{
    
    // Kodlar
}

 

Değişken ve Metot Oluşturmak

Değişkenler nesne ile ilgili verileri tutacağımız alanlardır. Metotlar nesnelerin işlevlerini belirlediğimiz alanlardır. Aşağıdaki örnekte sınıf içerisinde 3 adet değişken ve 1 adet metot kullanılmıştır. Değişkenler nesnenin isim, yaş, numara bilgilerini tutarken, metod ise bu değerleri ekrana yazdırmak için kullanılır.

 

class ogrenciSinifi{
    
    var name : String = "Halil Özel"
    var number: Int= 1234
    var age: Int = 21
    
    fun bilgileriGoster(){
        
        println("name : "+name)
        println("number : "+number)
        println("age : "+age)
    }
}

ogrenciSinifi adında bir sınıf oluşturduk. Sınıfın içerisine name, number ve age özellikleri ile birlikte bilgileriGoster() metodu tanımlanmıştır.

Nesne Oluşturmak

Sınıfların soyut kavramlar olduğunu daha önceden belirtmiştik. Sınıfların kodlarını etkili bir hale getirmek için nesne oluşturmalıyız. Kotlin dilinde nesne oluşturmak için aşağıdaki yapı kullanılır :

var nesneAdi=SinifAdi()

Öğrendiklerimizi koda dökelim.

var ogrenci1=ogrenciSinifi()

ogrenci1 adında bir nesne oluşturduk. Bu işlemden sonra ogrenci1 nesnesi ogrenciSinifi icerisinde bulunan metot ve özelliklere erişilebilir hale getirdik. Nesnenin sınıf içerisindeki özelliklerine erişilebilmesi için nokta operatörü kullanılır.

    ogrenci1.age
    ogrenci1.name
    ogrenci1.number

Son olarak tüm kodları toplayı bir hale getiriyoruz.

class ogrenciSinifi{

    var name : String = "Halil Özel"
    var number: Int= 1234
    var age: Int = 21

    fun bilgileriGoster(){

        println("name : "+name)
        println("number : "+number)
        println("age : "+age)
    }
}

fun main(args: Array<String>) {


    var ogrenci1=ogrenciSinifi()
    ogrenci1.age
    ogrenci1.name
    ogrenci1.number
    ogrenci1.bilgileriGoster()
}

Kodumuzun çıktısı ise aşağıdaki gibidir :

name : Halil Özel
number : 1234
age : 21

Bu dersimde anlatmak istediklerim bu kadar. Bir sonraki dersimde Yapıcılar ve sınıflar ile ilgili örnekleri anlatacağız.

Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.

Tüm Kotlin Dersleri için tıklayınız.

 

50

Halil Özel

İstanbul Sabahattin Zaim Üniversitesi Bilgisayar Mühendisliği 3. sınıf öğrencisiyim. Üniversitede Java, C, C++ programlama dillerini öğrendim. Bu diller ile çeşitli uygulamalar geliştirdim. Kullanıcı arayüzü olarak Java'nın Swing API'si üzerinde çalışmalar yaptım. Python ve PHP dillerine giriş yaptım. Siber güvenlik alanına ilgiliyim. Android​ Uygulamalar geliştiriyorum. Kotlin ve Swift dillerini öğreniyorum. Linux işletim sistemini başlangıç seviyesinde biliyorum. Boş zamanlarımda kitap ve mesleki dergi okuyorum. Teknoloji ve bilişim bloglarını takip ediyorum. Medium da yazılım ile ilgili blog yazıları yazıyorum.
Kariyerime Android Developer ve iOS Developer olarak devam etmek istiyorum.

2 Yorum

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?