Offf. Kollarım koptu bu paketleri taşımaktan.
Bugün, markete kadar yürüyüp bir kaç bir şey alayım dedim eve. Ama gidince
habire evdeki bir eksik geliveriyor insanın aklına. Marketlerin insan
psikolojisi üzerindeki etkileri işte. Herşeyi almak istiyor insan. Neyse sonunda
fazla harcama yapmadan (birazda kendimi tutarak) evime gelebildim. Ama bu
paketleri taşımak kollarımı bayağı bir kaslandırdı. Paketleri mutfak tezgahının
üstüne bıraktım ve onlara şöyle bir iki saniye duraksayarak baktım. Hafta
boyunca, Java'daki paket kavramını incelemeye çalışmıştım. Sanırım, market
paketleri ile aralarında bir bağ kurmaya çalışıyordum. Ama sonra kendime geldim
ve böylesine bir ruhsal bunalıma girmeye hiç gerek olmadığına karar vermeyi
başarabildim.
Sonuçta market paketleri market paketleriydi işte.
İşleri bitince çöpe attım gitti. Ya Java paketleri...Hafta boyunca bu konuyu
inceledim. Sonuçta elbette buradaki paket kavramı çok tanıdık geldi. Framework
için namespace(ad alanı) kavramı ne ise, paket kavramıda Java için oydu. Sonuç
olarak, paket kavramı için kafamda şöyle bir tanım oluşturdum. Kısa ve etkili
bir tanım. Paket, içinde sınıf(lar) barındıran bir sistem üyesidir. Bu
tanımdan kısaca paketlerin, içerisinde bir çok sınıf barındırdığı sonucuna
varabiliriz. Ama işin önemli kısmı paketlerin bize sağlamış olduğu avantajları
iyi bilmekti. İşte bu noktada kaynaklarımdan edindiğim bilgiyi şekle dökmeye
karar verdim.
İnanıyorumki bir resim bin kelimeye bedeldir. O
yüzden programlama dillerini öğrenirken, bu tarz temel kavramların şekiller ile
birlikte açıklanması her zaman için öğrenmemi dahada kolaylaştırmıştı. Örneğin,
ado.net içerisindeki sınıfların şekiller ile ifade edilmesi gibi. Bu bakımdan,
Java paketlerinin amaçlarını açıklayabilecek bir şekil üzerinde çalıştım. Burada
bir şeklin daha iyi olacağı kanısına varmamda aslında, Yüzüklerin Efendisi
üçlemesinin önemli bir payıda var. Günlerden bir gün bir gece vakti, ben
askreken, izinim bitmesi nedeni ile Ankara'ya dönüyordum. Yolda gece vakti
sessizlikte kitap okumak her zaman hoşuma gider. O günde Yüzüklerin Efendisi
filminin ilk bölümünü anlatan kitap elimdeydi. Okumaya başladım ama kısa bir
süre sonra bıraktım. Çünkü hobitler, urakhailer, elfler, gandalf filan
birbirlerine karışmıştı. Bir baktım ki bir cümleyi iki üç kere okuyorum konuyu
anlayabilmek için. Bu böyle olmayacak dedim ve ertesi akşam karargahta görevim
bittikten sonra, Kızılay'da bir cep sinemasına giderek filmi izledim. İnanın her
şeyi çok daha iyi anlamıştım. İşte bu nedenle konuyu kavramının bazen en iyi
yolunun resimler olduğuna inanırım. Sözü bu kadar uzatmanında anlamı yok hani.
İşte paket kavramının gerçekleri.

Şekil aslında paket kavramını iyi açıklıyor. Bir
paket içerisinde sınıflar olduğunu biliyoruz. Ama ilk amaç aynı konuların
amaçlarına hizmet eden sınıfları bir araya toplamaktır. Örneğin Matematik
Paketin'de temel işlemleri barındıran Aritmetik Sınıfı, toplama, çıkarma, çarpma
gibi temel aritmetik işlemleri yaparken, Trigonometri sınıfı ise, sin,cos,tan
gibi trigonometrik fonksiyonlar üzerinde yoğunlaşır. Aynı şekilde Kompleks
sınıfıda, kompleks sayıların işlevleri ile ilgilenir. Diğer yandan sadece çizim
işlemleri için kullanabileceğimiz sınıflarıda Grafik Paketi'nde toplayabiliriz.
Böylece paketlerin ilk amacına ulaşmış oluruz. Aynı konulu amaçlar üzerinde
yoğunlaşan sınıfları bir çatı altında birleştirmek.
Diğer yandan, her iki paket içinde A Sınıfı isimli
birer sınıf vardır. Bunlar aynı isimli sınıflardır. Ancak farklı paketler
içerisinde tanımlandıkları için, bir uygulamada her ikisinide kullanma lüksüne
sahibizdir. Tabi burada kullanımda dikkat edilecek bir iki husus vardırki
bunları örnekleri yapmaya başladığımda daha iyi anlayacağımızı düşünüyorum.
Demekki paketlerin ikinci önemli amacı, aynı isimli sınıfların sistem
içerisinde kullanılabilme imkanına sahip olunması olarak söyleyebiliriz.
Bir de üçüncü fakat zaten her tanımdanda
çıkartılabilen bir amaç vardır. O da paketleri oluşturarak sınıfların bir
çatı altında birleşmesi ve sonradan bu paketlerin kolayca yer değiştirerek
farklı platformlara bütün halinde taşınabilmeleri. Bu aslında oldukça ilginç
materyallerin Java'da kullanılmasına neden olmuş bir amaç. Bu amacın sonucu JAR
dosyaları oluşmuş. Oldukça gizemli ve güzel bir kavram. Sıkı durun ilerledikçe
ondanda bahsedeceğim.
Gelelim Java ile paketlerin nasıl tanımlandığına.
Bunun için package anahtar kelimesi kullanılıyor ve paketler oluşturuluyor
demeyi çok isterdim. Ancak olay sadece package tanımı içeren bir dosya
oluşturmak değil. Bunun dışında paketin isimlendirilmesi ile ilgili güzel bir
kural mevcut. İş bu kurala uymaklada kalmıyor sistemdeki CLASSPATH ayarlarınında
bu kurala uygun şekilde yapılandırılması gerekiyor. İşte bu bilgiler ışığından
hareketle, ilk önce isimlendirme mantığına bir göz atmanın uygun olacağını
düşündüm.
Java'da paketleri isimlendirmek için, çoğunlukla
internet alan adlarının isimlendirilme mantığı kullanılıyor. Internetteki her
alan adı birbirinden bağımsız olarak oluşturulmuştur. Buda onların benzersiz
olmalarını sağlamaktadır. İşte bu düşünceden hareket ederek, Java dilinde bir
paketi isimlendirmek için, yine bu alan adı mantığı kullanılmaktadır. Hatta Java
SDK ile birlikte gelen paketlerde bu isimlendirmeyi kullanır. Örneğin
java.awt.image veya org.omg.CORBA gibi. İşte bende ilk paket örneğimi
oluştururken bu isimlendirme mantığını kullancağım. Diğer yandan yapılan bu
isimlendirmenin bilgisayarımızda fiziki olarak adreslenmesi gerekiyor. Peki bu
nasıl mümkün olucak? İşte burada, paket ismimizdeki . ile ayrılan tüm elemanları
içiçe klasörlek şeklinde oluşturmamız ve paket dosyamızı en alttaki klasörde
yaratmamız gerekiyor. İşte böyle demeyi gene çok isterdim ama yine iş bitmiyor.
Çünkü oluşturulan pakete, sistemdeki başka fiziki konumlardanda erişebilmek için
CLASSPATH ayarlarını yapmak gerekiyor.
İşte bu bilgileri inceledikten sonra hemen ilk
paketimi yazmaya koyuldum. Bu amaçla şimdi yapacağım ve sonradan oluşturacağım
paketler için sistemimde ortak bir klasör oluşturdum. Üreteceğim tüm paketleri
bu klasör altında toplayacağım.

İlk paketim içine, üs alma gibi işlemleri içerecek
bir sınıf koymayı düşünüyorum. Bunun gibi matematiksel işlemler ile ilgilenecek
bir kaç sınıf daha koyabilirim. Bu amaçla oluşturacağım pakete aşağıdaki
adlandırmayı uygulamaya karar verdim.
Bu arada şunuda not olarak belirtmekte fayda var.
Çalıştığım kaynakların tümü, paket isimlendirmelerini yaparken internet alan adı
mantığını tersten yazarak uyguluyorlar. Örneğin
www.csharpnedir.com adresini baz alarak
bir paket oluşturmak istediğimizi düşünelim. Bu durumda isimlendirmemiz,
com.csharpnedir.pkg gibi olabilir.
İlk paketim için oluşturduğum bu isimlendirmenin
aynısını, paketleri toplayacağım klasör içerisindede fiziki olarak oluşturmam
gerekiyor. Yani klasör yapısı şu şekilde olucak.

