pcmania
█ █ █ █ █ %51
   
Mesajlar: 1,040
Katılım: Mar 2008
Karma Puanı:
Açtigi Toplam Konu: 278
|
Java Programlama Dili Ders Notları (yunus)
JAVA PROGRAMLAMA DİLİ
Giriş
Java, Sun Microsystems tarafından 1991 yılında geliştirilmiş nesneye yönelik bir programlama dilidir. Java genelde Hotjava veya Netscape, Mosaic gibi diğer WWW brovserları ile beraber anılır. Hotjava diğer brovserlardan farklı olarak WWW'den appletleri yükleyip çalıştırabilir.
Burada Applet kelimesi, Hotjava gibi javaya uygun brovserlar tarafından açılan WWW sayfalarından interaktif olarak çalıştırılabilen program anlamına gelmektedir. Appletlerin görünüş açısından imajlardan hiçbir farkı yoktur. Fakat Appletler imajlardan farklı olarak dinamik ve interaktiftirler. Bu nedenle appletler animasyon veya kullanıcıdan gelebilecek isteklere cevap verebilecek alanların veya şekillerin tasarımında kullanılabilirler.
Applet tasarlamak için önce Java dilinde program yazılır derlenir ve HTML Web sayfasında bu applet referans gösterilir. Oluşturulan HTML ve Java dosyaları Web sayfasında HTML ve imaj dosyaları ile aynı şekilde görünürler. Herhangibir kullanıcı Java desteğine sahip bir brovserla bu sayfayı incelerse applet sisteme otomatikman yüklenir ve çalıştırılır. Eğer brovser Java desteği sağlamıyorsa yazılar ve imajlar statik olarak ekrana gelir. Appletlerin çalıştırılması ve ekran çıktılarının görülmesi için Java desteğine sahip bir brovser şarttır.
Java sadece applet yazmak için tasarlanmış bir dil değildir. C yada Pascalda çözülebilen tüm problemler Javada da çözülebilir. Unix nasıl C'de yazılmışsa Hotjava da Java kullanılarak yazılmıştır.
Java'nın Platform Bağımsızlığı
Java ilk tasarlandığında kullanılması düşünülen ilk yerler televizyon, müzik seti gibi basit ev aletlerinin programlarıydı. Java, avantajı olan küçük ve kolaylıkla başka platformlara taşınabilme özelliği nedeniyle, çok değişik tipte ve kapasitede bilgisayarın bağlı olduğu WWW' de da çalışabilecek programların yazılımı için ideal bir dil haline gelmiştir.
Javanın en önemli avantajı platformdan bağımsız olmasıdır. Platform bağımsızlığı, bir programın bir bilgisayar sisteminden başka bir bilgisayar sistemine kolayca taşınmasıdır.
Kaynak seviyesinde Javanın primitiv data tipleri bütün platformlara uygun niteliktedir. Javanın foundation class kütüphaneleri yazılan herhangibir programın bir platformdan diğerine tekrar yazmaya gerek kalmadan taşınmasının mümkün kılar.
Platform bağımsızlığın sadece kaynak seviyesinde kalmaz. Java binary dosyaları da her platformda tekrar derlenmeye gerek duyulmadan çalışır.
Bu dosyaların diğer bir adı da byte kod dosyalarıdır.
Byte Kodları
Byte kodları makine kodlarına benzeyen fakat işlemciye özel olmayan kodlardır.
Normal olarak C veya başka bir dilde program yazıldığında derleyici önce yazılım kontrolü yapar daha sonra makrolar, kütüphanelerdeki alt programlar çağrılır ve en son olarak da işlemciye özel kod üretilir.
Javada ise herşey çok daha farklıdır. Java ortamında program geliştirme iki farklı adımda olur.
1) Java derleyici
2) Java yorumlayıcı
Java derleyici yazılmış herhangi bir Java programını derledikten sonra işlemciye özel makina kodları üretmek yerine bytekod dosyası oluşturur.
Programı çalıştırmak içinse bytekod yorumlayıcısı çalıştırılır ve bu program Javada yazılmış programı yürütür. Yorumlayıcı ya kullanıcı tarafından çalıştırılır ya da Hotjava brovserında olduğu gibi programın içine yerleştirilmiş bir bytekod yorumlayıcısı appletleri çalıştırır.
Byte kod üretimim ve yorumlayıcı kullanımı dezavantaj gibi görünse de programın bytekod olarak saklanması programın platformdan bağımsız olmasını da sağlar. Böylelikle program herhangibir donanıma sahip herhangibir işletim sisteminde çalıştırılabilir.
Ancak bytekod dolayısıyla yorumlayıcı kullanımı programın işletim hızını düşürebilir. Çünkü
Javada yazılmış programla donanım arasında yorumlayıcı vardır. Çoğu java programı için hız zaten kritik değildir. Bu yüzden hız gerektiren programlar ya javada yazılmaz ya da donanıma özel kod üretimi yani derleme yapılır. Ancak o zaman platformdan bağımsız olmaz.
Java Nesneye Dayalı bir Dildir
Diğer birçok nesneye dayalı dilde olduğu gibi Java da temel data tiplerini, sistem giriş çıkış fonksiyonlarını ve bazı diğer fonksiyonları içeren sınıf kütüphanesine sahiptir. Bu fonksiyonlar da Java ortamının ayrılmaz birer parçasıdırlar. Java aynı zamanda internet protokollerinin çoğunu destekleyen fonksiyonlara da sahiptir.
Java kütüphanesi de Javada oluşturulduğundan kütüphanenin içindeki fonksiyonlar da platformdan bağımsızdır.
Her ne kadar java C ve C++ dillerini baz almış olsa da bu dillerde mevcut olan güç kavramlar Javada yoktur. Örneğin C'deki pointer kavramı Javada yoktur. Stringler ve diziler nesne olarak tanımlanmıştır. Ayrıca bellek yönetimi de otomatik olarak yapılır. Javada çok fazla komut olmaması güç bulunabilecek hataların olmasını engeller. Fakat uygun komutlardan oluşan bir dil olması sayesinde de Java güçlü bir dil sayılır.
Javada İlk Program
Javada program yazılması için Sun şirketinin Java geliştirme kitine (JDK) ihtiyaç vardır. Burada jdk 1.3 baz alınmıştır.
Çoğu kez yapıldığı gibi biz de ilk programımızda ekrana Merhaba Dünya yazdırmaya çalışacağız. Normalde DOS’da Edit gibi bir editörde ya da Windows’da Notepad’de Java kodlarımızı yazabiliriz. İlk olarak programımızı bu yolla yazmayı deneyelim.
Örnek:
Class Merhaba Dunya {
Public static void main (String args[]) {
System.out.println(“Merhaba Dunya!” ;
}
}
Bu programı çalıştırmadan önce kısaca inceleyelim:
Programda iki ana kısım vardır:
1) Bütün program aynı sınıf (class) tanımı altına sokulmuştur.
2) Programın gövdesi main() fonksiyonu çağrılarak oluşturulmuştur. Java uygulamalarında da C veya C++ da olduğu gibi main() program çalıştığında çalışan ilk kısımdır.
Şimdi yazdığımız kodları saklayalım. Genelde Java programları tanımlandıkları sınıf adı ve java uzantılı olarak adlandırılırlar. Bu programı da Merhaba Dunya.java adı altında saklayalım.
Programımızı derlemek için Sun JDK programında derleyici javac yazılarak çağrılır ve hemen ardından programın adı yazılır.
C:\>javac Merhaba Dunya.java
Eğer başarılı yani hatasız bir derleme olursa kaynak dosyası ile aynı dizinde .class uzantılı dosya oluşur. Örneğimizde, Merhaba Dunya.class dosyasının oluşmuş olması gereklidir. Bu Java bytekod dosyasıdır. Bu dosya Java yorumlayıcısı kullanılarak çalıştırılabilir. JDK’ dan Java yorumlayıcısı java yazılarak çağrılır.
Programı çalıştırmak içinse;
C:\>java Merhaba Dunya
komutu girilir. Programın adı yazılırken .class uzantısı yazılmaz. Programda herhangibir hata yoksa ekranda “Merhaba Dünya” mesajı belirecektir.
Nesneye Dayalı Düşünme
Nesneye dayalı programlama son yıllardaki en önemli gelişmelerdendir. Nesneya dayalı programlama mantığını Lego oyuncakların mantığına ya da toplama bilgisayarlara benzetebiliriz. Nasıl ki Lego oyuncaklarında çok sayıda standart blok amaca uygun olarak birleştirilip istenen yapı elde ediliyorsa ya da toplama bilgisayarlarda çeşitli firmalardan alınan değişik kartlar birleştirilip bir bilgisayar oluşturuluyorsa nesneye dayalı bir program da birbiriyle ilişkili bağımsız modüllerden oluşur.
Nesneler ve Sınıflar
Sınıf benzer özellik taşıyan nesnelerin oluşturduğu gruba verilen addır.
Nesneye dayalı programlama yapılırken genelde nesne değil o nesnenin ait olduğu sınıf tanımlanır. Örneğin ağaç sınıfı ağaçların özelliklerini içerir. Ağaç sınıfı içinde değişik özelliklere sahip ağaçlardan oluşan çok sayıda nesne oluşturulabilir.
Daha yakın bir örnek olarak buton programlamak istediğimizde buton sınıfı tanımlanır. Bu sınıf içinde butona ait görünüm, renk gibi özellikler yer alır. Ek olarak butonun nasıl davrandığı yani tek tıklamada mı çift tıklamada mı aktif olduğu tıklandığında renk değiştirip değiştirmediği aktif olunca ne yaptığı da buton sınıfı içinde tanımlanmıştır.
Buton sınıfı bir kez tanımlandıktan sonra sınıf içinde tanımlı özellikler için yeniden kod yazmaya gerek yoktur.
Davranış ve Sıfatlar
Javada oluşturulan her sınıf genelde iki parçadan oluşur:
* Sıfat
* Davranış
Sıfatlar:
Nesneleri birbirinden ayırmaya görünümlerini, durumlarını ve diğer özelliklerini belirlemeye yararlar. Sıfatlar değişkenler yardımıyla tanımlanırlar. Bu nedenle sıfatlar nesneye ait global değişkenler gibi dedüşünülebilir. Sınıfa ait her örnekte değişkenler farklı değer alabildikleri için değişkenler aynı zamanda örnek değişkenleri veya örneğe ait değişken olarak adlandırılırlar.
Davranış:
Sınıf davranışı sınıfa ait hangi örneklerin durumlarını ne şekilde değiştirebileceklerini gösterir. Davranış nesnenin kendi kendini etkileyebileceği tek yoldur.
Sınıfın davranışını belirlemek için diğer dillerde fonksiyonlara benzeyen fakat sınıfın içinde tanımlanan metodlar kullanılır. C++’ın aksine Javada sınıfın dışında fonksiyonlar yoktur.
Buradaki metodun anlamı sınıf içerisinde tanımlı ve o sınıfın örnekleri üzerinde uygulanabilen fonksiyonlar ifade edilmiştir.
Metodlar sadece tek bir nesne üzerinde etkili değildirler. Aynı zamanda farklı nesneler arasında yapılan haberleşme de metodların kullanımı ile olur.
Şimdi bir örnekle sınıf ve davranış terimlerini daha yakından inceleyelim:
class Motosiklet {
String marka;
String renk;
boolean motordurumu;
void çalışıyor() {
if (motordurumu= =true)
System.out.println (“Motor çalışıyor” ;
else {
motordurumu = true;
System.out.println (“Motor çalışıyor” ;
}
}
void gör() {
System.out.println (“Bu motosiklet”+renk+” “+marka);
if (motordurumu= = true)
System.out.println (“Çalışıyor” ;
else System.out.println (“Duruyor” ;
}
}
Bu program ile motorun davranışı incelenir ve motorun durumu, renk ve marka gibi özellikleri ekrandan izlenir.
Javada doğrudan sınıflarla genelde çalışılmaz. Bunlar kullanılarak nesneler yaratılır ve operasyonlar nesneler üzerinde yapılır.
Sınıf Hiyerarşisi Oluşturma
Çok sayıda sınıf oluşturuluyorsa sadece o ana kadar var olan sınıfların yanında yeni oluşturulmakta olan sınıfları da sıralamakta fayda vardır. Bu nedenle kod yazmaya başlamadan önce sınıfların organizasyonuna yönelik planlama yapmak avantajlıdır.
Örneğin bir önceki örnekte motosiklet diye bir sınıf tanımlamıştık. Biz bir de araba diye bir sınıf tanımlamak isteyebiliriz. Araba ve Motosiklet motorlu taşıtlar olduğundan ve ortak özellikleri olduğundan ilk akla gelen motosiklet sınıfında kullanılabilecek herşeyi arabaya kopyalamaktır.
Fakat daha sonra işin içine motorsuz taşıtlar da girdiğini herşey karışacaktır. İşte bu yüzden en başta sınıf hiyerarşisi oluşturma avantajlıdır.Bu yolla şöyle bir yapılanmaya gidilebilir:
OBJECT
TAŞIT
MOTORLU TAŞIT MOTORSUZ TAŞIT
Alt Sınıf Oluşturma
Java ile ilk programlar yapılırken alt sınıf oluşturmaya belki de en çok applet yazılırken ihtiyaç duyulur. Bir sınıfın daha üstünde bulunan sınıfa o sınıfın süpersınıfı, daha altında bulunana ise alt sınıfı denir. Alt sınıflar üstlerindeki sınıfların değişkenlerini, davranışlarını kullanabilirler. En üstte Object sınıfı bulunur. Bütün appletler Applet sınıfının alt sınıfıdır. Bu kavrama ilerleyen konularda appletler dahilinde ayrıntılı bir şekilde değinilecektir.
Miras Arayüz ve Paket Kavramları
Bu kavramlar sınıfları ve sınıf davranışlarını organize etmede kullanılırlar. Miras kavramıyla anlatılmak istenen şudur:
Yeni bir sınıf yazıldığında yapılması gereken bu sınıfın diğer sınıflardan farkını belirtmektir. Miras kavramı ile ortak bilgiye diğer sınıflarda olsa dahi ulaşılabilir.
Miras dolayısıyla yazılan, kullanılan ve standart olarak derleyicide bulunan tüm sınıflar hiyerarşik bir düzende bulunurlar.
Çoğu kez yeni bir sınıf yazılmak istendiğinde daha yukarıda bulunan bir sınıfın özelliklerine bazı eklemeler yapmak yeterli olur. Yeni oluşturulan sınıfları burada olduğu gibi farklılıklar yoluyla belirtmeye alt sınıflandırma denir.
Miras Mekanizmasının Çalışması
Yeni bir sınıf örneği oluşturulduğunda o anki sınıfta veya daha yukarıdaki sınıflarda tanımlanan değişkenler için birer slot ayrılır. Böylelikle bütün sınıflar o anki nesne için template oluştururlar. Her nesne de kendisine uygun bilgiyi yerleştirir.
Arayüz ve Paketler
Arayüz ve paket kavramları Javanın ileri özellikleri arasında kabul edilirler. Her ikisi de sınıf veya davranış grubu oluşturmada kullanılırlar.
Arayüz, metod isimlerinin oluşturduğu kesin tanımlamaların yapılmadığı bir kümedir. Bu küme herhangibir sınıfın kendi üstsınıflarından ulaşabileceği davranışlara ek olarak hangi davranışlara ulaşabileceğini gösterir.
Böylece birbirinden son derece farklı sınıflar da ortak arayüz kullanımı ile aynı davranışı paylaşabilirler.
Paketler ise birbiriyle ilgili sınıfları ve davranışları gruplamada kullanılırlar. Böylelikle oluşturulan modüller sadece gerekli görüldüğü zaman kullanılırlar.
Paket içindeki bir sınıfa ulaşmak için bu sınıfı içeren bütün paketleri ve en sona da istenen sınıfın adı aralara nokta konularak yazılır.
Örneğin awt paketi içindeki renk sınıfına ulaşmak için awt de java içinde olduğundan:
java.awt.renk komut cümlesi yazılır.
Game Artık Over.!!!
THe NumBeR OnE fAn oF Linkin park !
(En son düzenleme: 09-03-2008 12:22 PM pcmania.)
|
|
| 09-03-2008 12:21 PM |
|