Genel olarak bir Java sinifinin yapısı şu şekildedir :
[Paket Deklerasyonu] (package)
[Dış Kütüphane Referansları] (import)
[Sınıf Yorum Bloğu] (/***/)
[Sınıf İmzası] (class extends implements)
{
[Sınıf Değişkenleri](int double ... MyClass)
[Metod Yorum Blokları]
[Sınıf Metodları]
}
Bu yapının koda dökülmüş haline göz atalım :
package net.orhanbalci.mp3tagreader; //Paket Deklerasyonu
import java.io.DataInputStream; //Dış Kütüphane Referansları
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Bu sınıf MP3 dosyaları içindeki ID3 bilgi etiketlerini //Sınıf Yorum Bloğu
* okumaya yarar.
* @author 04000041
*/
public class Mp3TagReader { //Sinif İmzası
public static long readMp3Tag() throws FileNotFoundException, IOException { //Sınıf Metodu
DataInputStream dis = new DataInputStream(new FileInputStream("deneme.mp3"));
long availableBytes = dis.available();
long tagLocation = availableBytes - 128;
dis.skip(tagLocation);
...
dis.close();
return tagLocation;
}
public static void writeMp3Tag(long tagLocation) throws FileNotFoundException, IOException {
RandomAccessFile raf = new RandomAccessFile("deneme.mp3", "rw");
String title = "Hasanova";
raf.seek(0);
raf.seek(tagLocation + 3);
raf.write(title.getBytes(), 0, title.getBytes().length);
raf.close();
}
public static void main(String[] args) { //Sınıf Metodu
try {
long loc = readMp3Tag();
writeMp3Tag(loc);
} catch (FileNotFoundException ex) {
Logger.getLogger(Mp3TagReader.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Mp3TagReader.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Şimdi teker teker yukarıda bahsettiğimiz şeyleri anlamaya çalışalım. Paketler yazılımımızdaki sınıfların gruplanmış halidir. Yazılım mimarisini oluşturmada yardım sağlarlar. Genellikle birbiriyle ilintili olan ve hep birlikte yazılımın belirli bir gereksinimini karşılayan sınıflar aynı paket altına toplanır. Paket denilince akla karmaşık gibi gelsede dosya sisteminde birer klasörden ibarettirler. Yani yeni bir paket oluşturduğumuzda yazılım geliştirme ortamımız bizim için yeni bir klasör oluşturur be bu paket içindeki sınıflara ait .java dosyaları aynı klasör içinde tutulurlar. Örneğin :
package net.orhanbalci.mp3tagreader
yukarıdaki paket deklarasyonunu içeren sınıfa ait .java dosyası net klasörünün içinde bulunan orhanbalci klasörünün içinde bulunan mp3tagreader klasörünün içindedir. Bu noktada paket isimlendirme genel geçer kuralına da değinmek gerekir. Gördüğünüz üzere paketime isim verirken net.orhanbalci ile başladım. Bu reklam yapmak amacıyla yapılan bir isimlendirme değildir
. Dünya çapında farklı yerlerde aynı isimle yazılan sınıfların birbirleriyle karıştırılmaması için alan adlarının tersine yapılmış paket adlandırma şablonu kullanılmaktadır. Şu anda gezinmekte olduğunuz alan adı da bana ait olduğu için paket isimlendirmeme bu şekilde başlıyorum. Paketler erişim seviyelerinin belirlenmesinde de rol oynarlar.
İkinci harici kütüphanelere nasıl referans verildiğini öğrenelim. Herhangi bir kütüphanede bulunan sınıfı kullanabilmemiz için o sınıfı kullanacağımızı belirtmeliyiz. Aksi takdirde yazılım içinde her referans verişimizde tüm ismini kullanmamız gereklidir. Bu kuralı şöyle örnekleyelim :
RandomAccessFile dosya1 = new java.io.RandomAccessFile("rw","deneme.mp3");
Bu örnekte yazılımımızda java.io paketinde bulunana RandomAccessFile adlı sınıfı kullanmak istiyoruz. Herhangi bir harici kütüphane referansı olmaksızın kullanım şekli yukarıdaki gibi tüm paket yolunun yazılması şeklinde olacaktır oysaki sınıfımızın başına :
import java.io.RandomAccessFile;
harici kütüphane referansını koysaydık sınıf içerisinde
RandomAccessFile dosya1 = new RandomAccessFile("rw","deneme.mp3");
şeklinde bir kullanıma gidebilirdik.
Buradaki sıralamada dikkat etmemiz gereken birkaç husus var. Eğer sinifimiz herhangi bir paket içinde bulunacaksa Paket Deklerasyonunu sinifin en başında yapmamız zorunludur. Paket deklerasyonundan sonra ise dış kütüphane referansları gelir. Tabi eğer herhangi bir dış kütüphane kullanılmayacaksa bunlara gerek yoktur. Sınıf değişkenleri ile metodlarının yazımında herhangi bir sıralama söz konusu değildir. Yani önce metodları tanımlayıp sonra da değişkenleri tanımlayabilirsiniz.
Üzerinde durmamız gereken diğer bir hususta sinif ismimizle dosya ismimizin aynı olması gerektiğidir. Yani QueryManagerBase sinifimizi QueryManagerBase.java dosyamızda bulundurmalıyız. Bu konuda bir kaç istisna var bunlara ileride değinilecektir
İlgili Yazılar:
- Java Dersleri 16 – Enum Yapısı Java da enum yapıları 1.5 versiyonuyla birlikte gelmiştir. Bu versiyondan...
- Eclipse Video Ders (Screencast) #2 Extract Super Class Refactoring Video dersi izlemek için resme tıklayın. Bunu del.icio.us 'da paylaşın...
- Java Dersleri 18 – Network Programlama – UDP Bu makalede Java’nın network programlama kabiliyetlerinden bahsedeceğim. UDP protokolü uygulamalar...
- Kd Ağacı (Kd Tree) Veri Yapısı Görselleştirmesi Aşağıdaki resme tıklayarak uygulamalı olarak kd ağaç veri yapısına değerler...
- Java Dersleri 15 – Koleksiyon API (Collection API) Map Map arayüzü anahtar-değer ikililerini bir arada tutmak için tasarlanmıştır. Matemetikteki...



biraz daha kod uzerinden anlatim daha iyi olurdu sanki biraz da kısa olmus tesekkurler.
yeni başlayanlar için hiç açıklayıcı değil misal ben
Bu makaleyi toparlayıp yeniden yazmam gerek. Eksik olduğunun farkındayım zira oylamada en düşük oy alan makale. Yorumunuz için teşekkürler.
hic aciklayici olmamis bence, onceden birseyler bilmeyen birisi cok zorlanir. ornekler uzerinden anlatilmasi da yarar saglar…