Sınıf Yapıları – III

Bundan önceki iki yazımızda sınıf yapılarına değinmiştik. Bir sınıfa dair tanımlamanın ne olduğu, sınıfların hangi parçalardan oluştuğunu, bir sınıftan nesne yaratmayı, this anahtar sözcüğünü ve nesne yaratırken izleyebileceğimiz alternatif yöntemleri işlemiştik.

Methodlar

Sınıflarla ilgili şimdi de sınıf içerisindeki methodların kullanımına değineceğiz. Öncelikle KaraAraclari sınıfımızın son halini buraya tekrar ekleyelim.

public class KaraAraclari {

	public int koltukSayisi;
	
	public String renk;
	
	public KaraAraclari() {
		System.out.println("Yeni bir araç yaratıldı (Parametresiz)");
	}
	
	public KaraAraclari(int kacKoltuk) {
		System.out.println("Yeni bir araç yaratıldı (1 parametreli)");
		this.koltukSayisi = kacKoltuk;
	}
	
	public KaraAraclari(int koltukSayisi, String renk) {
		System.out.println("Yeni bir araç yaratıldı (2 parametreli)");
		this.koltukSayisi = koltukSayisi;
		this.renk = renk;
	}

	public void hareketEt() {
		System.out.println("Hareket başladı");
	}

	public void dur() {
		System.out.println("Hareket bitirildi");
	}

	public void yonVer() {
		System.out.println("Yön verildi");
	}

}

Tekrar belirtmek gerekirse sınıfımız field, constructor ve method gruplarından oluşmaktadır. Bunları yukarıdaki koda bakarsanız yukarıdan aşağıya sıralı olarak göreceksiniz. Görüleceği üzere methodlarımız şu imzalar ile sınıfımızda bulunmaktadır.

  • hareketEt()
  • dur()
  • yonVer()

Hatırlarsanız bu sınıftan nesne(ler) yaratırken constructor methodlarımıza parametre geçtiğimiz örneklerimiz olmuştu. Bu parametreler sayesinde sınıf içerisindeki koltukSayisi ve renk fieldlarına değer atamış yani onları initialize etmiştik. Birbirinden farklı nesneler yaratıp, onlara farklı farklı isimler vermiştik. Bu yarattığımız nesneleri gerçek hayatta düşünürsek; tamamı hereket eden, durabilen ve yön değiştirebilen nesneler olurdu. Peki javada bu nesneleri nasıl hareket ettirir, nasıl durdurur ve nasıl yönlendirirdik? Bu sorunun kısa cevabı “Method çağrısı yaparak” olurdu. Yani methodlar belirli bir işlevi yerine getirmek üzere yazılmış kod bloklarıdır. TestClass sınıfı içerisinde bunu uygulamalı olarak görelim.

İsmi arac olan KaraAraclari tipinde bir nesne yaratacağız. Bunu yaparken parametresiz constructor kullanıyoruz. Bu tercihimizin tek sebebi kullanım kolaylığı. Nesneyi yarattıktan sonra arac. yazıp beklerseniz veya arac. yazıp ctrl+boşluk tuş kombinasyonunu kullanırsanız aşağıdaki gibi bir menünün açıldığını göreceksiniz. Bu özelliğin ismi auto-complete yani otomatik tamamlamadır.

Bu menü, sınıf ile ilgili olarak erişebileceğimiz field ve methodları listelemektedir. Bunlardan bazıları java tarafından bize verilmiştir. Bunların detayına değinmeyeceğim. Ancak listeye baktığınızda tanıdık isimler de göreceksiniz. Burada az evvel nasıl kullanacağımıza dair cevap aradığımız methodların da listelendiğini görüyoruz. O halde bunlardan bir tanesini seçelim ve TestClass sınıfımızı şu hale getirelim.

public class TestClass {

	public static void main(String[] args) {
		
		KaraAraclari arac = new KaraAraclari();
		
		arac.hareketEt();

	}
}

Yukarıdaki kodu çalıştırdığımızda şu şekilde bir çıktı elde ederiz.

Pekala, başka bir methodu daha çağırabiliriz. Hareket ettirdiğimiz aracımıza yön verelim ve arkasından durduralım.

public class TestClass {

	public static void main(String[] args) {
		
		KaraAraclari arac = new KaraAraclari();
		
		arac.hareketEt();
		arac.yonVer();
		arac.dur();

	}
}

Peki bu defa çıktımız nasıl olacaktır? Çalıştırmadan önce tahmin etmenizi öneririm. Böylece aktif olarak kodu takip etmiş olacaksınız. Bu programın çıktısı aşağıdaki gibi olacaktır.

Özet olarak bir method çağrısı yapmak için, önce değişkenimizin (nesne, obje, object, instance) ismini yazıyoruz ve arkasından çalıştırmak istediğimiz methodun ismini yazıyoruz.

Şimdi sınıfımıza iki ayrı method daha ekleyeceğim. Bunların içerikleri aşağıdaki gibidir.

	public void gaz() {
		System.out.println("Gaz verildi");
	}
	
	public void fren() {
		System.out.println("Fren yapıldı");
	}

Bu iki methodu ekleme sebebim hareketEt() ve dur() methodlarını biraz daha zenginleştirmektir. Bu sayede hem method içerisinden method çağrımı yapmayı, hem de this anahtar sözcüğü ile methodları bir arada kullanmayı gözlemleyeceğiz.

Hatırlarsanız this sözcüğünü daha evvel  “Bu sınıfın içerisindeki” anlamıyla bağdaştırmıştık. Hareket ettireceğimiz kara aracında gaza basmamız, durduracağımız kara aracında ise frene basmamız gerekir. O halde bu methodları birbirleriyle ilişkilendirmemiz gerekiyor. Şu şekilde bir yaklaşım sergileyebiliriz; hareketten (Hareket başladı) evvel gaza basılmalı ve durma eyleminden (Hareket bitirildi) önce fren yapılmalıdır. O halde ben hareketEt() methodunu tetiklediğimde ekrana önce “Gaz verildi” yazmalı ve sonrasında “Hareket başladı” yazmalıdır. dur() methodu için de benzer bir yaklaşımı kullanabiliriz. Bu iki methodumu da aşağıdaki gibi düzenliyoruz.

	public void hareketEt() {
		this.gaz();
		System.out.println("Hareket başladı");
	}

	public void dur() {
		this.fren();
		System.out.println("Hareket bitirildi");
	}

Bütün methodlarımız KaraAraclari sınıfımızn içerisinde olduğundan, diğer methodları çağırırken yine this anahtar sözcüğüne başvururuz. Burada da bunun bir örneğini görmüş olduk. TestClass sınıfımızı bu şekilde çalıştırdığımızda oluşacak çıktıya gelin birlikte bakalım.

Sınıflar ve methodlar ile ilgili olarak şimdilik bu noktada bitirebiliriz. Bir sonraki yazımız sınıf yapılarının nispeten devamı olacak nitelikte bir yazı olacak. Ancak javadaki bir diğer temel kavram ile ilgili olacağından ayrı bir yazı olarak yayınlamaya karar verdim. Bir sonraki yazımızda görüşmek üzere.

Leave a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir