Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

readme.md

Sınıf Kavramının Temelleri

Şu ana kadar yaptığımız bütün örneklerde sınıfları gördük. Fakat o örneklerde sınıflar yalnızca main() metodunu kapsamak amacıyla kullanılmıştı. Öte yandan, sınıf kavramı bununla sınırlı değildir.

İlk olarak, her bir sınıfın yeni bir veri türü tanımladığını belirterek işe başlamalıyız. Bir kere tanımlandıktan sonra, bu türde yeni nesneler oluşturmak için sınıfları kullanabiliriz. Bu yüzden diyebiliriz ki, sınıflar nesneler için bir şablon niteliğindedir.

Sınıf ve Nesne Benzetmesi

Bir sınıf oluşturduğumuz zaman aslında yeni bir veri türünü taslak olarak tanımlamış oluruz. Sınıfın içinde tanımladığımız değişkenlere o sınıfın alanları (fields) denir. Sınıflar ayrıca davranışlar tanımlayabilir. Bu davranışlara ise sınıfın metotları (metod) denir. Birlikte, metotlar ve alanlar bir sınıfın üyelerini (members) oluşturur.

Sınıfın örneği alınarak yeni bir nesne oluşturulduğunda, sınıfın sahip olduğu alanların bir kopyası nesnede tutulur. Türleri aynı olsa da her bir nesnenin alanları birbirinden bağımsızdır.

Basit Bir Sınıf Örneği

Basit bir sınıf tanımlayarak işe başlayalım.

class Box
{
	double width;
	double height;
	double depth;
	
	boolean isCube()
	{
		// returns state of the box. If it is an box, returns true.
	};
}

Yukarıda, Box adında yeni bir sınıf tanımladık. Bu sınıfın 5 alanı vardır: genişlik ve yükseklik. Ayrıca her sınıfın ortak davranışlarını da tanımlayabiliriz. Örnekte her box için küplük kontrolü yapılmasına yarayan; isCube adlı bir fonksiyon da ekledik. Her yeni sınıfın yeni bir tür tanımladığını daha önce belirtmiştik. Fakat unutmayın, sınıf tanımlamak yeni bir nesne oluşturmaz, sadece nesne şablonu belirtmiş olur.

Sınıfın örneğini alarak yeni bir nesne oluşturmak için new deyimini kullanırız:

Box box1 = new Box();

Burada Box türünde yeni bir nesne oluşturduk ve bu nesneyi yine Box türünde bir değişkene atadık. Bu kodu çalıştırdığımız zaman, Box şablonuna uygun olarak bir nesne oluşturulur ve hafızaya kaydedilir. Burada sınıf ile nesne kavramları arasındaki farkı iyi anlayalım: Box bir sınıf, box1 ise bu sınıfa göre oluşturulmuş bir nesnedir.

Her nesnenin alanlarının birbirinden bağımsız olduğunu söylemiştik. Şimdi bunu inceleyelim:

Box matchBox = new Box();
Box shoeBox = new Box();

matchBox.width = 100.0;
shoeBox.width = 150.0;

Burada Cake türünde iki farklı nesne oluşturduk, genişliklerine farklı değerler verdik. Buna göre matchBox nesnesinin genişliği 100 iken; shoeBox nesnesinin genişliği 150'dir. İki ayrı nesnenin alanları bağımsız olduğu için, birinin alanını değiştirdiğimizde diğeri bundan etkilenmez.

Sınıfın içerisine yazdığımız isCube metodu da oluşturduğumuz her nesnenin bir alanı gibi çağırılarak kullanılır.

matchBox.isCube();

şeklindeği çağrı bize bu nesnenin küp olup olmadığını döndürür.

Peki anlattıklarımıza göre aşağıda verdiğimiz cümlelerin hangileri doğrudur?

  • Sınıflar aslında birer nesneyi temsil ederler.
  • Bir sınıftan üretilmiş nesnelerin farklı alanları olabilir.
  • Nesneleri oluştururken tüm alanlarının değerlerini vermemiz şarttır.

Cevaplar:

  • Hayır, sınıflar kendi başına bir nesne temsil etmezler. Sınıflardan nesneler üretilir.
  • Hayır, bir sınıftan üretilen nesnelerin alanları aynıdır.
  • Hayır, özel bir durum yok ise nesne üretilirken içlerindeki tüm alanlar boş, null yada default olabilir.

Kaynaklar: