Şu na kadarki bütün programlarımızda sınıf(class) yapısını kullandık. Fakat tam olarak sınıfların ne olduğunu ve neler yapabileceklerini anlatmadık. Sınıf yapısının en onemli ozelliği yeni bir değişken türü tanımlıyor olmasıdır. Şu ana kadar programlarımızı tanımlamak amacıyla çeşitli sınıflar tanımladık. Bu bölümde sınıfları değişken türü olarak tanımlamasını ve kullanmasını göreceğiz.
Sınıf (Class) deyince herhangi bir nesnenin genel tanımlanmasını anlıyoruz. Bu sınıflardan değişkenler tanımandıklarında nesneleri oluştururlar. Örneğin kalem dediğimizde genel bir sınıfı anlatıyoruz. Alinin cebindeki kırmızı kalem ise belirli bir nesnedir. Sınıfın genel tanımı şu şekilde yapılabilir :
Class sınıfın_ismi
{
//sınıfa ait değişken listesi
değişken_türü değişken_ismi;
değişken_türü değişken_ismi;
.........
//sınıfa ait metot listesi
degişken türü metotadı(metod girdi değişken listesi)
{
//metodun içindeki hesaplanan işlemler
return çıktı_değişkeni;
}
..............
}
Sınıf (class) tanımında metodların bulunması şart değildir. Bulundukları takdirde bunlar o sınıfa ait veya sinifin üyesi metodlar olarak düşünülür. İlk sınıf örneği olarak içinde hiçbir metodun yer almadığı bir kutu sınıfı tanımlıyalım. Bir kutuyu üç geometrik boyutu (eni,boyu,yüksekliği) cinsinden tanımlayabiliriz.
Class Kutu
{
double en;
double boy;
double yukseklik;
}
Üstte bahsettiğimiz gibi sınıf yeni bir değişken türü yaratır. Yukardaki sınıfın yarattığı değişken türünün adı Kutu’dur. Kutu değişkenini başka bir proğramda tanımlarken budeğişken türünden bir nesne yaratılır. Örneğin
Kutu benimkutum= new Kutu();
Benimkutum kutu türünde tanılanmış bir nesnedir. Bu nesnenin kendisinin de en boy ve yükseklik olmak üzere üç alt değişkeni mevcuttur. Eğer bir programda benimkutum değişkeni tanımlanmışsa, bu değişkenin alt degişkenlerine şu şekilde ulaşılabilir :
Benimkutum.en=1.0;
Şimdi Kutu değişkenini kullanacak ufak bir kututestı sınıfı oluşturalım ve Kutu sınıfını bu sınıfta kullanalım.
import java.io.*;
class Kutu
{
double en;
double boy;
double yukseklik;
}
class kututesti
{
public static void main(String args[])
{
Kutu benimkutum=new Kutu();
double hacim;
benimkutum.en=10.0;
benimkutum.boy=20.0;
benimkutum.yukseklik=30.0;
hacim=benimkutum.en*benimkutum.boy*benimkutum.yukseklik;
System.out.println("Benim kutumun hacmi : "+hacim);
}
}
Bu programın adının kututesti.java olması zorunludur. Çünki ana metod(main) kututesti sınıfında tanımlanmıştır. Fakat programı javac terimiyle bilgisayar diline çevirdiğimizde iki tane sınıf(class) dosyasının oluştuğunu görürüz. Birisi Kutu.class diğeride kututesti.class. Ana program kututesti olduğu için bu programın işletimi
java kututesti
deyimini kullanarak yapılır. Program işletildiğinde
Benim kutumun hacmi : 6000.0
Sonucunu verir. Benim kutum nesnesi yaratıldığında bilgisayar belleğinde benimkutum için nir adres tanımlanır. New Kutu() deyimi verildiğinde ise bilgisayrın belleginde en,boy ve yükseklik değişkenleri için yer ayrılır ve bu yerlerin adresleriyle benim kutum nesnesinin adresi arasında bağlantı sağlanır. Bunu grafik olarak anlatalım :
Deyim Bilgisayar belleği
Null
Kutu benimkutum;
Benimkutum
Yukseklik
Boy
En
Benimkutum=new Kutu();
Benimkutum
Not null terimi bilgisayar beleğinin boş olduğunu gösterir. Yukardaki grafikte ilk olarak
Kutu benimkutum; tanımı yapıldığında bilgisayar belleğinde 1 byte boyutunda bir yer tanımlar. Ve bu yere bos anlamına gelen null degerini yükler. İkinci durumda ise (benimkutum=new Kutu() tanımında) benimkutum nesne adresindeki kutuda en,boy,yükseklik değişkenlerinin adresleri kaydedilmiştir. Bu adres aracılığıyla en boy ve yükseklik değişkenlerine benimkutum degişkeni üzerinden ulaşılabilir. Diğer deyimle en,boy,yükseklik benim kutum nesnesinin alt değişkenleridir.