Swift ile değişkenler, veri tipleri, döngüler derken geldik temel bilgilerin en sonuncusuna, yani sınıf (class) kavramına. 

Daha önce de bahsettiğim üzere Swift ile header kavramı ortadan kalkıyor ve Java gibi sınıflar tek dökümanda toplanıyor. Yeni bir swift dosyası oluşturduğunuzda Xcode eskisinin aksine .h ve .m dosyaları yerine sadece bir .swift dosyası oluşturuyor ve istenirse her sınıf bu şekilde tanımlanabiliyor.

class Sekil {
    var kenarsayisi = 0
    func toString() -> String {
        return "\(kenarsayisi) köşeli bir şekil"
    }
}

Yarattığımız sınıfı kullanmak istersek alışık olduğumuz Objective-C yöntemleri olan alloc ve init yerine Java/C karışımı bir şekilde obje yaratabiliyoruz

var yedigen = Sekil()
yedigen.kenarsayisi = 7
yedigen.toString()

Fakat bu çok genel bir sınıf olduğu için bunu özelleştirmemiz gerekebilir. Biz de örneğimize hem isim değişkenini ekleyelim hem de kare ile genişletelim ekleyelim

class Sekil {
    var kenarsayisi: Int = 0
    var isim: String

    init(isim: String) {
        self.isim = isim
    }
    func toString() -> String {
        return "\(kenarsayisi) köşeli \(isim) isimli bir şekil"
    }
}
class Kare: Sekil {
    var kenarUzunlugu: Double

    init (kenar: Double, isim: String) {
        self.kenarUzunlugu = kenar
        super.init(isim)
        kenarsayisi = 4  //Sekil sınıfındaki bilgilere ulaşım
    }

    func alan() -> Double {
        return kenarUzunlugu * kenarUzunlugu
    }

    //Bu fonksiyon eskisinin üzerinde çalışacağı için override olduğunu bildirmemiz lazım
    override func toString() -> String {
        return "Kenar uzunluğu \(kenarUzunluğu) olan bir kare"
    }
}

Kare nesnesini de benzer bir şekilde kullanacağız, ancak yaratırken doğru bilgileri girmemiz bu sefer şart

let kare = Kare(kenar: 3.7, isim: "İlk Karem")
kare.alan()
kare.toString()

Böylece temel kavramları bitirdik. Bir sonraki dizide neler olacak henüz karar vermedim, ama Swift’e bir süre ara vermiş oluyoruz bu yazıyla 🙂

Barış Altop
Barış Altop
Matematik tutkusunu yazılım sanatına dönüştürmeyi hedef seçmiş, bilgisayar mühendisliği doktora öğrencisi. Biraz Apple tutkunu, ama teknoloji düşkünü yazılımcı.