1 Şubat 2013 Cuma

PAKET(PACKAGE) NEDİR?


Java öğrenirken karşımıza en çok  paket ve import yapıları çıkacaktır .Yeni başlayanlar için oldukça yabancı terimler olabilir benim içinde öyleydi.Ancak ilk öğrendiğiniz dil java değil ve az da olsa c++ ya da c# biliyorsanız anlamanız oldukça kolay olacaktır.Gelin artık başlayalım.

PAKET(PACKAGE)
Java dilinde oldukça fazla sınıf vardır.Sınıflar paket klasörleri içinde yer alan dosyalardır.Mantıksal olarak bağlantısı olan ya da başka bir deyişle birbiriyle ilişkili sınıflar aynı paket içerinde yer almaktadırlar.
(C++ dilini öğrenmiş olanlar bunu namespace kavramıyla bağdaştırmıştır.)Paket tanımı java.paketAdı.sınıfAdı  şeklinde olur.
import ise sınıfı tanımlar.Yani eğer aynı pakette olmayan bir sınıf kullanılmak istenirse önce
sınıfın import edilmesi gerekmektedir.(C++ dilindeki using kelimesiyle benzerdir.)Kullanımı  import  java.paketAdı.sınıfAdı;
Bazen sınıfAdı yerine * işareti ile karşılaşabilirsiniz.Kullanımı şu şekildedir.
import java.paketAdı.*;  Bu,java.paketAdı paketindeki tüm sınıfları çağırabilirsin demektir.

Anlattıklarımızı basit bir uygulama üzerinde görelim...

Yanda ilk_adim adlı projemizin ,oluşturduğum 3 paketi ve her birinin de bir alt birimi yani sınıfı vardır.Sınıflar yani kaynak kodlarımız .java uzantılı dosyada bulunmaktadır.Aslında burada göstermek istediğim  paket kullanımın amacıdır.Yazdığım aynı isimli ve aynı amaçlı metotların farklı paketler aracılığıyla isim değişikliği yapmadan ve karışıklık olmadan kullanabiliriz.Tek yapmamız gereken hangi paketteki metodu kullanacağımızı belirtmektir.






Yukarıda ilk iki paketimizin içindeki sınıfların içerdiği metotlar yer almaktadır.İki pakette aynı görevi gören ve aynı isimli metotları kullanmaktadır.(Resimleri büyütmek için üzerine tıklayın.)


Buda Test_package adlı  main sınıfımızı içeren son paketimiz.package_1 ve package_2 paketlerimizi import ettim çünkü main kısmında sum() ve print() fonksiyonlarını kullanmadık.Yani bu iki fonksiyonumuzda Test_package paketinde yer almadığı için iki paketi de import etmek zorundayım aksi halde o paketlerin metotlarını kullanamam.
Başka bir nokta ise hangi sınıfın metodunu çağırmak istiyorsak o sınıfın  adını kullandığımıza dikkat edelim.Bu şekilde aynı görevi gören metotları farklı isim kullanarak isim karmaşasına neden olmadan programımı yazdım Bu durum belki böylesine basit bir program için size çok mantıklı gelmeyebilir ancak büyük projelerde oldukça kullanışlıdır.





Son olarak işte program çıktımız...








Herkese iyi çalışmalar... :)

2 yorum:

  1. Bi sorum olacak yeni proje açtiğimizda paket_adi.fonk._adi; yazdigimizda neden hata veriyo yani aynı projeler için mi geçerli import etme olayı

    YanıtlaSil
  2. Iyi ama yuzeysel olmus

    YanıtlaSil