Şimdi paket tanımını içerecek olan java dosyamızı
bu klasör içerisine oluşturabiliriz. Bu amaçla, aşağıdaki kod satırlarını içeren
java dosyasının oluşturdum. Burada tanımlanmış olan public sınıf adının, dosya
adı ile aynı olması gerekmektedir.
package com.bsenyurt.mat;
public class Ussel
{
public double usal(double sayi,double usDegeri)
{
double toplam=1;
for(int i=1;i<=usDegeri;++i)
{
toplam=sayi*toplam;
}
return toplam;
}
} |
Bu kodlarda package tanımını oluşturduğumuz klasör
sistemi ile aynı olduğuna dikkat edelim. Ayrıca dosyamızı public sınıfımızın
ismi ile kaydediyoruz. Uygulamamızı derlediğimizde, Usler.class dosyasının
başarılı bir şekilde oluşturulduğunu görürüz.

Artık paketimizi oluşturduğumuza göre bunu
kullanmanın zamanı geldi. Bunun için paketin bulunduğu klasörden alakasız bir
yerde yeni bir uygulama yazmaya karar verdim. Amacım buradan, yazmış olduğum
paket içindeki Usler sınıfına ve oradanda usAl metoduna erişmek. Bunun için,
sistemde C:\JavaSamples\PaketUygulamasi\ adresinde bir java dosyası oluşturdum.
Bu dosyaya aşağıdaki kodları ekledim.
import com.bsenyurt.mat.*;
public class Uygulama
{
public static void main(String[] args)
{
Ussel u1=new Ussel();
double sonuc=u1.usal(2,4);
System.out.println(sonuc);
}
} |
İlk dikkati çeken nokta paketimizin import anahtar
sözcüğü ile uygulamamıza eklenmesi. Bu şekilde, bu paket içerisindeki Usler
isimli sınıfa erişmeyi umut ediyorum. Ancak bu noktada uygulamayı derlediğimde
aşağıdaki hata mesajları ile karşı karşıya kaldım.

Hata mesajlarının anlamı ortaydı. Java
derleyicisi, import etmek istediğim paketi bulamıyordu. Java derleyicisinin bu
paketi bulabilmesi için, sistemdeki CLASSPATH çevre ayarını değişitirmem ve
derleyiciye bu paketin yerini söylemem gerekiyor. Bunun için xp işletim
sistemine sahip bilgisayarımda My Computer simgesine sağ tıklayıp Properties'e
buradanda Advanced Options kısmına geldim. Daha sonra, Environment Variables
kısmında, gerekli CLASSPATH tanımını ekledim. Burada önemli olan
com.bsenyurt.mat paketinin içinde bulunduğu klasörün eklenmesiydi.

Böylece Java derleyicisine import anahtar sözcüğü
ile eklenen paketi D:\Java\Paket\ klasörü altında araması gerektiğini söylemiş
oluyoruz. Şimdi Uygulama.java programını derlersek, uygulamanın başarı ile
derlendiğini ve çalıştığını görürüz.

