Sınıflar

Sınıf Oluşturma

Sınıflar diğer birçok dildeki gibi class terimi ile oluşturulur.
1
class insan {
2
String isim;
3
int yas;
4
double kilo;
5
}
6
7
main() {
8
insan kisi1 = new insan();
9
}
Copied!
Yukarıda bir insan sınıfı oluşturduk. Bu sınıf isim, yas ve kilo gibi özellikleri vardır. Tıpkı bir insanda bulunan özellikler gibi.
Hemen aşağısında, kisi1 adından insan sınıfında bir nesne ürettik. Artık kisi1 nesnesi bir insan oldu 😉
Peki kisi1'in böyle özellikleri var ama bu özelliklerin değerleri yok mu? Tabi ki olacak.
1
class insan {
2
String isim = "Kaan";
3
int yas = 23;
4
double kilo = 78.2;
5
}
6
7
main() {
8
insan kisi1 = new insan();
9
}
Copied!
Artık kisi1 tamamen insan oldu diyebiliriz. print(kisi1.isim); yazarak kisi1'in isim değişkenini yazdırabiliriz. Ama olaya biraz dikkat ettiğimizde değerlerin kisi1'e ait değil de insan sınıfında ait olduğunu görebiliriz. Yani insan sınıfı için oluşturulmuş nesnelerin varsayılan değerini girmiş olduk. Çözümümüz Constructors (Yapıcılar);

Constructors (Yapıcılar)

Yapıcılar bir sınıf nesnesi üretirken değerlerin tanımlanmasında kullanılır. Örneğimiz:
1
class insan {
2
String isim;
3
int yas;
4
double kilo;
5
6
insan(String isimGiris, int yasGiris, double kiloGiris) {
7
isim = isimGiris;
8
yas = yasGiris;
9
kilo = kiloGiris;
10
}
11
}
12
13
main() {
14
insan kisi1 = new insan("Kaan", 23, 78.2);
15
print(kisi1.isim);
16
}
Copied!
Yapıcılar sınıfların içerisine fonksiyon olarak tanımlanır. Bir fonksiyonun yapıcı fonksiyon olması için sınıf ile aynı isme sahip olması gerekir. Yani insan sınıfının yapıcısı insan() fonksiyonu olmalıdır. Yapıcı fonksiyonlardaki mantık, dışarıdan alınan değerleri sınıf içerisindeki değişkenlere yerleştirmektir. Yapıcı fonksiyondaki parametrelerin isimleri ile sınıf değişkenlerinin isimlerinin aynı olmadığına dikkat çekmek isterim. Bu işlemi this işaretçisi ile de yapabiliriz.

This işaretçisi nedir?

This işaretçisi, sınıfa özel tanımlı değişkenleri kullanabilmeyi sağlayan işaretçidir. Yapıcımızı bir de this ile oluşturalım.
1
insan(String isim, int yas, double kilo) {
2
this.isim = isim;
3
this.yas = yas;
4
this.kilo = kilo;
5
}
Copied!
Yukarıdaki this şu işlemi yapıyor. this = bu. isim parametresinden gelen değer, this.isim ile bu sınıfın isim değişkenine atansın.

This ile Yapıcı oluştururken Kolay Yöntem

1
insan(this.isim, this.yas, this.kilo) {}
Copied!
Yukarıdaki yapıcıyı oluştururken parametreleri this işaretçisi ile yazdık. Böylece atama işlemine gerek kalmadan parametreler üzerinden atanmasını sağladık.

Sınıf Nesnesi Oluştururken Belirli ve Varsayılan Yapıcı Parametresi Girme

Fonksiyonlar konusunda gördüğümüz gibi parametrelere değer yollarken hangi değişkene yollayacağımızı seçebiliriz.
1
class insan {
2
String isim;
3
int yas;
4
double kilo;
5
6
insan({String isim = "Kaan", int yas = 23, double kilo = 78.2}) {
7
this.isim = isim;
8
this.yas = yas;
9
this.kilo = kilo;
10
}
11
}
12
13
main() {
14
insan kisi1 = new insan(isim: "Erkay", kilo:78.2);
15
}
Copied!
main fonksiyonuna baktığımızda,
kisi1 adında insan nesnesi oluştururken yapıcı fonksiyona sadece isim ve kilo değerlerini yolladık. yas değişkeninin değeri yapıcı fonksiyonda varsayılan değer aldı.

İsimlendirilmiş Yapıcılar

Eğer sınıfımıza birden fazla yapıcı eklemek istiyorsak isimlendirilmiş yapıcıları kullanırız. Örnek:
1
class insan {
2
String isim;
3
int yas;
4
double kilo;
5
insan(this.isim, this.yas, this.kilo);
6
7
insan.bos() {
8
this.isim = "Boş";
9
this.yas = 0;
10
this.kilo = 0;
11
}
12
}
13
14
main() {
15
insan kisi1 = new insan.bos();
16
}
Copied!
insan sınıfımız hem insan adlı yapıcı fonksiyona sahip, hem de insan.bos adında isimlendirilmiş yapıcı fonksiyona sahip. insan.bos yapıcı fonksiyonumuz insan sınıfından üretilen nesnede kullanıldığında değişkenlere boş bilgiler giriyor.
main fonksiyonumuzda nesne üretimini gözlemlediğimizde, nesnenin insan.bos() yapıcı fonksiyonu ile üretildiğini görüyoruz.
Last modified 1yr ago