Konular

Java Da Classlar Ve Yapılandırıcılar

Constructors yapıcılar

Yapıcının (constructor) ne yaptığını anlamak için sınıfın (class) ne olduğunu anımsamak gerekir. Sınıfın yalnızca bir tür-adı (cins-isim) olduğunu söylemiştik. Sınıf tanımı o türün niteliklerini (değişkenler)  ve davranışlarını (metotlar) belirler. Elimizde o türe ait somut bir öğe (türü temsil eden varlık) varsa, o öğe, sözkonusu türün niteliklerine ve davranışlarına işlevlik kazandırır. Dolayısıyla, bir sınıftan, o türe ait öğe(ler) yaratmanın yolları olmalıdır.

Bir sınıf tanımlandığında, bellekte henüz onu temsil edecek öğeler yoktur (static sınıflar hariç). Her sınıf için bu işi yapan özel bir metot vardır. Bu metoda yapıcı (constructor) diyoruz. Yapıcının görevi türe ait öğe(ler) yaratmaktır. Java dilinde bu öğelere nesne (object, instance of the class) denir. Yapıcı (constructor), yaratılan sınıfın doğal bir parçasıdır ve aksi istenmedikçe ön-tanımlı (default) olarak derleyici tarafından oluşturulur ve kendi işlevini yapar. Constructor, javadaki öteki metotlardan tamamen farklıdır. Bu metodun bir değer-bölgesi yoktur; yani hiçbir değer almaz. Bir tek işlevi vardır: sınıftan nesne(ler) yaratmak.

Bir sınıftan bir nesnenin türetilmesi (instantiate) demek  onun için ana bellekte bir yer ayrılması, sınıfın değişkenlerine başlangıç değerlerinin verilmesi ve varsa sınıfın fonksiyonlarının etkin duruma sokulması demektir. Bu iş yapılmadan, sınıf hiçbir işleve sahip değildir; sınıfın nitelikleri ve davranışları ancak bu nesnelerde görülebilir. Başka bir deyişle, bir sınıf içinde tanımlanan  değişkenler ve metotlar ancak bir nesne içinde hayat bulurlar.

Bir sınıftan istenildiği kadar nesne yaratılabilir. Yaratılan her nesne için ana bellekte o nesneye özgü ve öteki nesnelerinkinden farklı bir yer ayrılır. 

Bir sınıf içinde static belirtkesiyle damgalı olan değişkenlere sınıf değişkenleri (class variables) ve static belirtkesiyle damgalı olan metotlara sınıf metotları (class methods) denir.

Bir sınıf içinde static olmayan değişkenlere anlık değişkenler (instant variables) ve static olmayan metotlara anlık metotlar (instant methods) denir.

Nesne yaratılırken, derleyici tarafından otomatik olarak oluşturulan constructor’a ön-tanımlı (default) constructor demiştik. Ön-tanımlı constructor hiçbir parametresi olmayan ve sınıf ile aynı adı taşıyan bir metottur. Ancak, constructor bir metot olduğundan, istenirse aşkın yükleme (overload) yapılabilir, yani farklı parametrelerle farklı işlevlere sahip kılınabilir. Böyle bir constructor tanımlanınca, ön-tanımlı olan contructor kendiliğinden yok olur, onun işlevini tanımlanan constructor üstlenir. Derleyicinin yaratacağı ön-tanımlı constructor yerine, bir çok uygulamada aşkın constructor kurulması daha uygundur. 

Sınıf ismi ile aynı adı taşır. Sınıfa ait değişkenlerin ilk değerlerini verir. O sınıfa ait bir obje oluşturulacağı zaman otomatik olarak yapılandırıcı çağrılır. Parametre alabilir ama geriye değer döndürmez. Bir sınıf birden fazla yapılandırıcıya sahip olabilir.(overloading sayesinde) Eğer uygulamamıza herhangi bir yapılandırıcı koymazsak Java bu işlemi kendi otomatik olarak yapmaktadır. Varsayılan yapılandırcılar (parametresiz yapılandırcılar,default constructor veya “no-args” constructor) içi boş bir yordam olarak düşünülebilir. Eğer kendimiz yapılandırıcı yazarsak, Java bizden varsıyılan yapılandırıcı desteğini çekecektir.