Herşey güzel gidiyor. Ama biz bu pakete başka bir
sınıf daha nasıl ekleyebiliriz? Bunun için, oluşturacağımız yeni sınıfı, varolan
paketimiz içinde tanımlamalıyız. Aşağıdaki örnekte olduğu gibi.
package com.bsenyurt.mat;
public class Temel
{
public int Toplama(int ilksayi,int ikincisayi)
{
return ilksayi+ikincisayi;
}
} |
Bu örnek ile, com.bsenyurt.mat isimli pakete Temel
isimli sınıfımızıda eklemiş oluyoruz. İlk önce package tanımlamasının yapılması
ile, izleyen public sınıfın bu package tanımındaki paket için oluşturulduğunu
belirtmiş oluyoruz. Tam bu sırada aklım, C#'taki namespace(ad alanı) kavramına
gidiyor. C# 'ta bir namespace tanımı altında birden fazla sınıfı
belirtebiliyoruz. Acaba Java içinde bu geçerlimi diye merak ediyor ve Temel
sınıfın olduğu kodlara başka bir public sınıf ekliyorum.
package com.bsenyurt.mat;
public class Temel
{
public int Toplama(int ilksayi,int ikincisayi)
{
return ilksayi+ikincisayi;
}
}
public class Log
{
public void LogAl()
{
System.out.println("Logaritma
alıyor...");
}
} |
Ancak programı derlediğimde aşağıdaki hata ile
karşılaştım. Public Log sınıfının farklı bir dosyada olması gerektiğine dair bir
hata mesajı almıştım.

Fakat bu sınıfı public belirteci olmadan
tanımladığımda ise,
package com.bsenyurt.mat;
public class Temel
{
public int Toplama(int ilksayi,int ikincisayi)
{
return ilksayi+ikincisayi;
}
}
class Log
{
public void LogAl()
{
System.out.println("Logaritma
alıyor...");
}
} |
Uygulamanın başarılı bir şekilde derlendiğini ve
Log sınıfı için, otomatik olarak Log.class dosyasının oluşturulduğunu gördüm.

Şimdi ise, Uygulama.java dosyasında, tanımlamış
olduğum Log.class sınıfına ait bir nesne örneği oluşturmak istiyorum. Bu amaçla
Uygulama.java dosyasına aşağıdaki kod satırlarını ekledim.
Log l=new Log();
l.LogAl(); |
Şimdi uygulamayı derlediğimde ise, bir dizi
hatalar serisi ile karşılaştım.

Aslında derleme işleminin gerçekleşmeyişinin
sebebi gayet açık ve ortadaydı. Eğer bir sınıf tanımına herhangibir erişim
belirteci eklemssek (public,private,friendly,protected) bu sınıf friendly olarak
kabul edilmekte. Friendly olarak tanımlanmış bir sınıfa ise sadece tanımlanmış
olduğu paketten erişebiliriz. Bu nedenle Log sınıfını ayrı bir sınıf dosyası
halinde public olarak oluşturmamız gerekir. Aynı Temel sınıfına yaptığımız gibi.
Kaynaklarımda erişim belirleyiciler ile ilgili pek çok açıklama var ve bunun
başka bir kahve molası olacağını düşünüyorum. Bu nedenle şu anki kahvemi
paketler ile birlikte içmeyi tercih ediyorum.
Gelelim paketler arasında aynı isimli sınıfların
nasıl yorumlandıklarına. Paketler aynı isimli sınıfları içerebilirler. Peki bu
durumda bu sınıfları bir uygulama içinde nasıl kullanabiliriz? Bunu öğrenmek
için hemen kolları sıvadım ve path tanımı aşağıdaki gibi olan yeni bir paket
tanımladım.

package com.bsenyurt.yazi;
public class Temel
{
public void Uzunluk(String metin)
{
System.out.println(metin.length());
}
} |
Yazmış olduğumuz bu sınıf, com.bsenyurt.yazi
isimli pakete ait bir sınıf. Temel isimli sınıfımız, hem com.bsenyurt.yazi hemde
com.bsenyurt.mat paketlerinde tanımlanmış. Gerçi sınıfların içeriği tamamen
farklı amaçlara hizmet ettiklerini göstermekte. Şimdi Uygulama.java isimli
dosyamıza bu iki paketide import edip, her iki paketten birer Temel sınıfı
nesnesi yaratmaya çalışalım.
import com.bsenyurt.mat.*;
import com.bsenyurt.yazi.*;
public class Uygulama
{
public static void main(String[] args)
{
Ussel u1=new Ussel();
double sonuc=u1.usal(2,4);
System.out.println(sonuc);
Temel t1=new Temel();
int toplam=t1.Toplama(12,15);
System.out.println(toplam);
Temel t2=new Temel();
t2.Uzunluk("Bu Java 24 için
tükettiğim kaçıncı kahve...");
}
} |
Elbette mantık olarak bu uygulamayı daha
derlemeden hatalı olduğunu söyleyebiliriz. Hata şudur. Derleyici hangi paketin
Temel sınıfını kullanacağını nereden bilecek? Dolayısıyla bu kodları derlemeye
çalıştığımızda aşağıdaki hata serileri ile yüz yüze gelmek zorunda kalırız.

Çözüm ise gayet basit. Oluşturulmak istenen nesne
sınıfı hangi paketin içerisinde yer alıyorsa, o paket isminin yer aldığı bir
notasyonu kullanmak. Aşağıdaki örnek kodlarda olduğu gibi. Örnekte görüldüğü
gibi, Temel sınıfının hangi paketteki versiyonunu kullanmak istiyorsak
tanımlamaları ona göre yapıyoruz. Dikkat edilmesi gereken bir nokta daha vardır.
Kaç paket olursa olsun, ve bu paketler aynı isimde kaç sınıf içerirse içersin,
aşağıdaki Temel sınıfına uygulanan teknik, tüm sınıflar için uygulanmalı yani
derleyciye bu sınıfın hangi paket içindeki sınıf olduğu açıkça bildirilmelidir.
import com.bsenyurt.mat.*;
import com.bsenyurt.yazi.*;
public class Uygulama
{
public static void main(String[] args)
{
Ussel u1=new Ussel();
double sonuc=u1.usal(2,4);
System.out.println(sonuc);
com.bsenyurt.mat.Temel t1=new
com.bsenyurt.mat.Temel();
int toplam=t1.Toplama(12,15);
System.out.println(toplam);
com.bsenyurt.yazi.Temel t2=new
com.bsenyurt.yazi.Temel();
t2.Uzunluk("Bu Java 24 için
tükettiğim kaçıncı kahve...");
}
} |
Son uygulamayıda bitirdikten sonra bir baktım
kafamda bir mırıltı. JAR JAR aman JAR ne zaman...diyerek başlayıp giden bir
melodiyi mırıldanmaya başladığımı farkettim. Sanıyorumki sonraki yudumumda JAR
konusunu işlemem gerekiyor.
JAR Java Arşivi olarak tanımlayabileceğim bir
dosya formatı. Bu dosyanın özelliği, içerisinde çeşitli paketleri
barındırabilmesi. Hatta, paketler dışında, kaynaklardan edindiğim bilgiye göre,
şu an için sadece ne olduklarını bildiğim ama nasıl yapıldıklarını bilmediğim
applet'ler için gerekli resim, ses dosyası gibi kaynaklarıda bünyesinde
barındırabiliyor. Paketleri bu şekilde bir yerde toplamanın amacının onları bir
arada düzenli bir şekilde tutmak olduğunu söyleyebiliriz. Ancak bununla
birlikte, sıkıştırma kabiliyeti sayesinde, özellikle internet üzerinden
gerçekleştirilen download işlemlerindede faydalı olduğunu söyleyebiliriz. Diğer
yandan JAR dosyalarının bence en önemli özelliği, fiziki adres bağımlılığından
kurtulmuş olunması. Bunun anlamı şu. Şu ana kadar yazmış olduğumuz paketleri
belli klasörler içerisinde belirli bir sistematik içerisinde oluşturduk. Ancak
paketleri JAR dosyasına aldıktan sonra, bu dosyayı sistemde her hangibir klasöre
alabilir ve tek bir dosya içinden, tüm paketlerimize kolayca ulaşabiliriz. Ancak
her zamanki gibi CLASSPATH ayarında bu kez JAR dosyasının konumunu
belirtmeliyiz. Ne yazıkki bunuda söylemek durumunda kaldım. Açıkçası şu
CLASSPATH'ten kurtulamamış olmak üzücü.
Bu bilgiler ışığında hemen oluşturduğum iki paketi
tek bir JAR dosyası içerisine almak için girişimlerime başladım. Bunun için
paket tanımlarının yer aldığı en üst klasöre çıkmam gerekiyor. Yani aşağıdaki
şekilde görüldüğü gibi JAR dosyasını oluşturmak için gerekli komutumu Paket
isimli klasör içinden vereceğim. Böylece, bu klasör altındaki tüm paketleri JAR
dosyası içine almış olacağım.

İşte JAR dosyası için kullandığım komut.

Görüldüğü gibi JAR dosyası başarılı bir şekilde
oluşturuldu. Burada jar komut dizimindeki -cf parametresi, izleyen parametredeki
isimde(bs.jar) bir JAR dosyası yaratacağımızı ve bu dosya içine com dizini
altındaki tüm paketleri dahil edeceğimizi belirtiyor. Şimdi JAR dosyasının ününe
ün katan işlevi gerçekleştirmek lazım. Bu dosyayı buradan alıyorum ve C:
sürücüsünün hemen altındaki javap klasörü altına taşıyorum. Hemen ardından son
yazmış olduğum uygulamayı çalıştırıyorum. Uygulama çalışıyor çalışmasınada şu
noktada paketlere nereden bakıldığından emin değilim. Bir anda aklıma CLASSPATH
tanımı geliyor. Hemen CLASSPATH tanımımı yeniden ayarlıyorum. Ancak bu kez bir
klasörden ziyade JAR dosyasını bulunduğu fiziki adres ile birlikte belirtiyorum.

Lütfen CLASSPATH tanımının nasıl yapıldığına
dikkat edelim. Önceki tanımlamalardan farklı olarak jar dosyasının açıkça
belirtiyoruz. Şimdi uygulamayı tekrar çalıştırıyorum ve başarılı bir şekilde
çalıştığını görüyorum.

Şimdi aklıma kurnazca bir fikir geliyor. Bu
paketleri JAR dosyası içine almak ile acaba, bu paketleri sistemden kaldırdığım
zamanda uygulamam çalışıcakmı? Bu amaçla yola çıkarak birazda sinsi bir
gülümseme ile, paketleri tanımlamış olduğum klasörleri sistemdeki başka bir yere
taşıdım. Programı tekrar çalıştırdığımda ise, aşağıdaki hata mesajı ile
karşılaştım.

Beklediğim gibi olmadı. Bir hata almamayı
düşünüyordum. Sanırım beklentim, paketleri JAR dosyası içerisine almak ile,
onları tüm içerikleri ile birlikte buraya alabileceğim yönündeydi. Ama bölye
olmadı. Demekki JAR dosyalarını oluşturmakla paketleri bir yerde topluyorduk
ancak paketlerin adreslerini kesinlikle değiştirmememiz veya silmememiz
gerekiyordu. Bununla birlikte bu JAR dosyasının fiziki olarak sistemden
istediğimiz yere taşıyabiliriz. Ama yinede CLASSPATH ayarlarını buna göre
uyarlamamız gerekiyordu.
Diğer bir sorun ise şuydu. Sonradan yazılmış başka
bir paketi bu JAR dosyasına nasıl alabilirdik. Pekala JAR dosyasını tekrardan
üretebilirdik. Peki ya paketimiz başka bir klasörde yer alıyorsa, bu paketi
JAR dosyasına eklememiz ile, tek bir CLASSPATH tanımı sayesinde, sistemdeki
farklı klasörlerde yer alan paketlere erişebilirmiydik acaba? Güzel soru
değil mi? Bunu öğrenmenin tek bir yolu var. Java\Paket\ altındaki paket
tanımlarından farklı bir yerde bir paket oluşturmak, bunu bs.jar dosyasına
eklemek ve uygulama içerisinde bu yeni pakete erişmeye çalışmak.

Yeni klasör içerisinde hemen com.csharp.pk1
paketini oluşturdum.
package com.csharp.pk1;
public class Deneme
{
public void Yaz()
{
System.out.println("com.csharp.pk1
paketi burada...");
}
} |
Java dosyasını başarı ile derledikten sonra, sıra
bu paketi bs.jar dosyasına eklemeye geldi. Bunun için aşağıdaki komut dizimini
kullandım.

Bu komut ile var olan JAR dosyamıza yeni bir paket
daha ekleyebiliriz. Aslında -uf belirtilen dosyayı günceller. Şimdi jar
dosyasının içeriğine baktığımızda, com.csharp.pk1 paketinin konumununda
eklendiğini görürüz.

Şimdi bu yeni paketimizde yazdığımız sınıfımıza
ait metodumuzu uygulamamızda kullanalım.
import com.bsenyurt.mat.*;
import com.bsenyurt.yazi.*;
import com.csharp.pk1.*;
public class Uygulama
{
public static void main(String[] args)
{
Ussel u1=new Ussel();
double sonuc=u1.usal(2,4);
System.out.println(sonuc);
com.bsenyurt.mat.Temel t1=new
com.bsenyurt.mat.Temel();
int toplam=t1.Toplama(12,15);
System.out.println(toplam);
com.bsenyurt.yazi.Temel t2=new
com.bsenyurt.yazi.Temel();
t2.Uzunluk("Bu Java 24 için
tükettigim kaçinci kahve...");
Deneme d1=new Deneme();
d1.Yaz();
}
} |
Uygulamayı derlediğimde, JAR dosyasına eklemiş
olduğum yeni pakete ait sınıfında başarılı bir şekilde örneklendirildiğini ve
Yaz metodunun çalıştırıldığını gördüm.

Hay allah yine kahvem bitti. Artık paket
kavramınıda iyice işledikten sonra dinlenmenin zamanı geldi. Bir sonraki kahve
molasında ise erişim belirteçlerini incelersem Java işinde biraz daha yol
katetmiş olacağımı sanıyorum. En azından J harfinin şapkasını çizmiş
olabileceğim.
Burak Selim ŞENYURT
selim@bsenyurt.com