Temel Java 4. Gün: Sınıflar, Nesneler

Sınıflar

Sınıfları nesneler tasarlamaya/oluşturmaya yarayan planlar gibi düşünebiliriz.
Bir bina için teknik proje (farklı bir ismi varsa bilmiyorum.) ne ise, nesnelerimiz hatta genel yazılım tasarımımız için sınıflar da o derece önemlidir.

Eğer sınıflar hakkında daha fazla teorik bilgi/örneğe ihtiyaç duyarsanız önceki serilerden sınıflar ve nesneler kısımlarına bakabiliriz.
Böylelikle diller arasındaki benzerliği de keşfetmiş olursunuz. Bağlantılar;

Temel C++ - 4. Gün: Sınıflar, Nesneler
Temel Python - 6. Gün: Nesneler ve Sınıflar
Temel C# - 5. Gün: Sınıflar

Özetlemek gerekirse temel olarak sınıfları dört ana parçaya ayırabiliriz. Bunlar;

  1. Üye değişkenler (özellikler olarak da adlandırılabilir.)
  2. Üye metodlar (davranışlar olarak da adlandırılabilir.)
  3. Yapıcı metod (constructor)

Son madde olan yapıcı metodu üye metodlar içinde de sınıflayabiliriz.

Bu metodu özetle nesne oluşturulduğunda çağrılan metod olarak tanımlayabiliriz.

Not: Java nesnelerin tam olarak ne zaman yok edildiğini/edileceğini tam olarak kestiremediğimiz çöpçü (garbage collector) altyapısına sahip bir dil olduğu için yıkıcı metod veya tam olarak eş değeri bildiğim kadarıyla bu dilde bulunmuyor.

(finalize, dispose gibi metodlar mevcut fakat aynı işi gördüğünden veya aynı mantığa sahip olduğundan emin olmadığım için onlardan bahsedemiyorum.)

Temel sınıf tanımlanışı;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
erisimBelirteci class sinifIsmi {
// üye değişkenlerimiz (özellikler)
erisimBelirteci veriTipi degiskenAdi;
.
.
.
erisimBelirteci veriTipi degiskenAdi;

// üye metodlarımız (davranışlar)
erisimBelirteci dondurecegiVeriTipi metodAdi(parametre listesi) {
// metod içeriği
}
.
.
.
erisimBelirteci dondurecegiVeriTipi metodAdi(parametre listesi) {
// metod içeriği
}

// yapıcı metodumuz
erisimBelirteci sinifIsmi(){
// yapıcı metodumuzun içeriği
}
}

Şimdi yukarıdaki tanımlanışı örnek alarak basit bir kedi sınıfı oluşturalım;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.isiksistem;

// public erişim belirteçli Kedi isimli sınıfımız
public class Kedi {

// üye değişkenlerimiz (özellikler)
// private olduğu için sadece bu sınıfın metodları
// tarafından erişilebilirler.
private int agirlik;
private String isim;

// üye metodlarımız (davranışlar)
public void agirligiBelirle(int kg) {
this.agirlik = kg;
}

public void ismiBelirle(String isim) {
this.isim = isim;
}

public int agirligiGetir() {
return this.agirlik;
}

public String ismiGetir () {
return this.isim;
}

// yapıcı metodumuz
public Kedi() {
System.out.println("Bir kedi nesnesi oluşturuldu.\n");
}
}

Nesneler

Nesneleri sınıflar aracılığı ile oluşturulan özelliklere (değişkenlere) ve davranışlara (metodlara) sahip yapılar olarak düşünebiliriz.

Örneğin yukarıdaki Kedi sınıfımızdan bir nesne oluşturalım;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.isiksistem;

public class Main {

public static void main(String[] args) {
// Tekir adında Kedi nesnemiz
Kedi Tekir = new Kedi();

// nesnemizin özelliklerini
// yine nesnemizin metodları aracılığı ile belirledik.
Tekir.ismiBelirle("Tekir");
Tekir.agirligiBelirle(10);

// bilgilerimizi yazdırıyoruz.
System.out.print(Tekir.ismiGetir() + " isimli " +
Tekir.agirligiGetir() +
" kg ağırlığında bir kedi nesnemiz mevcut.\n");
}
}

Çıktımız şu şekilde olacaktır;

1
2
3
Bir kedi nesnesi oluşturuldu.

Tekir isimli 10 kg ağırlığında bir kedi nesnemiz mevcut.

Sınıflar ve nesnelerden şimdilik bu kadar. Sonraki bölümde görüşmek üzere.

Sonraki Bölüm: Paketler, Kalıtım, Arayüzler:
Temel Java - 5. Gün: Paketler, Kalıtım, Arayüzler