Örnek: Aşağıdaki sınıf ön-tanımlı (default) constructoru kullanmaktadır. Sınıfın dört tane static değişkeni vardır, onlardan birisi final damgasını aldığı için sabittir. Statik değişkenler için ana bellekte yalnızca birer tane yer ayrılır. Bu demektir ki, statik değişkenlerin ana bellekte başka kopyaları olamaz. Program koşarken statik değişkenin değeri değişebilir, ama bir statik değişken programda son girilen değeri saklayabilir, önceki değerler o adresten (dolayısyla bellekten) ebediyen silinmiş olur.

class Daire1 {

    static int yaricap;
    static double cevre;
    static double alan;
    final static double pi = 3.14;

    public static void main(String args[]) {
        yaricap = 4;
        alan = pi * yaricap * yaricap;
        cevre = 2 * pi * yaricap;
        System.out.println("Dairenin Alani   : " + alan);
        System.out.println("Dairenin Cevresi : " + cevre);
    }
}

 Sonuç olarak bize şöyle bir sonuç göstercektir;

  Dairenin Alani   : 50.24
  Dairenin Cevresi : 25.12

Constructor bir nesneyi yaratınca şu işler gerçekleşir:

·         Constructor daima public erişim belirtkesini alır. Böyle olmazsa, yarattığı nesneye dışarıdan erişmek mümkün olamaz.

·         Constructor’un adı sınıfın adıdır.

·         Normal halde, costructor metodu çağrılırken new anahtar sözcüğü ile kullanılır.

·         Constructor ana bellekte nesneye bir yer ayrılmasını sağlar.

·         Constructor her çağrılışında yeni bir nesne yaratır.

·         Sınıf değişkenleri ve metotlar bütün nesnelerde aynıdır, değiştirilemez. 

·         Anlık değişken ve metotlar farklı nesnelerde farklı olabilir.

Örnek: Aşağıdaki sınıf yukarıdaki ile aynıdır. Ancak çıktıları yazdırmak için kodları tekrar etmek yerine, onları yaz() metodu ile yazmaktadır. yaz() metodunun formal parametresinin Daire2 sınıfı olduğuna dikkat ediniz.

 

class Daire2 {

    int yaricap;
    double cevre;
    double alan;
    final static double pi = 3.14;
    // Yazdırma metodunun tanımı

    void yaz(Daire2 d) {
        System.out.println("Dairenin Yaricapi   : " + d.yaricap);
        System.out.println("Dairenin Alani      : " + d.alan);
        System.out.println("Dairenin Cevresi    : " + d.cevre);
        System.out.println();
    }
    ;
    // Aşkın Constructor metodunun tanımı

    public Daire2(int r) {
        yaricap = r;
        alan = pi * r * r;
        cevre = 2 * pi * r;
    }
    ;

    public static void main(String args[]) {
        Daire2 d1 = new Daire2(7);   // nesne yaratılıyor
        d1.yaz(d1);             // yaz metodu çağrılıyor
        Daire2 d2 = new Daire2(9);   // nesne yaratılıyor
        d1.yaz(d2);             // yaz metodu çağrılıyor
    }
}

Burada ise sonuç olarak bize şunu göstericektir;

Dairenin Yaricapi   : 7
Dairenin Alani      : 153.86
Dairenin Cevresi    : 43.96

Dairenin Yaricapi   : 9
Dairenin Alani      : 254.34
Dairenin Cevresi    : 56.52

 

 

Aydın ÜMİT

 

Yorumunuzu Ekleyin
Java Da Classlar Ve Yapılandırıcılar Yorumları +2 Yorum
  • Erol Altınel
    1
    Erol Altınel
    Çok açıklayıcı bir makale olmuş, özellikle Türkçe kelimeler seçişinizmsl:belirtke beni ayrıca mest etti.
    Kolay gelsin.
    08 Nisan 2010 00:55:16, Perşembe
  • eren
    1
    eren
    kafa karıştımadan türkçe terimlerle anlatmışsınız çok teşekkürler.
    20 Mart 2011 14:23:24, Pazar

