NetBeans ve Eclipse Eşliğinde JAVA 8

advertisement
NetBeans ve Eclipse Eşliğinde JAVA 8
-Örnek Bölüm-
https://www.seckin.com.tr/kitap/971165446
Java'yı Öğrenmek İsteyenler İçin Birkaç Not
Varsayalım ki programcılığa ilginiz var, Java’yı merak ediyorsunuz.
Bu ilgiyi beslemek, gereğini yerine getirmek için ne yapacaksınız?
Bu soruya verilecek muhtemel cevaplar üzerinde biraz konuşacağız.
Youtube’da bulduğunuz Java konulu yüzlerce saatlik video’lardan bazılarını
izleyeceksiniz.
Blog sitelerinde sayıları binlerle ifade edilen Java konulu makale olduğunu fark
edeceksiniz.
Belki birkaç kitabın PDF’si elinize geçecek.
Şartlarınız elveriyorsa Java hakkında bilgi almak üzere bir eğitim merkezine
başvuracaksınız.
84
Java Programlama Dili
Yeterince azminiz varsa, kolay pes etmeyen bir yapıya sahipseniz, zaman
sorununuz yoksa; videolardan, makalelerden, PDF’lerden yararlanarak Java
hakkında gerek duyduğunuz bilgileri edinir, Java ve nesneye yönelik
programcılıkla ilgili kavramlara sahip olursunuz. Devamında işin peşini
bırakmazsanız Java programcısı olabilirsiniz.
Bu yöntemle Java öğrenmeye çalışmak riskler içeriyor.
Yukarıda tarif edilen şekilde Java öğrenmeye çalışırsanız belki sıkılıp yarı yolda
pes edersiniz.
Bazen okuduklarınızı anlamayacak, bazen de izlediğiniz videonun temposunu
beğenmeyeceksiniz.
Elinde değişik kişiler tarafından kaleme alınmış yüzlerce makaleden hangisini
okuyacağınızı şaşırırsınız.
Tam bu karmaşa içinde acaba kitap Java konulu kitap mı alsam diye kendinize
soru yöneltiyorsanız, burada resmini gördüğünüz Java kitabı hakkında herhangi
bir yorumda bulunmadan önce PDF olarak yayınlandığımız örnek bölümü baştan
sona dikkatlice okumanızı öneriyoruz.
Örnek bölümde Java'nın standart konularından birisi olan paketler
anlatılmaktadır. Java programcılığında paketler, standart konulardan birisi
olduğu için her kaynakta karşınıza çıkacaktır.
Bu kitabın paketler hakkında bilgi içeren bölümünü okursanız bu kitapla ilgilenme
ihtimaliniz belki yükselmeyecektir. Çünkü bölümü okudukça, belki Java’da paket
olayının öyle üzerinde fazla kafa yorulacak kadar zor bir konu olmadığını
düşüneceksiniz. Bu yorumun kaynağı olsa olsa bu kitapta yazdığımız her şeyin ilk
okumada anlaşılmasını hedeflemiş olmamız ve bu hedefe uygun bir anlatım
tekniğini tercih etmiş olmamızdır.
Aslında paket konulu bölüm yerine bu kitabın MySQL veritabanları üzerinde nasıl
işlem yapıldığının anlatıldığı bölümünü örnek olsun diye PDF olarak yayınlamış
olsaydık muhtemelen benzer yorumu yapardınız. Çünkü bu kitabın MySQL
veritabanları üzerinde nasıl işlem yapıldığının anlatıldığı bölümünü
okuduğunuzda “bu işlemler çok kolaymış, kitaptan okumaya bile gerek yokmuş”
şeklinde bir yorumda bulunmanız ihtimali düşük değildir.
Burada örnek olsun diye yayınladığımız bölüm kitabın 83. sayfasında
başlamaktadır. Dolayısıyla bu bölüme gelmeden önce Java programcılığı
konusunda yolun başında olanlara yönelik en önemli konularından bazıları
anlatıldı. Hatta kitabın ilk 3 bölümünde paketler hakkında yüzeysel de olsa bilgi
bile verildi.
Bu nedenledir ki “Paket Hazırlamak ve Kullanmak” adını verdiğimiz bu bölümü
kitaptan alıp FDF olarak düzenlerken bazı rötuşlar yaptık, küçük eklemeler
yapmaya gerek duyduk. Ellerinde Java kitabı olan arkadaşlar kitaptaki paket
konulu bölüm ile, burada PDF olarak yayınlanan bölüm arasında küçük farkların
olduğunu, birkaç yerde araya girip ek açıklamalar yaptığımızı göreceklerdir.
Bölüm 4: Paket Hazırlamak ve Kullanmak
85
Bir diğer konu var: Buraya alınan örnek bölümde kullanılan ekran görüntülerinin
kitaptan farklı olarak daha büyük halleri kullanıldığı için bu PDF’nin sayfa sayısı
biraz arttı. Bu bölümün kitaptaki hali 14 sayfadır.
Kitabın bu bölümünde anlatılanların kolay anlaşılması için verilen kısa kodları
yazmanız ve bölüm metninde yapılan işlemleri sizin de yapmanız önerilir. Çünkü
kitabın bu bölümü kaleme alınırken okurun verilen örnek kodları aynen yazacağı
(en azından benzerini) varsayımda bulunduk. Eğer bu bölümün roman gibi
okunacağını varsaysaydık farklı bir anlatım şekliyle karşınıza çıkardık. Tabi o
zaman bölüme ayrılan sayfası artacaktı.
PDF’de sarı zeminli halde verilen paragraflar kitapta yoktur.
4. BÖLÜM
PAKET HAZIRLAMAK ve KULLANMAK
Şimdiye kadar yazdığımız kısa kodlarda kullandığımız Java sınıflarının hangi
pakette yer aldığını her seferinde işaret ettik. Çünkü Java ile gelen çok sayıda sınıf,
paket olarak gruplanıp öyle kullanıma sunulmuştur. Java ile hazır olarak gelip
paket halinde kullanıma sunulan sınıflardan öte kendi sınıflarınızı paket olarak
organize edip gruplayabilirsiniz.
Kısaca anlatmak gerekirse, Java’da istenen sayıda class ve interface bir araya
getirilip “paket” olarak gruplanıp organize edilmektedir. Java’da paket demek bir
bakıma belli bir amaç için hazırlanmış class ve interface’lerin tutulduğu klasör
demektir. Hazırladığınız bir veya birden fazla sınıfı daha sonra geliştireceğiniz
uygulamalarda sıklıkla kullanacaksanız bu sınıfları ayrı bir paket olarak organize
etmenizde fayda vardır.
Java programcıları arasında paketlere isim verirken kendi domain adlarının tersten
yazılmış halini kullanma alışkanlığı vardır. Örneğin NetBeans’e gömülü olarak
gelen Derby Apache veritabanları üzerinde işlem yapılırken gerek duyulacak
sınıfların yerleştirildiği paketin adı “org.apache.derby” olarak seçilmiştir. Bu sayede
paket adı çakışmalarının önüne geçilmektedir. Java programcıları arasında paket
adının ilk harfini küçük olarak seçmek gibi bir alışkanlığın olduğunu hatırlatmak
isteriz.
Bu bölümde paketlerden söz ederken konunun kolay anlaşılması için adlandırmada
bu alışkanlığa bağlı kalmadık. Çünkü paket kavramı Java’nın en zor anlaşılan
kavramlarından birisidir ve bu bölümle ilgili olarak hedefimiz hem paketleri bütün
ayrıntıları ile anlatmak hem de yazılan metnin ilk okumada anlaşılmasını sağlayıp
paket konusunda gelecek muhtemel bütün sorulara cevap vermektir.
Java programlama dilinde paket hazırlama ve kullanmayla ilgili bilgi vermeye
kullandığımız bilgisayarda “C:” sürücüsünde “\paketler” adında bir klasör
hazırlamakla başladık. Bu bölümde paketleri anlatırken gerek duyacağımız
klasörleri burada "\paketler" adını verdiğimiz klasörün içinde hazırlayacağız.
Ardından bu klasörün içinde “aritmetik” adında ikinci bir klasör hazırladık.
Matematiksel işlemler için hazırlayacağımız sınıfları “aritmetik” adlı klasöre
86
Java Programlama Dili
yerleştireceğiz. Başka bir anlatımla matematiksel işlemler için hazırlayacağımız
class’ları “aritmetik” adı altında paketleyeceğiz. Paketleri yerleştirmek amacıyla
hazırladığımız klasörlerin hiyerarşik konumunu aşağıda verilen ekran
görüntüsünde görebilirsiniz.
Java programcıları Java kodu yazarken genellikle NetBeans veya Eclipse adlı
IDE’leri kullanıyorlar. Bu bölümde bu IDE’lerden yararlanmak yerine konunun
ayrıntılarını gösterebilmek için kod yazarken Not Defteri'ni kullandık. Not Defteri
ile hazırladığımız Java kodunu ise konsolda kendimiz derleyip çalıştırdık. NetBeans
ve Eclipse, paketlerle ilgili birçok işlemi geri planda kendi yaptıkları için ayrıntıları
görmek zorlaşıyor.
Java paketi olarak kullanacağımız klasörü hazırladıktan sonra aşağıdaki gibi kısıtlı
özelliklere sahip bir kod dosyası hazırlayıp “Islemler.java” adıyla “aritmetik”
klasörüne kaydettik. Bu class’ın kodlandığı “java” uzantılı dosyayı “aritmetik” adını
verdiğimiz klasöre kaydettiğimiz için kodun en başında package deyimine yer
verdik. Başka bir deyişle sınıfımızı yerleştirdiğimiz paketin (klasörün) adını kodun
ilk satırında belirttik.
Her ne kadar burada “aritmetik” adını verip “paket” olarak değerlendirmek
istediğimiz klasör “\paketler” klasörü içinde yer alsa bile bu klasörü yani
“\paketler” klasörünü paket olarak değerlendirmeyeceğiz. Bu nedenle aşağıda
verilen kodda “\paketler” adını verdiğimiz klasörüyle ilgili bir işaret yoktur.
Bölüm 4: Paket Hazırlamak ve Kullanmak
87
Bu bölümde kullanılan kodların bazılarını ekran görüntüsü olarak verdik. Bunun
nedeni hazırladığımız kodları yazdığımız dosyaların adlarına vurgu yapmaktır.
Çünkü Java’da kod dosyalarına verilen isimler önemlidir.
Bu şartlarda “aritmetik” adını verdiğimiz paket “Islemler” adında bir sınıfa ve bu sınıf ise
“toplama()” adında bir metoda sahiptir. Bu sınıfın adından önce public anahtar kelimesine
yer verdiğimiz için bu sınıfı başka paketlerde yer alan sınıflarda kullanabiliriz. Bu paket için
bu şekilde sınıf hazırladıktan sonra kodu derleyip “class” uzantılı dosya hazırladık. Bu
amaçla aşağıdaki gibi bir derleme yaptık.
Derleme yapıp “Islemler.java” dosyasından yola çıkıp “Islemler.class” adında bir bytecode
dosyası hazırladıktan sonra şimdi sırada bu paketteki “Islemler” sınıfından yararlanmak var.
Bu amaçla başka bir klasördeki, dolayısıyla başka bir paketteki main() metoduna sahip
“Siftah.java” adını verdiğimiz kod dosyamızı aşağıdaki gibi düzenledik. Burada “Siftah” adını
verdiğimiz kod dosyasını “C:\” sürücüsünde “\Projeler\proje1” adlı klasöre kaydettik.
Bu koda dikkatlice bakılırsa, “Siftah” adını verdiğimiz ve main() metoduna sahip
olan sınıfın hazırlandığı bu kod dosyasında package anahtar kelimesine yer
verilmediğini fark ederseniz. Bu durumda Java derleyicisi bu sınıfın default adı
verilen pakette yer aldığını varsayacaktır. "Siftah” adını verdiğimiz sınıfta “package”
anahtar kelimesine yer vermeme nedenimiz, konunun kolay izlenebilmesini
sağlamaktır. Bu bölümün ileriki sayfalarında bu sınıfı da bir pakete dahil edeceğiz.
Mevcut durumu özetlemek gerekirse şunlar söylenebilir:
* Java'nın paketleri hakkında bilgi vermeye "C:" sürücüsünün kök klasörü içinde
"\paketler" adında bir klasör hazırlayarak başladık. Örnek olması için "aritmetik"
adında bir Java paketi hazırlamak istediğimiz için "\paketler" klasörü içinde
"aritmetik" adında bir klasör hazırladık.
* Devamında Not Defteri'ni kullanarak "Islemler.java" adında bir kod dosyası,
dolayısıyla "Islemler" adında bir sınıf hazırladık. Bu sınıfı "aritmetik" adını
verdiğimiz klasöre kaydetmek, dolayısıyla "aritmetik" paketine üye yapmak
istediğimiz için kod dosyasının en başında package anahtar kelimesine yer verdik.
88
Java Programlama Dili
* "Islemler.java" adıyla hazırlayıp "aritmetik" klasörüne kaydettiğimiz kod
dosyasını konsolda derleyip “class” uzantılı dosya hazırladık.
* En son olarak "aritmetik" paketine üye yaptığımız sınıfı başka bir uygulamada
kullandık.
Bu Java programı dahilinde “aritmetik” adını verdiğimiz paketteki (klasör)
‘Islemler’ sınıfından yararlanmak istediğimiz için kodun en başında import
anahtar kelimesi ile bunu belirttik. Tabi herhangi bir paketteki sınıflardan
yararlanmak için import anahtar kelimesi yardımıyla ilgili paketleri kodun başında
işaret etmenin bir zorunluluk olmadığını biliyorsunuz.
Şimdi sırada “Siftah.java” adını verdiğimiz ve main() metoduna sahip sınıfın
olduğu bu kod dosyasını derlemek var. Herhangi bir hazırlık yapılmadan bu kod
dosyası aşağıdaki gibi derlenirse hata mesajı alınır ve "Siftah.class” dosyası
hazırlanmaz. Çünkü mevcut ayarlara göre derleyici “aritmetik” adını verdiğimiz
paketteki ‘Islemler’ sınıfını bulamaz.
Java derleyicisi bu kodu derlerken “Islemler” sınıfını önce geçerli klasörde arar.
Bulamazsa bu kez CLASSPATH adlı sistem değişkeni ile işaret edilen klasörlere
bakar. Bu nedenle kendi hazırladığınız paketleri, geliştirmekte olduğunuz Java
uygulaması dahilinde kullanmak istiyorsanız CLASSPATH ayarlaması yapmalısınız.
CLASSPATH ayarlaması yapmadan “Siftah.java” dosyasını derlemek isteyince
aşağıdaki gibi bir hata mesajı aldık.
CLASSPATH ayarlamasını Windows’un Sistem Özellikleri diyalog kutusundaki
Ortam Değişkenleri düğmesi tıklandığı zaman ekrana gelen diyalog kutusunda
yapabileceğiniz gibi direk konsolda SET komutu ile yapabilirsiniz.
Bölüm 4: Paket Hazırlamak ve Kullanmak
89
Daha önce CLASSPATH adında bir sistem değişkenin tanımlanıp tanımlanmadığını
öğrenmek istiyorsanız konsoılda “set” deyimini aşağıdaki gibi kullanabilirsiniz. Bu
sırada CLASSPATH adında bir sistem değişkeni tanımlı olmadığı için aşağıdaki gibi
bir sonuç aldık.
Java derleyicisini kullandığımız bilgisayardaki “paketler” klasörünün içinde
hazırlanan paketlerden haberdar etmek istediğimiz için SET komutu ile
CLASSPATH sistem değişkenini tanımlama işlemini aşağıdaki gibi yaptık. Çünkü
hazırladığımız paketi yerleştirdiğimiz klasör, klasör hiyerarşisi içinde “\paketler”
klasöründen sonra gelmektedir. Dolayısıyla yukarıda hazırladığımız “aritmetik”
paketini başka bir uygulamada kullanmak istediğimizde “import” bildirimde
“\paketler” klasörü olmayacaktır.
Yararlanmak istediğimiz paketler birden fazla yerde olsaydı klasör adlarının arasına
noktalı virgül(;) koyarak hepsini CLASSPATH değişkenine aktarırdık. Set komutu
ile yapılan bu ayarlamalar DOS penceresi kapatıldığında silinir. Bu nedenle
90
Java Programlama Dili
CLASSPATH ayarlamasını Windows’un Ortam Değişkenleri diyalog kutusunda
yapmanız önerilir. Bu ayarlamadan sonra yukarıda hazırladığımız “Siftah.java”
kodunu hatasız derleyebiliriz.
Java kodunu NetBeans veya Eclipse ile yazanların yukarıda anlatılan CLASSPATH
ayarlamasını yapmalarına gerek yoktur. Bu bölümle ilgili olarak hedefimiz konunun
geri planından sizleri haberdar etmek istediğimiz için paketleri anlatırken NetBeans
ve Eclipse’i kullanmadık.
“Siftah.class” adını verdiğimiz bytecode dosyası “java.exe” programı sayesinde
çalıştırılırken “\paketler\aritmetik” klasöründeki “class” uzantılı dosyaya gerek
duyulur. Çünkü “Siftah.java” kod dosyasında “aritmetik” paketinde yer alan sınıfları
kullandık.
Konunun anlaşılmasına katkı olması için şimdi “aritmetik” adını verdiğimiz pakette
ikinci bir sınıf hazırlayacağız. Bu amaçla aşağıdaki gibi bir kod dosyası hazırlayıp
“aritmetik” klasörüne kaydettik. Bu kod dosyasının ilk satırında package anahtar
kelimesinden sonra yine “aritmetik” yazıldığı için derleyici bu sınıfın “aritmetik”
klasöründe tutulacağını kabul eder. Ayrıca bu sınıfı public yaptığımız için başka
paketlerde yer alan sınıflarda kullanılabilir.
Java derleyicisi, nasıl ki kod dosyası ile sınıf adının aynı olmasını istiyorsa, paket
adıyla pakete dahil edilen sınıf ve interface’lerin saklandığı klasör adının da aynı
olmasını istemektedir. Hem “Islemler” hem de “Diziler” adını verdiğimiz sınıfların
“aritmetik” adlı pakette olmasını istediğimiz için her iki sınıfa ait kod dosyalarını bu
klasöre kaydettik.
Bölüm 4: Paket Hazırlamak ve Kullanmak
91
“Diziler.java” adını verdiğimiz bu kod dosyası hazırlanıp derlendikten sonra
“Diziler” sınıfı istenen uygulamada kullanılabilir. “Diziler” sınıfı ile “Islemler” sınıfı
aynı paketin üyesi oldukları, başka bir deyişle her iki sınıfın bytecode dosyaları aynı
klasörde olduğu için ikinci sınıf için ayrıca CLASSPATH ayarlaması yapılması
gerekmez.
Paketlerle ilgili diğer ayrıntılardan söz edebilmek için “paketler” adını verdiğimiz
klasörün içinde ikinci bir klasör hazırlayıp bu klasörü de paket olarak
değerlendireceğiz. İkinci paket olarak kullanacağımız klasöre “stringler” adını
verdik.
Bazen birden fazla klasörde aynı ada sahip sınıflar olabilir. Bu gibi durumlarda
nasıl bir çözüm geliştirildiğini anlatmak için “aritmetik” klasöründeki “Diziler.java”
adlı kod dosyasını biraz değiştirip ikinci klasöre (stringler) yani pakete dahil ettik.
“stringler” adlı klasöre kaydettiğimiz “Diziler” sınıfının son hali aşağıdaki gibidir.
92
Java Programlama Dili
Ekran görüntüsü olarak verilen bu koda “Diziler” sınıfı bu kez “stringler” adlı pakete
üye yapılmaktadır. Yani hem “aritmetik” hem de “stringler” adlı pakette “Diziler”
adında bir sınıf bulunmaktadır. Bu ayarlamadan sonra “Siftah” adını verdiğimiz ve
main() metoduna sahip sınıfta her iki paketteki “Diziler” sınıfından yararlanmayı
deneyeceğiz. Bu amaçla yukarıda içeriğini verdiğimiz “Siftah” sınıfına ait kod
dosyasını aşağıdaki gibi düzenledik.
import aritmetik.*;
import stringler.*;
public class Siftah
{
public static void main(String[] args)
{
int[] dizi = new int[3];
dizi[0] = 10;
dizi[1] = 20;
dizi[2] = 30;
Diziler nesne = new Diziler();
int sonuc = nesne.diziTopla(dizi);
System.out.println(sonuc);
}
}
Bu şartlarda bu kod derlenmek istenirse hata mesajı alınır. Çünkü import edilen
her iki pakette aynı ada sahip bir sınıf olduğu için derleyici hangi paketteki sınıfın
kullanılmak istendiğine karar veremez. Bu sorunun çözümü, nesne hazırlanırken
ilgili sınıfın adından önce paket adını yazmaktır. Bu nedenle aşağıda verilen kod
hatasız derlenir.
Bölüm 4: Paket Hazırlamak ve Kullanmak
93
Paket İçinde Paket Hazırlamak
Java konulu kaynaklarda paketler organize edilirken alan adları notasyonun
tersinden yazılmış halinin örnek alınması önerilse bile konunun kolay anlaşılmasını
sağlamak için bu organizasyonu yukarıdaki gibi basite indirgedik. Bazen paket
içinde başka bir paket hazırlanır. Örnek olması için yukarıda hazırladığımız
“\paketler\aritmetik” klasörü içinde “donusumler” adında klasör hazırladık.
Paket içinde paket kullanmaya örnek olması için bu şekilde klasör hazırladıktan
sonra aşağıdaki gibi bir kısıtlı özelliklere sahip bir sınıf hazırlayıp bu klasöre
kaydettik. “donusumler” adını verdiğimiz paket “aritmetik” paketinin bir alt paketi
olacağı, başka bir deyişle “donusumler” klasörünü “aritmetik” klasörünün içinde
hazırladığımız için package anahtar kelimesinden sonra önce “aritmetik”, sonra
“donusumler” yazdık.
94
Java Programlama Dili
“aritmetik.donusumler” paketi içinde bu şekilde bir sınıf hazırladıktan sonra
derleyip kullanabiliriz. Bu kod dosyasını derledikten sonra main() metoduna sahip
Java programını açıp aşağıdaki gibi düzenledik. Aşağıda verilen kodda
“donusumler” adını verdiğimiz paketteki statik metotlar kullanılmaktadır.
Default Paketi Kullanmamak
Yukarıdaki sayfalarda hazırladığımız paketleri, main() metoduna sahip sınıfta test
ederken package anahtar kelimesine yer vermedik. Başka bir deyişle default
paketten yararlandık. Bunu yapmamızın nedeni konunun kolay takip edilebilir
olmasını sağlamaktı. Şimdi yukarıda main() metoduna sahip olup “Siftah” adını
verdiğimiz sınıfı da bir pakete dahil edeceğiz.
Bundan önce paketlerle ilgili olarak yukarıda yaptıklarımızı özetleyeceğiz. Önce
kullandığımız bilgisayarda “\paketler” adında bir klasör hazırladık. Sonra bu
klasörün içinde “aritmetik” ve “stringler” adında 2 alt klasör hazırladık. Bu 2
klasörün içine birkaç sınıf yerleştirdik. Örneğin aşağıda ekran görüntüsü olarak
içeriği verilen “Islemler” sınıfını “aritmetik” klasörüne kaydettik.
Bölüm 4: Paket Hazırlamak ve Kullanmak
95
Bu kod dosyasını, paket olarak değerlendirmek istediğimiz “aritmetik” klasörüne
kaydetmiş olduğumuz için sınıfta package anahtar kelimesine yer verip bu sınıfı
nerede saklamak istediğimizi en başta beyan ettik.
Devamında kullandığımız bilgisayarda mevcut “\Projeler” klasörü içinde “\proje1”
adında bir klasör hazırlayıp aşağıda içeriği verilen kod dosyasını bu klasöre
kaydettik. Yani main() metoduna sahip olup, “aritmetik” paketindeki “Islemler”
sınıfından yararlandığımız kod dosyasını “\proje1” klasörüne kaydettik.
Bu kod dosyasında “aritmetik” adlı paketteki sınıfları kullandığımız için derleme
işleminden önce konsolda set komutu ile CLASSPATH ayarlaması yaptık. Yine
yukarıda işaret edildiği üzere “Siftah” adını verip \Projeler\proje1” klasörüne
kaydettiğimiz sınıfta package anahtar kelimesini kullanmadık. Dolayısıyla
derleyici bu sınıfın ‘default’ pakette olduğunu varsaydı.
Şimdi “Siftah” adını verdiğimiz ve “aritmetik” paketindeki sınıflardan yararlanan bu
kod dosyasında package anahtar kelimesine yer vereceğiz. Bu kod dosyasını
“\proje1” klasörüne kaydetmiş olduğumuz için “package” anahtar kelimesinin
yanına bu klasörün adını yazdık.
package proje1;
import aritmetik.*;
public class Siftah
{
public static void main(String[] args)
{
Islemler islem = new Islemler();
96
Java Programlama Dili
int sonuc = islem.toplama(10, 20);
System.out.println(sonuc);
}
}
Bu şartlarda bu kod dosyası hatasızca derlenir. Ancak derleme sonucu hazırlanan “class”
uzantılı bytecode dosyası “java.exe” adlı yorumlayıcı programa parametre olarak verilip
çalıştırılmak istenirse aşağıdaki gibi bir hata mesajı alınır. Çünkü bu şartlarda Java yorumlayıcısı gerek duyduğu “class” uzantılı dosyayı bulamaz.
Bu hatanın meydana gelme nedeni yani Java yorumlayıcısının “class” uzantılı
dosyayı bulamama nedeni, package anahtar kelimesi ile işaret edilen klasörün
içinde bulunan klasörün bir alt klasörü olduğunu varsaymasıdır.
Bu sorunun çözümü, çalıştırma işlemini bir üst klasörde yapmaktır. Ancak bir üst
klasöre geçilince söz konusu bytecode dosyası artık alt klasörde olduğu için bunun
aşağıda yapıldığı şekilde belirtilmesi gerekir. Yani çalıştırılacak sınıf adından önce
paket adını yazmak gerekiyor.
Hazırlanan Paketleri NetBeans Projesinde Kullanmak
Şimdiye kadar paketler hakkında bilgi verirken NetBeans ve Eclipse’den
yararlanmadık. Paket hazırlarken yukarıda yapıldığı gibi Not Defteri’ni kullanmak
yerine kod yazarken kolaylıklar sağlayan NetBeans ve Eclipse gibi IDE’lerden
yararlanmayı tercih edeceksiniz. Paket kavramının iyice anlaşılmasını sağlamak için
önceliği bu IDE’lere vermedik.
Şimdi yukarıda Not Defteri ile hazırladığımız paketleri NetBeans ile
hazırlayacağımız uygulamalarda kullanacağız. Bu amaçla yeni bir Java uygulaması
hazırladık. “Applicaiton1” adınız verdiğimiz bu uygulamanın, “paket1” adında bir
pakete ve bu pakette ise “JFrame1” adında bir sınıfın olmasını sağladık.
Bölüm 4: Paket Hazırlamak ve Kullanmak
97
Mevcut bir Java paketinizi NetBeans ile hazırladığınız uygulamada kullanmak
istiyorsanız NetBeans penceresinin sol tarafına yuvalanmış olan Project
penceresinde Source Packages seçeneğine ait kısayol menüsünden Properties
komutunu vermelisiniz.
Source Package seçeneğine ait kısayol menüsünden bu komut verildiğinde
aşağıda verilen Project Properties diyalog kutusu ekrana gelmektedir. Bu diyalog
kutusunu projenin paketleri üzerinde işlem yapmak üzere ekrana getirdiğimiz için
Sources adı altında bir araya getirilen seçenekler görüntülendi.
98
Java Programlama Dili
Diyalog kutusunun sağ tarafında Source Package Folders başlıklı liste
kutusunda paket olarak kullanılan klasörler listelenmektedir. NetBeans ile
hazırlanan uygulamalarda paketler uygulamaya ait klasörün içinde yer alan “src”
klasörüne yerleştirilmektedir. Daha önce Not Defteri ile hazırlayıp “\paketler”
klasörüne yerleştirdiğimiz paketleri NetBeans ile hazırladığımız bu uygulama
dahilinde kullanmak isteğimiz için Add Folder düğmesini tıklayıp ekrana klasör
seçimi yapılan Add Source Folder diyalog kutusunu getirdik.
Bu diyalog kutusunda paketlerimizin olduğu klasörü seçip Open düğmesini
tıklayınca seçtiğimiz klasör Project Properties diyalog kutusunda listelenmeye
başlandı. Project Properties diyalog kutusunu OK düğmesi ile kapatınca
NetBeans’ın Project penceresi aşağıda verilen şekle dönüştü.
Bölüm 4: Paket Hazırlamak ve Kullanmak
99
Bu andan itibaren bu uygulama dahilinde “aritmetik”, “aritmetik.donusumler” ve
“stringler” adlı paketlerdeki sınıflardan yararlanmak mümkün hale gelir. Örnek
olması için “JFrame1” sınıfının görsel yapısının üzerine bir JButton ve JTextField
nesnesi yerleştirip jButton nesnesi çalışma anında tıklandığında işletilecek metodu
aşağıdaki gibi düzenledik.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
int[] dizi = new int[3];
dizi[0] = 10;
dizi[1] = 20;
dizi[2] = 30;
aritmetik.Diziler nesne1 = new aritmetik.Diziler();
int sonuc = nesne1.diziTopla(dizi);
jTextField1.setText(Integer.toString(sonuc));
}
Kodun başında import deyimi ile “aritmetik” adlı paketteki sınıflardan
yararlanmak istiyoruz deseydik “Diziler” tipinde nesne hazırlarken sınıf adından
önce paket adını yazmak zorunda kalmazdık.
NetBeans İle Paket Hazırlamak
Başka uygulamalarda kullanmak istediğiniz Java paketlerini NetBeans ile
hazırlayabilirsiniz. Bu konuyu anlatmak için önce bir Java projesi hazırlayacağız. Bu
amaçla NetBeans’i başlatıp File menüsünden komut verip New Project diyalog
kutusunu ekrana getirdik.
100
Java Programlama Dili
New Project diyalog kutusunda Java Application şablonunu seçip Next
düğmesini tıklayıp aşağıda verilen New Java Application diyalog kutusunu
ekrana getirdik. Hazırlamak istediğimiz projeye "Paketler" adını verdik.
“Paketler” adını verdiğimiz projenin “C:” sürücüsünün kök klasörü içinde
hazırlanması için ayarlama yaptık. Bu sırada Finish düğmesi tıklanırsa NetBeans,
aşağıdaki gibi herhangi bir paket ve sınıfa sahip olmayan bir proje hazırlar.
Bölüm 4: Paket Hazırlamak ve Kullanmak
101
Bu projeyi hazırlama amacımız, başka projelerde kullanmak üzere bir paket
hazırlamak olduğu için Source Packages seçeneğine ait kısayol menüsünden
Java Package komutunu verip New Java Package diyalog kutusunun ekrana
gelmesini sağladık. Aşağıda verilen ekran görüntüsünü hazırlamak istediğimiz
paketin adını yazdıktan sonra aldık.
Bu sırada Finish düğmesi tıklanırsa, NetBeans tarafından bir paket, daha doğrusu
içeriği boş bir klasör hazırlanır. Bu sırada aynı şekilde başka paketler veya mevcut
paketler için sınıflar hazırlayabilirsiniz. Tabi mevcut bir paketin içinde başka
paketler hazırlamak mümkündür.
Konunun ayrıntılarını ortaya çıkarmak için önce ikinci bir paket, sonra bu
paketlerin içinde birer sınıf hazırladık. Aşağıda verilen ekran görüntüsünü aldığımız
sırada paket1’deki Simif1’in içeriği görüntüleniyordu.
102
Java Programlama Dili
Hazırladığınız paketlerdeki sınıfları derlemek istiyorsanız Run menüsünden Build
komutunu vermeniz yeterlidir. Derleme sonucu hazırlanacak “class” uzantılı
dosyalar “Build” klasörüne yerleştirilir. Bu paketleri içerdikleri “class” uzantılı
dosyalarla birlikte alıp istediğiniz gibi kullanabilirsiniz.
https://www.seckin.com.tr/kitap/971165446
Bölüm 4: Paket Hazırlamak ve Kullanmak
https://www.seckin.com.tr/kitap/851995191#
103
104
Java Programlama Dili
https://www.seckin.com.tr/kitap/766449848#
Kitabın Önsözü
Java konulu çok sayıda kitap yayınlanıp piyasaya verilmişken, Youtube’da Java
hakkında bilgi verme kaygısıyla çekilen binlerce video varken, blog sitelerinde
onbinlerle ifade edilecek sayıda Java konulu makale yayınlanmış iken bu kitabı
neden mi yazıp yayınladık?
Nedeni son derece basit; kolay okunan, ilk okumada anlaşılan Java kaynağı
ihtiyacının olduğunu düşünmemizdir. Bu nedenle bu kitabı yazarken, önceliğimiz
kolay okunmak ve hemen anlaşılmak oldu. Konular, bu kaygı gözetilerek sıralandı.
Henüz anlatılmayan kavramlardan söz edilmemeye, işlevleri ve özellikleri hakkında
bilgi verilmemiş sınıfları kullanmamaya dikkat ettik. Bu kitapta, öğrenilmesi zaman
alan Java programlama diliyle ilgili olarak yazılan her cümlenin ilk okumada
anlaşılmasını amaçladık.
Bu kitabı okumaya, dolayısıyla Java öğrenmeye başlamadan önce hem NetBeans
hem de Eclipse'i indirip kullandığınız bilgisayara kurmanız önerilir. Çünkü kitapta
Java'nın temel özellikleri anlatılırken bazen Eclipse bazen de NetBeans kullanıldı.
Bu kitabı bitirip Java konusunda bilgi sahibi olduğunuzda istediğiniz IDE’yi tercih
edip uygulamalarınızı onunla geliştirmeye devam edebilirsiniz. Bu kitabı okumaya
başlamadan önce IDE’nizi seçtiyseniz kitapta diğer IDE’yle ilgili olarak söylenenlere
Bölüm 4: Paket Hazırlamak ve Kullanmak
105
kayıtsız kalabilirsiniz. Örneğin NetBeans kullanıyorsanız, Eclipse kullananlara
yönelik olarak MySQL veritabanları üzerinde işlem yaparken gerek duyulacak
sürücüyü mysql.com’dan indirip kurma işleminin anlatıldığı sayfayı okumadan
atlayabilirsiniz.
Son yıllarda yayınlanan kitapların yanında ilgili konuların anlatıldığı videolar
veriliyor. İnsanlar bu video filmleri izleyerek programcılıkla ilgili konuları daha
kolay anlayacağını düşünüyor. Bize göre, bu kitabı okuyup Java öğrenmeye
çalışmak, Java’yla ilgili olarak çekilen videoları izlemekten daha verimlidir, daha
anlaşılırdır.
Bu kitabı yazarken öncelikli hedeflerimizden birisi şuydu: Java programlama diliyle
ilgili olarak bu kitapta bulunan herhangi bir konuyu okuyanların başka kaynaklara
bakma ihtiyacını azaltmaktır. Başka bir deyişle bu kitabı okuyan birisinin
okuduğunu anlamadığı için başka kaynaklara başvurmak zorunda kalmasın istedik.
Bu kitabı yazarken kullandığımız bilgisayarda Windows kuruluydu. Bu nedenle
kitap dahilinde kurulan bazı cümlelerde ortamın Windows olduğu vurgulandı.
Konu Java kodu yazmak olduğunda kullanılan işletim sisteminin Windows, Mac
veya Linux olmasının koda olan etkisi yok gibidir.
Download