Java kütüphanesinde çok sayıda metot ve değişken tanımları vardır. Metotların ve değişkenlerin her biri bir sınıf içindedir. Metotları ve değişkenleri içeren sınıfların sayıları da çok fazladır. Erişimi kolaylaştırmak için sınıflar gruplara ayrılmışlardır. Birbirleriyle ya da aynı konuyla ilişkili olan sınıflar bir grup içinde toplanır. Bu grupların her birine bir paket (package) diyoruz. Başka bir deyişle, bir paket birbirleriyle ilişkili sınıfları içeren bir ambardır (dizin). Örneğin giriş/çıkış ile ilgili olan bütün sınıflar java.io paketi içindedir. Bir pakette aynı adı taşıyan iki sınıf olamaz. Ama farklı paketler içinde aynı adı taşıyan sınıflar olabilir. Paket adları sınıfların karışmasını önler.
İleride programlarımızın sayısı arttıkça, sınıf adlarının birbirleriyle karışmasını önlemek için birbirleriyle ilgili sınıfları aynı pakete koymayı öğreneceksiniz.
Bütün Java paketlerini
http://www.oracle.com/technetwork/java/javase/documentation/api-jsp-136079.html
web adresinden görebilirsiniz. Burada çok kullanacağımız birkaç tanesini kısaca açıklamakla yetineceğiz.
java.lang Paketi
Java sınıf paketleri arasında en önemlilerinden birisidir. import deyimi yazmaya gerek kalmaksızın, her java programına kendiliğinden (automatic) girer. Java dilinin özünü oluşturan sınıfları içerir.
java.io Paketi
Giriş-çıkış işlemlerini yapan sınıfları içerir.
Bir program koşarken, sistemin dış çevre birimlerinden veri alması ya da onlara veri göndermesi gerekebilir. Kullanıcının bilgisayarla etkileşim içinde olabilmesi için, onunla iletişim kurabilmelidir. Bunun tek yolu, bilgisayara girdi (input) göndermek ve ondan çıktı (output) almaktır. Hemen her dil bu iş için çeşitli yöntemlere sahiptir. Giriş/çıkış birimleri dediğimiz birimler bu işe yarar. Örneğin, klavye, dosya, uzaktaki bilgisayar, ağ gibi araçlar bilgisayara girdi yapabilirler. Ekran, yazıcı, dosya, ses-aygıtları, ağ gibi araçlarla bilgisayardan çıktı alınabilir. Her gün sayısı ve niteliği değişen bu giriş-çıkış aygıtlarını kullanmakta Java çok hünerlidir. Onları ilerideki derslerde yeri geldikçe ele alacağız. Ama ilk derslerde çok kullanacağımız bazı kavramları tanımamız gerekiyor.
Bu paketin içerdiği iki önemli sınıf
InputStream
OutputStream
sınıflarıdır. Stream (akım) sözcüğü sisteme giren ya da sistemdan çıkan karakter dizileridir. Bütün veriler birer karakter dizisi olarak sisteme girer veya sistemden çıkarlar. InputStream sınıfı girişleri, OutputStream sınıfı çıkışları düzenler.
Her türlü giriş-çıkış işlemlerinin yapılabilmesi için, her iki sınıfın alt sınıfları ve onların çok sayıda metotları tanımlıdır. Bazılarını bu ders boyunca kullanacağız.
OutputStream Sınıfının alt sınıfları
InputStream Sınıfının alt sınıfları
System Sınıfı
java.lang
Class System
java.lang.Object
extended by java.lang.System
standard output,
standard error,
standard input
akımlarını yönetir. Başka bir deyişle, standart giriş-çıkış işlemlerini yapan ve hata iletilerini veren bir sınıftır. Genel olarak, sistemin dışarıyla olan ilişkilerini yönetir. Çevre değişkenlerine erişir, veri ve dosya girdi-çıktısından sorumludur. Bunları yapabilmesi için, java.io paketi içindeki InputStream ve OutputStream sınıflarını kullanır (implement).
G/Ç Akım yolları (I/O streams)
Bir java uygulaması başladığında, Sytem sınıfı kendiliğinden şu üç giriş/çıkış akım-yolunu açar:
in
out
error
Kullanacağımız Windows işletim sisteminde standart giriş yolu klavye, standart çıkış yolu ekrandır. İstenirse bunlar değiştirilebilir. Örneğin klavyeden giriş yerine bir dosyadan giriş yapılabilir. Benzer olarak, ekran yerine yazıcıya veya bir dosyaya çıkış yapılabilir. Ama biz bu ders boyunca standart giriş birimi olarak klavyeyi, standart çıkış birimi olarak ekranı kullanacağız. Giriş in, çıkış out ve hata error akım-yollarıyla temsil edilir. Bunlar System sınıfında girdi, çıktı ve hata 'yı tutan değişkenlerdir. Bu değişkenlere nesne yönelimli programlama dillerinde, değişken demek yerine, gendeğer (property) denilir. Bazı kaynaklar “özellik” sözcüğünü kullanır. Bu kitapta gendeğer sözcüğünü tercih edeceğiz.
Yukarıdaki üç gendeğerin değerlerinin nasıl oluştuğunun ayrıntısına girmeden, konuyu basitleştirmek için şunu söyleyebiliriz. Bir java uygulaması başlayınca, kullanıcının klavye ile yazdıkları in akım-yoluna atanan değerdir. Sistem bu girdiyi algılar. Sistemin çıktıları out akım-yoluna atanan değerdir. O değer ekrana yazılır ve kullanıcıya iletilmiş olur. Bu işlemler sırasında bir hata oluşursa, o hata error akım-yoluna atanır ve otomatik olarak ekrana yazılır.
Girdi/Çıktı için Metotlar
Java dilinde girdi/çıktı işlemleri için InputStream ve OutputStream sınıflarının alt sınıflarına ait olan aşağıdaki metotları (fonksiyon) çok kullanacağız. O nedenle, onlar hakkında basit temel bilgileri edinmemiz gerekiyor.
Nesne Yönelimli Programlama dillerinde, fonksiyon kavramı matematikteki fonksiyon kavramından biraz daha geneldir. O nedenle, fonksiyon terimi yerine metot terimi kullanılır.
print()
java.io -> OutputStream -> FilterOutputStream -> PrintStream alt sınıfı içinde bir metottur (fonksiyon). Standart çıkışa (ekran) çıktı gönderir. Sözdizimi şöyledir:
System.out.print(parametre);
println()
PrintStream alt sınıfı içinde bir metottur (fonksiyon). print() metodu ile aynı işi yapar, ancak çıktıyı gönderdikten sonra ayrıca satırbaşı yapar (\r\n). Sözdizimi:
System.out.println(parametre);
printf()
PrintStream alt sınıfı içinde bir metottur (fonksiyon). Konsola biçemli (formatlı) çıktı gönderir.
System.out.printf(parametre);
Write()
PrintStream alt sınıfı içinde bir metottur (fonksiyon). Standart çıkışa (ekran) çıktı gönderir. Sözdizimi:
System.out.Write(parametre);
Bu metot parametre olarak Java dilindeki her veri tipini kabul eder.
Read()
InputStream sınıfı içinde bir metottur . Kalıtım özeliği nedeniyle, bütn alt sınıfları bu metoda sahiptir. Byte (karakter) ya da byte arraylaerini farklı giriş birimlerinden okur. İleride bu metodu daha ayrıntılı inceleyeceğiz.
Parametre
public int f(int x; double y)
{
int a;
double b;
…
}
Yukarıdaki f metodunda () parantezi içindeki değişkenlere parametre {} gövdesi içindekilere yerel değişken denilir. Bunun nedeni, fonksiyonun bağlı olduğu değişkenleri öteki yerel değişkenlerden ayırmak içindir. Matematikte f(x,y) fonksiyonu için x, y değişkenleri ne anlam taşıyorsa, bilgisayar fonksiyonları için parametreler aynı anlamı taşır.
java.text
Metinleri işleyen sınıflardan oluşur. Farklı dil ve kültürlere göre tarih, sayı ve iletilerin yazılmasını sağlar.
java.math
Duyarlı matematiksel işlemler yapmak için gerekli sınıfları içerir. Matematikte kullanılan standart fonksiyonların hepsini bu sınıfta bulabilirsiniz.
java.awt
Kullanıcı arayüzü (UI-user interface) tasarımı ve olay-yönlendirici (event-handler) için gerekli standart öğeleri içerir.
javax
Java dilinin genişlemesini sağlayan sınıfları içerir.
java.applet
Java appletleri yaratmak için gerekli sınıfları içerir.
java.beans
Java bean’leri yaratmak için gerekli sınıfları içerir.
java.sql, javax.sql
JDBC API yardımıyla veri tabanlarına erişimini ve veri işlemeyi sağlayan sınıfları içerirler.
java.rmi
Java bean’leri yaratmak için gerekli sınıfları içerir.
java.net
Ağ (network) uygulamaları yaratmak için gerekli sınıfları içerir.
java.security
Kriptografik güvenlik için gerekli sınıfları içerir.
İleride programlarımızın sayısı arttıkça, sınıf adlarının birbirleriyle karışmasını önlemek için birbirleriyle ilgili sınıfları aynı pakete koymayı öğreneceksiniz.
Bütün Java paketlerini
http://www.oracle.com/technetwork/java/javase/documentation/api-jsp-136079.html
web adresinden görebilirsiniz. Burada çok kullanacağımız birkaç tanesini kısaca açıklamakla yetineceğiz.
java.lang Paketi
Java sınıf paketleri arasında en önemlilerinden birisidir. import deyimi yazmaya gerek kalmaksızın, her java programına kendiliğinden (automatic) girer. Java dilinin özünü oluşturan sınıfları içerir.
java.io Paketi
Giriş-çıkış işlemlerini yapan sınıfları içerir.
Bir program koşarken, sistemin dış çevre birimlerinden veri alması ya da onlara veri göndermesi gerekebilir. Kullanıcının bilgisayarla etkileşim içinde olabilmesi için, onunla iletişim kurabilmelidir. Bunun tek yolu, bilgisayara girdi (input) göndermek ve ondan çıktı (output) almaktır. Hemen her dil bu iş için çeşitli yöntemlere sahiptir. Giriş/çıkış birimleri dediğimiz birimler bu işe yarar. Örneğin, klavye, dosya, uzaktaki bilgisayar, ağ gibi araçlar bilgisayara girdi yapabilirler. Ekran, yazıcı, dosya, ses-aygıtları, ağ gibi araçlarla bilgisayardan çıktı alınabilir. Her gün sayısı ve niteliği değişen bu giriş-çıkış aygıtlarını kullanmakta Java çok hünerlidir. Onları ilerideki derslerde yeri geldikçe ele alacağız. Ama ilk derslerde çok kullanacağımız bazı kavramları tanımamız gerekiyor.
Bu paketin içerdiği iki önemli sınıf
InputStream
OutputStream
sınıflarıdır. Stream (akım) sözcüğü sisteme giren ya da sistemdan çıkan karakter dizileridir. Bütün veriler birer karakter dizisi olarak sisteme girer veya sistemden çıkarlar. InputStream sınıfı girişleri, OutputStream sınıfı çıkışları düzenler.
Her türlü giriş-çıkış işlemlerinin yapılabilmesi için, her iki sınıfın alt sınıfları ve onların çok sayıda metotları tanımlıdır. Bazılarını bu ders boyunca kullanacağız.
OutputStream Sınıfının alt sınıfları
InputStream Sınıfının alt sınıfları
System Sınıfı
java.lang
Class System
java.lang.Object
extended by java.lang.System
standard output,
standard error,
standard input
akımlarını yönetir. Başka bir deyişle, standart giriş-çıkış işlemlerini yapan ve hata iletilerini veren bir sınıftır. Genel olarak, sistemin dışarıyla olan ilişkilerini yönetir. Çevre değişkenlerine erişir, veri ve dosya girdi-çıktısından sorumludur. Bunları yapabilmesi için, java.io paketi içindeki InputStream ve OutputStream sınıflarını kullanır (implement).
G/Ç Akım yolları (I/O streams)
Bir java uygulaması başladığında, Sytem sınıfı kendiliğinden şu üç giriş/çıkış akım-yolunu açar:
in
out
error
Kullanacağımız Windows işletim sisteminde standart giriş yolu klavye, standart çıkış yolu ekrandır. İstenirse bunlar değiştirilebilir. Örneğin klavyeden giriş yerine bir dosyadan giriş yapılabilir. Benzer olarak, ekran yerine yazıcıya veya bir dosyaya çıkış yapılabilir. Ama biz bu ders boyunca standart giriş birimi olarak klavyeyi, standart çıkış birimi olarak ekranı kullanacağız. Giriş in, çıkış out ve hata error akım-yollarıyla temsil edilir. Bunlar System sınıfında girdi, çıktı ve hata 'yı tutan değişkenlerdir. Bu değişkenlere nesne yönelimli programlama dillerinde, değişken demek yerine, gendeğer (property) denilir. Bazı kaynaklar “özellik” sözcüğünü kullanır. Bu kitapta gendeğer sözcüğünü tercih edeceğiz.
Yukarıdaki üç gendeğerin değerlerinin nasıl oluştuğunun ayrıntısına girmeden, konuyu basitleştirmek için şunu söyleyebiliriz. Bir java uygulaması başlayınca, kullanıcının klavye ile yazdıkları in akım-yoluna atanan değerdir. Sistem bu girdiyi algılar. Sistemin çıktıları out akım-yoluna atanan değerdir. O değer ekrana yazılır ve kullanıcıya iletilmiş olur. Bu işlemler sırasında bir hata oluşursa, o hata error akım-yoluna atanır ve otomatik olarak ekrana yazılır.
Girdi/Çıktı için Metotlar
Java dilinde girdi/çıktı işlemleri için InputStream ve OutputStream sınıflarının alt sınıflarına ait olan aşağıdaki metotları (fonksiyon) çok kullanacağız. O nedenle, onlar hakkında basit temel bilgileri edinmemiz gerekiyor.
Nesne Yönelimli Programlama dillerinde, fonksiyon kavramı matematikteki fonksiyon kavramından biraz daha geneldir. O nedenle, fonksiyon terimi yerine metot terimi kullanılır.
print()
java.io -> OutputStream -> FilterOutputStream -> PrintStream alt sınıfı içinde bir metottur (fonksiyon). Standart çıkışa (ekran) çıktı gönderir. Sözdizimi şöyledir:
System.out.print(parametre);
println()
PrintStream alt sınıfı içinde bir metottur (fonksiyon). print() metodu ile aynı işi yapar, ancak çıktıyı gönderdikten sonra ayrıca satırbaşı yapar (\r\n). Sözdizimi:
System.out.println(parametre);
printf()
PrintStream alt sınıfı içinde bir metottur (fonksiyon). Konsola biçemli (formatlı) çıktı gönderir.
System.out.printf(parametre);
Write()
PrintStream alt sınıfı içinde bir metottur (fonksiyon). Standart çıkışa (ekran) çıktı gönderir. Sözdizimi:
System.out.Write(parametre);
Bu metot parametre olarak Java dilindeki her veri tipini kabul eder.
Read()
InputStream sınıfı içinde bir metottur . Kalıtım özeliği nedeniyle, bütn alt sınıfları bu metoda sahiptir. Byte (karakter) ya da byte arraylaerini farklı giriş birimlerinden okur. İleride bu metodu daha ayrıntılı inceleyeceğiz.
Parametre
public int f(int x; double y)
{
int a;
double b;
…
}
Yukarıdaki f metodunda () parantezi içindeki değişkenlere parametre {} gövdesi içindekilere yerel değişken denilir. Bunun nedeni, fonksiyonun bağlı olduğu değişkenleri öteki yerel değişkenlerden ayırmak içindir. Matematikte f(x,y) fonksiyonu için x, y değişkenleri ne anlam taşıyorsa, bilgisayar fonksiyonları için parametreler aynı anlamı taşır.
java.text
Metinleri işleyen sınıflardan oluşur. Farklı dil ve kültürlere göre tarih, sayı ve iletilerin yazılmasını sağlar.
java.math
Duyarlı matematiksel işlemler yapmak için gerekli sınıfları içerir. Matematikte kullanılan standart fonksiyonların hepsini bu sınıfta bulabilirsiniz.
java.awt
Kullanıcı arayüzü (UI-user interface) tasarımı ve olay-yönlendirici (event-handler) için gerekli standart öğeleri içerir.
javax
Java dilinin genişlemesini sağlayan sınıfları içerir.
java.applet
Java appletleri yaratmak için gerekli sınıfları içerir.
java.beans
Java bean’leri yaratmak için gerekli sınıfları içerir.
java.sql, javax.sql
JDBC API yardımıyla veri tabanlarına erişimini ve veri işlemeyi sağlayan sınıfları içerirler.
java.rmi
Java bean’leri yaratmak için gerekli sınıfları içerir.
java.net
Ağ (network) uygulamaları yaratmak için gerekli sınıfları içerir.
java.security
Kriptografik güvenlik için gerekli sınıfları içerir.