Java Değişken Tipleri

Byte, short, int, long, float, double, boolean, char, string

59,423 Okunma Henüz yorum yapılmamış 04/11/2009 13:11:31

Java Diziler

Javada diziler nesnedirler, cdeki gibi hafızada yer kaplayan pointer değillerdir. Javada diziler, cye göre daha güvenilirdir. Dizilerin elemanlarına gelişigüzel değerler atayamazsınız. Java, dizi elemanlarını sırasıyla kontrol eder. Dolayısıyla arada değer atanmamış bir elemana rastlanırsa hata oluşur. Bu da cde çıkan hafıza bozulmalarını önler. Javada dizi kullanmak için ilk önce dizinin tipi verilir. Tip verilirken dizinin büyüklüğü belirtilmez

57,261 Okunma 2 Yorum 19/11/2007 15:13:25

Javada Fonksiyonlar

Değer alan ve geriye değer döndüren fonksiyonlar

55,225 Okunma Henüz yorum yapılmamış 01/04/2010 14:39:09

Stringleri Karşılaştırma

Stringler bilinen = operatörleri ile karşılaştırılmazlar, ayrıca == ve != operatörleride stringler içindeki karakterleri karşılaştırmazlar

40,810 Okunma Henüz yorum yapılmamış 18/10/2007 12:43:49

Java Da Operatörler

Aritmetik operatorler 4 işlem ve mod, arttırma operatorleri, ilişkisel operatorler, mantıksal operatorler, kısa devre mantıksal operatorler

39,877 Okunma Henüz yorum yapılmamış 02/12/2009 13:58:19

J2ee, j2se, j2me Nedir?

J2ee,j2se,j2me hakkında bilgi

36,165 Okunma 1 Yorum 21/10/2009 17:00:15 16/07/2014 17:00:35

Java Terimleri

Java, birbirinden farklı aygıtlarda çalışabilen, bu aygıtlar arasında iletişimi kolay hale getiren programlama dili ve platformudur. Java diliyle yazılmış programlar, Windows, UNIX, Mac işletim sistemi yüklü bilgisayarlarda hiç bir değişiklik yapmayı gerektirmeden çalışabilmektedirler

35,579 Okunma Henüz yorum yapılmamış 16/10/2007 13:23:36

Javada Diziler

Java da diziler nesnedir; içerisinde belirli sayıda eleman bulunur. Eğer bu sayı sıfır ise, dizi boş demektir. Dizinin içerisindeki elemanlara eksi olmayan bir tam sayı ile ifade edilen dizi erişim indisi ile erişilir. Bir dizide n tane eleman varsa dizinin uzunluğu da n kadardır; ilk elemanın indisi/konumu 0’dan başlar, son elemanı ise n-1’dir.

30,856 Okunma 1 Yorum 14/04/2008 11:01:20

for Döngüsü

28,625 Okunma Henüz yorum yapılmamış 30/12/2009 11:02:00

Java 3D

Son yıllarda çoklu ortamda ilerleme kaydeden Java, Java3D ile yüksek performans isteyen üç boyutlu grafiklerde de 'Ben varım!' diyor.

27,455 Okunma Henüz yorum yapılmamış 26/01/2009 22:23:10

while döngüsü

Dizilerin olmazsa olmazı

26,736 Okunma Henüz yorum yapılmamış 17/12/2009 10:53:28

Java Operatörleri

Mod Operatörü, Aritmetik Atama Operatörü, Arttırma Azaltma Operatörleri, Iliskisel Operatorler ve Kısa Devre Iliskisel Operatörler, Kısa devre iliskisel operatorler, ? Operatoru

26,712 Okunma Henüz yorum yapılmamış 04/12/2009 12:11:34

Yükleniyor...