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
}
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)
}
}
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 :
Öğrendiklerimizi koda dökelim.
var ogrenci1=ogrenciSinifi()
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
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
var ogrenci1=ogrenciSinifi()
ogrenci1.age
ogrenci1.name
ogrenci1.number
ogrenci1.bilgileriGoster()
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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
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.
32