~BöLÜM-1~  

Java nedir ?  

Java platformu , ağ(network) ‘nın önemi hesaba katılarak ve aynı yazılımın birçok değişik bilgisayar ortamında veya değişik tür makinalarda çalışması fikri ile geliştirilmiş yeni bir teknolojidir.Java teknolojisi kullanılarak aynı uygulamayı değişik ortamlarda çalıştırabiliriz – örneğin Pc lerde , Macintosh bilgisayarlarda , hatta cep telefonlarında .

Java yı hem programlama dili , hemde bir ortam olarak düşenebiliriz . Programlama dili olarak , açık , nesneye yönelik (object-oriented) , güvenli , sağlam , internet için elverişli bir teknoloji diyebiliriz . Ortam olarak da işletim sistemi , veri tabanı (database) ,   ve orta katman (middleware)   teknolojileri bulmak mümkündür.

Gerek Java , gerekse Java’ya bağlı alt teknolojiler , VB veya Borland Delphi gibi sadece belli bir firma tarafından geliştirilmiş   olan başlı başına   ürünler değillerdir . Java ve Java’ya bağlı alt teknolojiler , Sun Microsystems tarafından verilmiş açıklamalardan (specifications) oluşmaktadır . Bu açıklamalara (specifications)   sadık kalan her yazılım fırması JVM(Java Virtual Machine = Java) veya Java’ya bağlı alt   teknolojiler yazabilir/gerçekleştirebilir (implement)   . Eğer bu açıklamalara (specifications) sadık kalmayıp , standart dışı bir JVM veya   Java’ya bağlı alt teknoloji   yazmaya/gerçekleştirmeye   kalkarsanız   hukuki bir suç işlemiş olursunuz(Microsoft   firmasının yaptığı   gibi). Şu anda en yaygın kullanılan JVM ler , IBM’in ve Sun Microsystems ın üretmiş olduklarıdır, ayrıca HP , Apple   ve daha bir çok firmanın üretmiş oldukları JVM ler bulunmaktadır .

Java ile ne yapılabilir ?  

Java Programlama dili ile projelerimizi diğer programlama dillerine göre daha kolay ve sağlıklı bir şekilde yapmanız mümkündür . Kısaca göz atacak olursak , Java ile ;  

·    GUI (graphical user interface , grafiksel kullanıcı ara yüzü) uygulamaları , appletler.

·    Distributed components   (ör . EJB, RMI, CORBA).

·    Servlet , Jsp (web tabanlı uygulamalar).

·    Veri tabanlarına erişim ile alakalı uygulamalar.

·    Cep telefonları , Smart kart lar için uygulamalar .

·    Ve daha niceleri ….    için uygulamalar yazmamız mümkünkür.

Java nasıl çalışır ?  

Java uygulamaları JVM (Java Virtual Machine) tarafından yorumlanır( interpreted ).JVM , işletim sisteminin en tepesinde bulunur.Bu sayade yazımış olan Java uygulamaları değişik işletim sistemlerinde , herhangi bir değişiklik yapmadan çalışabilir, Java nın felsefesi olan “bir kere yaz heryerde çalıştır” sözü gerçekleştirilmiştir.

                                                                   Şekil-Java-1

Aşağıdaki şekillerde , javanın kaynak kodundan , çalışmasına kadar olan evreleri gösterilmektedir.

  • Derleme anı (Compile Time)

  • Çalışma anı ( Run-time) 

                                                                   Şekil-Java-2

Byte koduna çevrilen kaynak kod , JVM tarafından yorumlanır ve uygulama çalıştırılmış olur.                                          

Ufak bir Java uygulaması örneği , bu örneği birazdan detaylı olarak inceliyeceğiz:    

ilk-ör-1

public class Selam {
     public static void main(String args[])   
     {
          System.out.println("Selamlar !");                    
     }
}

 Yukarıda yazılan kodumuzu şekil üzerinde anlatırsak ; 

 

                                                           Şekil-jvm1

Yazılan java kaynak kodlarımız ilk önce derlenir daha sonra ise çalıştırırız. Java kaynak kodunda belirttiğimiz her sınıf (class) için fiziksel olarak bir class dosyası oluşturulur.

 

Kategoriler

Java platformu  ana gruba ayrılır.

  • Standart Java
  • Enterprise Java
  • Tüketici için ve gömülü cihazlar için Java (embedded devices)

Yukarıdaki kategorileri açacak olursak ;

Standart Java :

  • Java 2 SDK (J2SE)
  • Java 2 Runtime Environment
  • Java Plug-in
  • Java Web Start
  • Java HotSpot Server Virtual Machine
  • Collections Framework
  • Java Foundation Classes (JFC)
  • Swing Components
  • Pluggable Look & Feel
  • Accessibility
  • Drag and Drop
  • Security
  • Java IDL
  • JDBC
  • JavaBeans
  • Remote Method Invocation (RMI)
  • Java 2D

Enterprise Java :

  • Enterprise JavaBeans (EJB) Architecture
  • JavaServer Pages  (JSP)
  • Java Servlet
  • Java Naming and Directory Interface (JNDI)
  • Java IDL
  • JDBC
  • Java Message Service (JMS)
  • Java Transaction (JTA)
  • Java Transaction Service (JTS)
  • JavaMail
  • RMI-IIOP
  • Software Development Kit & Application Model
  • Java 2 SDK, Enterprise Edition (J2EE)
  • Sun BluePrints Design Guidelines for J2EE

Tüketici için ve gömülü cihazlar için Java (embedded devices) :

  • Java 2 Platform, Micro Edition (J2ME technology)
  • Connected Device Configuration (CDC)
  • Connected Limited Device Configuration (CLDC)
  • C Virtual Machine (CVM)
  • K Virtual Machine (KVM)
  • PersonalJava
  • Java Card
  • JavaPhone API
  • Java TV API
  • Jini Network Technology
  • Mobile Information Device Profile (MIDP) 

 

Gelişim Evreleri

1995

  • Java Teknolojisinin ilk çıkış yılı ; ilk olarak applet teknolojisinin dikkat çektiği seneler.

1996

  • Java Development Kit (JDK) v1.0  çıkartıldı. Temel seviyeli işlevleri içeren bir versiyon (ör. soket programlama, dosya I/O, GUI)

1997

  • JDK 1.1 çıkartıldı.  Bu sürümde  Java GUI , veritabanı erişimi için JDBC , dağınık objeler için  RMI ve daha birçok yeni gelişmeler eklendi .

1998

  • JDK 1.2 çıkartıldı .
  • JFC/Swing yayınlandı- aynı sene içersinde 500,000+ download gerçekleştirildi.

1999

  • Java teknolojisi   J2SE, J2EE ve J2ME olarak 3’e bölündü .
  • Java HotSpot (performans arttırıcı) yayınlandı .
  • JavaServer Pages (JSP) teknolojisi yayınlandı.
  • J2EE platform’u yayınlandı .
  • Linux üzerinde J2SE platformu yayınlandı .

2000

  • JDK v1.3 çıkartıldı .
  • Java APIs for XML teknolojisi yayınlandı .

 

Javanın başarılı olmasındaki sebebler 

1.      Çok güzel bir programlama dili olması

a.      C/C++ da olduğu gibi hafıza problemlerinin olmaması .

b.      Nesneye yönelik (Object - Oriented) olması .

c.      C/C++/VB  dillerinin aksine dinamik olması .

d.      Güvenli .

e.      Internet uygulamarı için elverişli .

2.      Platform bağımsız olması : bir kere yaz her yerde çalıştır        

 

 

Çöp toplayıcı (Garbage Collector )

Çöp toplayıcı devamlı olarak takip  halindedir.Bir  programın çalışma durumunda , ortaya çıkan ve sonradan kullanılmayan(gereksiz ) objeleri bulur ve onları yok eder (destroy).  Böylece hafıza yönetiminin (memory management) yükü kodu yazan kişiden javaya geçmiş olur. Diğer dillerde , örneğin C++ da  , oluşturulan objelerin  yok edilme sorumluluğu kodu yazan kişiye aittir .

Çöp toplayıcının ne zaman ortaya çıkıp temizleme yapamayacağı belli olmaz.Eğer hafızada java için ayrılan kısım dolmaya başlamış ise çöp toplayıcısı devreye girerek kullanılmayan objeleri hafızadan siler. Eğer hafızada kullanılmayan objeler var ama hafızasa daha çok boş yer varsa çöp toplayıcısı devreye sokulmaz. Çöp toplayıcısı(garbage collector) JVM in yazılışına (implementation) göre değişkenlikler gösterebilir.

Javada yorum satırı

Java kaynak kodunun içersine istediğiniz yorumları yazabilmeniz için belli yol izleminiz gerekmektedir.Örneklerimizde yorum satırılarını çokca kulalladığım için bunu en başta açıklama ihtiyacını duydum. 

Javada yorum satırlarını belirtme iki şekilde mümkün olur 

  1. /*   yorum  */     ,  slash - yildizdan  ,  diğer yildiz-slash arasına kadar istediğiniz yorumu yazabilirsiniz . Uzun satırlı yorumlarda bu yöntemi kullanabilirsiniz.
  2. //   yorum  ,     tek satırlık yorum yapmak için idealdir. Kısa yorumlarınız için bu yöntemi kullanabilirsiniz. 

Herşey Obje 

Her programlama dilinin kendine has veri yönetim şekli bulunur . Bir programın çalışması süresince objeler oluşturulur . Burada ki soru bizim objelere direk olarak mi kullandiğimiz yoksa onlara dolaylı bir şekilde mi bağlantı sağlayıp kullandığımızdir. 

Java da herşeye obje olarak davranırız. Herseyin obje  olmasına rağmen objeleri yönetmek için “ referanslar” kullaniriz .

Örnek : Diyelim ki elimizde bir televizyon(obje olarak düşünün) ,ve bu televizyona ait birde kumanda(referans) olduğunu düşünelim. Sesi alçalmak istediğimizde veya kanalı değiştirmek isteğimizde elimizdeki uzaktan kumandayı televizyonu yönetmek için kullanılız. Bu uzaktan kumandayı (referans) alıp odanın içinde gezebiliriz , sonuçda uzaktan kumanda (referans ) televizyona baglıdır ama televizyonun yeri sabittir. 

Elimizde uzaktan kumanda (referans)olmasi , televizyonumuzun (obje) olucağı anlamina gelmez . Uzaktan kumandamiz (referans) da tek başına hayatı sürdürebilir.  Şekil-ho-1 inceleyiniz.

gösterim-1                 

 String kumanda; // kumanda referansı şu an için String bir objeye bağlı değil.

            Şekil-ho-1                      

Burada yapılan olay sadece referans oluşturmaktır . Eğer bu referansa mesajlar göndermeye kalkışırsak ne olur  ? tabii ki hata mesajı ile karşılasırız , sebebi ise bu  referansın herhangi bir objeye bağlı olmamasıdır.  Peki referansımızı bir obje bağlıyalım :

 

                                                            Şekil-ho-2

 gösterim-2

örnek-1
String kumanda= new String("Selamlar") ;

  gösterim-3

örnek-2
String kumanda="Selamlar" ;

 

Yukarıda yaptığımız (Şekil-ho-2 inceleyiniz), referanslara obje bağlama örneklerinin birbirlerinden farkları yoktur. Sonuçta her iki gösterimde referanslara objeleri bağlar.Ama javada String objelerinin özel bir yeri vardır , String objeleri çok kullanılan objeler oldukları için örnek-2 deki gösterimde doğru ve bir nevi kısa yoldur .

Class nedir ? Obje nedir ?

Class ve Obje i bir benzetme ile açıklamak en kolayı herhalde ..

Sabun fabrikasında yeni bir sabun dizaynı üzerinde çalıştınız ve ortaya bir kalıp çıkartdınız artik üretim aşamasına geçmek istiyorsunuz.Bu kalıpda sabun un hangi boyutlarda olucağı, hangi renkde olucağı , nasil kokucaği vb.. gibi bilgiler hepsi sizin tarafınızdan tespit edilmişdir.Üretim aşamasına geçildiğinde hep aynı sabun kalıbını kullanarak yeni sabunlar üretmeniz mümkün olacaktır , sabun kalıbının tasarımı bir kere yapıldı ama o kalıpdan yola çıkarak n tane sabun objesi üretmeniz mümkün olmaktadır. Bu örnekden yola çıkarak , kalıp'ı class a , sabunları ise objelere benzetebiliriz.

 

                                                    Şekil-class-obje   

Java da depolanan (Storage)veriler nerede durmakda 

Depo, toplam 6 alandan  oluşur  , Bu 6 alanı açıklarsak :  

Register : En hızlı alan burasıdır .Bu alan Cpu nun içinde bulunur , ve derleyicinin(compiler) ihtiyaclarına gore pay edilir . Bu alanda bizim direk bir kontrolumuz yoktur.

Stack : Bulunduğu nokta RAM (random-access memory) dır . Bu alanda  bulunan “stack pointer” ına direk olarak Cpu dan destek vardır . Stack pointer aşağıya inince yeni bir hafiza alanı oluşturur , yukarı kalkınca ise  hafızayı alanını bırakır(release) . Java derleyicisi programı oluşturmadan evvel  , stack üzerinde oluşturulacak olan verilerin boyutlarını ve ömürlerini (lifetime)  bilmek zorundadır  çünkü stack pointer i aşağı ve yukarı hareket ettirecek olan kodu oluşturması gerekmektedir . Stack üzerinde referansların kendileri bulunur.

Heap : Burası genel amaçlı  bir hafıza havuzudur . Stack alanının tersine , derleyici  burada ne kadar hafıza pay edileceğini bilmek zorunda değildir .Bu büyük bir  rahatlık getirmektedir çünkü ne zaman bir obje yaratmak istersek sadece  new  anahtar kelimesini kullanarak  bu alanda bir yer kendimize tahsis etmiş oluruz .Bu kadar rahatlığın karşılığında ise ödenmesi gereken fatura  hızdır . Heap de yer ayırmak icin harcanan zaman , stack alanında yer ayırmaktan daha fazladır.Heap de objelerin kendisi durur. 

Statik Alan : Bu alanda RAM de bulunur.Statik alanda yer alan veriler , programın çalışması süresince  orada yaşarlar . Tüm objeler  bu statik verileri görebilirler  , ortak bir alan gibi düşünebiliriz  . Veriyi statik yapmak icin static kelimesini değişkenin önüne getirmemiz yeterli olur . Objelerin kendileri bu alanda yer almazlar.

Sabit Bellek : Programın içindeki sabit değerlerin içinde bulundukları yerdir . Tercihen ROM(read only memory) da da yer alabilirler .

Non-RAM Belek : Bazı durumlarda uyguların içersinde oluşturduğumuz objelerin,uygulama sonlandıktan sonra bile varlıklarını sürdürmelerini isteriz.

1 ) Akışkan Objeler (streamed objects)  : Bu objeler , genellikle ağ(network) üzerindeki başka bir makinaya gönderilmek üzere byte akıntılarına dönüştürülürler.

2 ) Kalıcı Objeler ( persistent objects) :  Bu objeler  kendi durumlarını(state) saklarlar ve  diskimizde saklanırlar . Kendi durumlarını saklamaktan kasıt ise özelliklerinin(attribute) değerlerinin korunmasıdır.

İlkel Tipler  

Java da bulunan özel bir grup daha vardır . Bu grup a ilkel (primitive) tipler denir. Bu tipleri uygulama yazarken çok kez kullanırız. Bu sebepten bu ilkel tipleri heap alanında new  anahtar kelimesi ile oluşturmak pek de avantajlı olmamaktadır . Bunun yerine bu ilkel tiplerin stack alanında saklanması çok iyi performans vermektedir .Yanlız buradaki espiri , her ilkel değişken bir referans değildir , bu ilkel tipler değerlerini kendi üzerlerinde taşırlar.

  İlkel tip
Boyut
Minimum
Maximum
Sarmalıyıcı tip
 boolean
 
 
 
 Boolean
 char
 16- bit 
 Unicode 0 
 Unicode 216- 1 
 Character
 byte
 8- bit 
 -128 
 +127 
 Byte
 short
 16- bit 
 -2 15
 +2 15—1 
 Short
 int
 32- bit 
 -2 31
 +2 31—1 
 Integer
 long
 64- bit 
 -2 63
 +2 63—1 
 Long
 float
 32- bit 
 IEEE754 
 IEEE754 
 Float
 double
 64- bit  
 IEEE754 
 IEEE754 
 Double
 void 
 
  
 
 Void

 

Bu ilkel tiplerin birer adet sarmalıyıcı(wrapper) class ları bulunur . Bunun anlamı eğer heap alanında ilkel olmayan (nonprimitive) bir tip oluşturmak istiyorsanız o zaman bu sarmalıyıcı(wrapper) class kullanabilirsiniz.Sarmalıyıcı classların tabiikine ilkel olan akrabalarına göre bir çok özellikleri bulunur , javadoc yardım sayfalarını incelemeniz şiddetle tafsiye olunur .

  gösterim-4

char c = 'x' ; // ilkel tip

   gösterim-5

Character C = new Character(c); // sarmalıyıcı class

 

Geçerlilik Alan(Scope)

Bir çok programlama dilinde değişkenlerin geçerlilik alanı kavramı bulunur.Java , C ve C++ dillerindeki değişkenlerin geçerlilik alanlarını örnekler ile göstermeye çalışalım.  

 gösterim-6

{
  int x = 12;
  /* sadece x mevcut*/
  {
    int q = 96;
    /*  x ve q mevcut */
  }
  /* sadece x mevcut */
  /* q “geçerlilik alanının dışına çıktı ” */
}

 

Bir değişken sadece kendi geçerlilik alanının sonunda kadar geçerli olur .

Aşağıdaki örnek C ve C++ doğru bir işlemdır ama Java da doğru bir tavranış değildir.

 gösterim-7

{ // dış alan
  int x = 12;
  { // iç alan
    int x = 96; /* java için illegal ama C ve C++ doğru*/
  } // iç alanın sonu
} //dış alanın sonu

Örneğimizde görüldüğü üzere dış alan , iç alanı kapsamaktadır. Java dilinde , dış alanda bir değişken belirtilmiş ise bu değişken iç alanda da hayatını sürdürmeye devam eder.

Geçerlilik Alanı (Scope of Objects)

Java dilinde objelerinin ömürleri , ilkel tiplere göre daha değişiktir .

 gösterim-8

if (true){
  String s = new String("Selamlar");
} /* geçerlilik alanının sonu*/

Yukarıdaki gibi bir örnekde , if koşuluna kesinlikle girilecektir , if koşuluna girdiği anda String objesini heap alanında yaratacaktır , bu yeni yaratılan String objemizi , "s" String tipindeki referansımızla kontrol etmekteyiz.Peki if koşulundan çıkıltığında neler olucaktır ? Geçerlilik alanını sona erdiğinden "s" referansımız artık kullanılamıyacak hale gelecektir ama ya heap deki String objesine neler olacaktır ? Buradaki cevap basittir , Çöp toplayıcı(Garbage Collector) devreye girdiği an heap alanındaki bu erişilemez ve çöp haline gelmiş olan String objesini hafızadan silecektir.Yukarıda bahsettiğimiz hikaye C++ dilinde büyük bi r sorundur, çünkü C++ dilinde oluşturulan her objeyi yok etme sorumluluğu yine kodu yazan kişiye aittir. Eğer kodu yazan kişi oluşturmuş olduğu herhangi bir objeyi daha sonradan yok etmeyi unutursa hafıza kaçakları oluşmaya başlayacaktır.

Yeni sınıf oluşturma

Java da kendimize özgü nasıl bir sınıf oluşturabiliriz sorusuna yanıt olarak aşağıdaki örnek iyi bir cevap olmayacaktır . Gayet ilkel ve gereksiz bir sınıf (class) oluşturduk ,hiç bir fonksiyonelitesi olmayan bir sınıf . Bu sınıfımızı ilerleyen safhalarda geliştireceğiz .

 gösterim-10

public class YeniBirSinif  {  
    // gerekli tanimlar ..
}

 

Alanlar ve Metodlar (Fields and Method)

Bir sınıf(class) tanımladığımız zaman , bu sınıfımızın üzerinde  iki sey yapabiliriz.

1 ) Alanlar (field)  tanımlarız  . Bunlar ilkel tipler (primitive) olabilirler veya bir obje ile iletişim kurabilmemiz için o obje tipindeki bir referans  olabilirler. (Daha detaylı olarak açıklanacaktır, panik yok !! )

ör-1

class YeniBirSinif  {
  public int i;
  public float f;
  public boolean b;
}

 

Eğer alanlara , onlar ilk oluştuğunda , ilk değerlerini vermek istiyorsak ;

ör-2

class YeniBirSinif  {
  public int i = 5 ;
  public float f = 3.23;
  public boolean b = true ;
}

Bu alanları(field)  kullanmadan evvel onların ilk değerlerini almış (initialize)olmaları gerekmektedir.Peki ör-1 de biz herhangi bir ilk değer verme işlemi  yapmadık ve java bize bu konuda kızmadı , neden ?  

 

 İlkel Tip
 Mevcut değer (Default value)
 boolean
 false
 char
 ‘\u0000’ (null)
 byte
 (byte)0
 short
 (short)0
 int
 0
 long
 0L
 float
 0.0f
 double
 0.0d
(Not:  obje  referanslarına obje bağlanmamış ise o referansın değeri null  dır )

Bu sorunun cevabı yukarıdaki tabloda yatıyor .Eğer bir sınıfın(Class) alanlarını oluşturup onlara ilk değerlerini vermez isek -ki ör-1 de yaptığımız tamamen böyle bir harekettir o zaman java bu sınıf alanlarına kendi mevcut-varsayılan (default) ilk değerlerini verir , bu mevcut değerleri yukarıdaki tablodan inceliyebilirsiniz .

Tekrardan YeniBirSinif   örneğimize geri dönelim , bu sınıfda hala işe yarar bişeyler yok gibi sadece 3 adet alan tanımladık . Şimdi bu YeniBirSinif  sınıfını obje haline dünüştürelim

 gösterim-11

YeniBirSinif   ybs = new YeniBirSinif();

ybs isimini verdiğimiz referansımız heap alanındaki YeniBirSinif objesini göstermektedir.Eğer biz heap alanındaki bu YeniBirSinif objesi ile temas kurmak istersek ybs referansını rahatlıkla kullanabiliriz .

Objenin  alanlarına  ulaşmak için “.”  (nokta kullanırız) (Not : Ulaşmak isteğimiz alan private ise o zaman o alana ulaşmanın hiçbir yolu yoktur , public , friendly , protected , private ilerideki konularda detaylı bir şekilde anlatılmaktadır , panik yok !! :P  )

  gösterim-12

ybs.i ;
ybs.f ;
ybs.b ;

Eğer objemiz alanlarına ilk değerlerinden farklı değerler  atamak istiyorsak ;

 gösterim-13

ybs.i = 5;
ybs.f = 5.3f;
ybs.b = false;

 

Objelerimizin alanları ilkel tipler olduğu zaman aşağı yukarı olayların nasıl geliştiğini hayal edebiliyoruz peki objemizin alanları ilkel tip degilde  bir obje olsaydı , olaylar nasıl değişecekti?      

ör- 3

class YeniBirSinif  {
  public int i;
  public float f;
  public boolean b;
  public String aciklama = new String("objemizin aciklamasi"); 
}

 

Ör-3 deki örneğimizde YeniBirSinif objemizin alanlarından biri String objesi, ilkel tipteki bir alandan farkını aşağıdaki şekilde inceliyelim .

Şekildeki main() metodu java uygulamaları için başlama bölgesidir , ilk örneğimizi yaparken daha iyi anlayacağız . YeniBirSinif  sınıfını obje haline dönüştürdüğümüzde görüyoruz ki aciklama alanıda heap bölgesinde yerini alıyor, yani heap bölgesinde 2 adet objemiz oluşmuş oluyor , biri YeniBirSinif objemiz , diğeri ise String objemiz .    

2 ) Metodlar , objelerimizin işe yarar hareketler yapmasına olanak veren kısımlar diye bir giriş yapsam sanırım yanlış olmaz . İşe yarar hareketlerden demek istediğim, objemizin canlı olması , yani ona bir soru sorduğumda bana cevap verebilmesi veya belli koşullarda kendisine önceden verilmiş kriterlere göre karar vermesini sağlamak.Metodları bu kadar cok abartı anlattıktan sonra biraz daha derinlemesine inceliyelim istersen.

  • Metod  iskeleti 

   gösterim-14

dönüşTipi  metodunİsmi( /* argüman listesi */ ) {

  /* Metod gövdesi */

}

 

Şimdi yukarıdaki metod iskeletinde tanımlanmış olan kısımları teker teker açıklıyalım

dönüşTipi = Metodların iki şansı vardır , ya bir değer döndürürler veya hiçbirşey döndürmezler.Değerden kasıt ettiğim metodlar ya bir ilkel tip döndürebilirler (int , double,boolean) veya bir obje döndürebilirler (String , Double , Integer , YeniBirSinif). Eğer bir metod hiçbirsey döndürmüyorsa o zaman void ekini metodun başına yerleştiririz .

metodunİsmi = Javanın kendisine ait olan kelimeler(if , else , import , class , return..vb) ve türkçe krakterler hariçinde istediğiniz ismi kullanabilirsiniz ama metodlar bir eylem içerdikleri için , metod isimlerininde bir eylemi belirtmesi tercih edilir örneğin : sayiSirala() , enBuyukSayiBul(),sqlCalistir() gibi . Burada dikkat edecek olursanız , metod isimlerinin ilk harfleri küçük sonra gelen ek kelime ise büyüktür. 

arguman listesi= Metod içersinde işlemler yapabilmek için gerekli olan parametreler.Bu parametreler  ilkel tipte veya Obje olabilirler.

metod gövdesi =  Bu kısım kodu yazan kişinin yaratıcılığına bağlı olarak değişmektedir.  

Bu kadar açıklamadan sonra gerçek bir metod örneği verebiliriz .

gösterim-15

  int boyutDondur(String kelime) {
      return kelime.length() ;
  } // metodun sonu

boyutDondur() metodunu herhangi String objesini parametre olarak alıyor ve bu String objesinin boyutunu geri döndürüyor. Metodumuzun geri döndürdüğü değer ilkel bir tip olan int . Herhangi bir değer geri döndürebilmek için return anahtar kelimesini kullanmamız gerekli .

 gösterim-16

String  elmaHesapla( int elmasayisi) {
   return  new String(" toplam elma sayisi = " + elmasayisi*2);
} 

 

Metod-ör-2 de ise  elmaHesapla() metodu  int tipinde parametre alıyor , sonra yeni bir String objesi oluşturup bunu geri döndürüyor . Buradaki ilginç olabilecek olan husus , int olan bir değişkeni iki ile çarpıp  sonradan + operatörü ile String in sonuna eklenmiş olması olabilir . Diğer dillerde bu işlem için belli bir çevirici fonksiyona ihtiyac duyardik , örneğin delphi de intToStr() fonksiyonunu çok kere kullandığımı hatırlarım , ama java da String bir ifadeden sonra gelen herhangi bir tipdeki değişken otomatik olarak String e çevrilir . 

        " toplam elma sayisi = "  ifadesi String bir ifadedir ve bu ifadeden sonra gelecek olan her türlü tip (ilkel veya Obje) , otomatik olarak String dönüştürülürler. Eğer javanın yardım dokumanlarından Object tipine ait bilgilere bakarsanız , her objenin hali hazırda toString() metodunun var olduğunu görürsünüz . Eğer bir Obje otomatik veya değil  String objesine dönüştürülmek istenirse bu objenin toString() metodu çağrılır . Bu konuya ilerleyen konularda daha detaylı bir şekilde göreceğiz ,  panik yok !!! .

 gösterim-17

void hesapla(String kelime , int kdv ) {
	int sondeger = 0;
	int kelimeboyut = 0 ;
	int toplamboyut ; // Hatalı !!!!!
	kelimeboyut = kelime.length();
	sondeger = kelimeboyut + kdv ; 
} 

Metod-ör-3  örneğimizde ,  hesapla() metodu iki adet parametre almaktadır ve geriye hiçbirşey döndürmüyeceğini bize açık açık void anahtar kelimesi ise söylemektedir. Bu örneğimizde dikkat etmemiz gereken ikinci nokta ise  metodların içersinde tanımladığımız değişkenlerin ilk değerlerini kesinlikle ama kesinlikle  bizim  tarafımızdan belirtilmesi gerekmektedir. 

 Sınıf(Class) lara ait global değişkenlere (veya alanlarda diyebiliriz hepsi aynı anlamı taşımaktadır) ilk değerlerini vermediğimiz zaman java bu değişkenlere ilk mevcut - varolan değerleri kendi verir    (bkz ) ,ama metod içersinde tanımlanan değişkenler için aynı durum söz konusu değil , bu sebepten dolayı toplamboyut değişkeninin tanımlanma şekli yanlıştır.

 gösterim-18

void UniteKontrol(int deger) {
     if (deger == 1 ) // eger deger 1'e esitse metod u terk et
     {	     
	return; 
     }else { 
     	// gerekli islemler 
     }	
}

Metod-ör-4 , örneğinin ana fikri void ile return anahtar kelimelerinin aynı metod içinde kullanımını göstermektir.  if - else kontrol mekanizmalarını henüz görmedik ama bu örnek için kullanılmaları gerekliydi .  Buradaki return parametresi metodun acilen terk edilmesi gerektigini anlatır .

 

İlk java programımız

ör-ilkjava-1  

public class Selam {
     public static void main(String args[])   
     {
          System.out.println("Selamlar !");                    
     }
}

 

 

İlk örneğimizi adım adım açıklayalım ; fakat şunu hemen belirtim , java büyük ve küçük harfe karşı duyarlıdır (case sensitive) . Yani public yerine PUBLIC yazarsanız hata ile karşılaşırsınız. 

 

  •   public class Selam  : 

Bu kısımda yeni bir sınıf oluşturuyoruz

  • public static void main(String args[]) : 

Javada bir sınıfın tek başına çalışmasını istiyorsak (standalone)  bu metodu yazmak zorundayız . Bu metodu  sınıflar için bir başlagıç noktası olarak var sayabiliriz.Burada iki bilinmedik konuyu ele almak gereklidir, birincisi statik metodlar , ikincisi ise diziler (array).

 

statik metodlar : statik metodları , objeye bağımlı olmayan metodlar diye tanımlıyabiliriz.

Bu metodların kullanılması için objenin oluşturulmuş olması gerekmez . Ne demek istediğimi 

örnekler ile açıklamak daha iyi olucağı kanaatindeyim.

 

ör-normal-1

public class TestNormal {

  public void uyariYap() {
    System.out.println("Dikkat Dikkat");
  }

  public static void main(String args[]) {
   TestNormal tn = new TestNormal() ; //dikkat
   tn.uyariYap();
  }
}

 

 

 

normal-ör-1 de uyariYap() metodu statik bir metod değildir . Bu yüzden bu metodun çağrıla bilmesi 

için TestNormal objesinin oluşturulması gerekmedir  , bu kısıma dikkat lütfen .

 

Şimdi diğer örneğimize geçelim . 

 

ör-static-1

public class TestStatik {

   public static void uyariYap() {
     System.out.println("Dikkat Dikkat statik metod");
   }

   public static void main(String args[]) {
     TestStatik.uyariYap();
   }
}

 

Bu örneğimizde tek değişen sey uyariYap() metodunun statik olmuş olmasi değildir , bu 

metodun çağrılma şeklide değişmiştir. uyariYap() metodu artik TestStatik objesine bağlı bir metod

değildir , yani uyariYap() metodunu çağıra bilmemiz için TestStatik classını 

oluşturmamız gerekmez. main() metodunda da işler aynıdır , fakat main() metodunun 

java da çok farklı bir yeri vardır.main() metodu java uygulamaları için bir başlangıç noktasıdır .

 

 

Diziler (Arrays) :  main() metodu parametre alarak String obje dizisi  alır , bu String obje dizinin 

içersinde konsoldan java uygulamasına gönderilen parametreler bulunur . 

 

args[0] : konsoldan girilen 1. parametre değerini taşır .. 

args[1] : konsoldan girilen 2. parametre değerini taşır .. 

args[n] : konsoldan girilen n. parametre değerini taşır .. 

 

Javada diziler sıfır dan başlarlar . Dizileri ilerliyen bölümlerde yoğun bir şekilde inceliyeceğiz . 

 

 

  • System.out.println("Selamlar !") : 

Bu komut satırı , bilgileri konsola(ekrana) basmamızı sağlar . Java nin dokümanlarına bakarsak , 

System sınıfınına ait  static bir metod olan olan out methodunun var olduğunu görürüz. Bu yüzden System sınıfını oluşturmak  zorunda degiliz (new System() gibi ). out methodu bize printStream

objesi oluşturur ve  printStream objesinin println() methodu ile bilgileri konsola(ekrana) bastırırız.  

 

 

 

JAVA 1.3 kurulumu , derleme ve çalıştırma  

JAVA 1.3.0 versiyonunun kurulumunu hem unix hemde windows sistemlerinde nasıl yapıldığına bakalım. JAVA 1.3.0 veya daha gelişmiş versiyonlarını http://java.sun.com adresinden indirebilirsiniz.                           

  •   unix/linux kurulumu :

http://java.sun.com  adresinden sisteminize uygun olan java versiyonunu seçmeniz gerekmektedir. Solaris ve Linux için  değişik java versiyonları bulunmaktadır.  Ama kurumları aynıdır. İşte yapılması gerekenler

 

İndirmiş olduğunuz java kurulum dosyasını , size uygun bir yere açın (örneğin /usr/java ) ,gunzip ve tar komutlarının örneği aşağıdaki gibidir ; 

Öncelikle sıkıştırılmış dosyayı açıyoruz ;

bash#  gunzip  jsdk1.3.0.tar.gz    

daha sonra arşivlenmiş dosyanın içeliğini /usr/java dizinine çıkartıyoruz 

bash#  tar xvf  jsdk1.3.0.tar  /usr/java            

 

    

/etc/profile dosyasının içersine bazı eklemeler yapmak gerekmektedir ;Bu dosya /etc/ dizinin altındaki profile dosyası olmayabilir . 
unix sistemlerde her kullanıcının kendisiine ait profile dosyaları vardır , bu yapılan işlemler o dosyaların ,içersinede yapabilirsiniz , arasında fark ise , eğer /etc/ dizinin altındaki profile dosyası tüm kullanıcıların görebildiği bir dosyadır , bu dosya üzerinde yapacağınız değişikler tüm kullanıcıları doğrudan etkiliyecektir .

öncelikle PATH  değişkenini değiştirmemiz gerekli ve  sonradan CLASSPATH değişkenini tanımlamamız gereklidir.JAVA yı  “/usr/java” dizinine  kurduğunuzu varsayıyorum.

PATH=”/usr/bin:/usr/local/bin:/usr/java/bin:.”

Sadece bold olan yeri (/usr/java/bin) yeni ekledim ;  /usr/java/bin içersinde çalıştırılabilir dosyalar bulunmaktatır.Şimdi sıre CLASSPATH de

CLASSPATH=”/usr/java/src.jar:/ usr/java/lib/tools.jar:.” 

javada en temel ve en önemli  kütüphaneler bu iki jar dosyasının içersinde saklıdır.Daha sonradan da  CLASSPATH e eklemeler yapabilirsiniz , şimdilik bu iki önemli dosyayı CLASSPATH ekleyerek işe başlıyalım . JAR dosyalarını ilerleyen bölümlerde göreceğiz ( panik yok !! ). Dikkat ettiyseniz CLASSPATH tanımlarken en sona bir nokta koyduk , bu nokta hayati bir önem taşır. Bu noktanın anlamı , bulunulan dizindeki *.class dosyalarının görülebilmesini sağlamaktadır,böylece java komutunu çalıştırırken saçma hatalar almayız.

 

   

Yaptığımız bu değişikliklerin etkili olabilmesi için aşağıdaki komutu yazıp enter tuşuna basmamız yeterli
.bash# ./etc/profile          --> en baştaki noktaya dikkat .

Yaptığımız işlemlerin etkili olup olmadağını ögrenmek için , sırasıyla aşağıdaki komutları deniyebilirsiniz

bash# java -version  -->  sisteminizde yüklü olan java versiyonunu öğrenmenize yarar

    

bash# echo PATH  --> PATH değişkeninin hangi değerler  taşıdığını söyler.

 

bash# echo CLASSPATH --> CLASSPATH  değişkeninin hangi değerler  taşıdığını söyler. 

 

  • Windows :   Javanın Windows versiyonu için hazır bir kurulum dosyası bulunur. Bu dosyaya çift click yapmanız işlerin büyük bir bölümünü gerçekleştirecektir ama hala yapmamınız gereken ufak tefek işler bulunmaktadır. 

Windows 95-98 için autoexec.bat dosyasında aşağıdaki değişlikleri yapmanız yeterli olucaktır.

(Aşagıdaki PATH ve CLASSPATH değişkenleri benim bilgisayarmdan alintidir)

SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\JDK1.3\BIN;C:\ultraedit;.

SET CLASSPATH=C:\JDK1.3\src.jar;C:\JDK1.3\lib\tools.jar;.

(Not : Tekrar oldu ama olsun çok önemli bir kısım : Dikkat ettiyseniz CLASSPATH tanımlarken en sona bir nokta koyduk , bu nokta hayati bir önem taşır. Bu noktanın anlamı , bulunulan dizindeki *.class dosyalarının görülebilmesini sağlamaktadır,böylece java komutunu çalıştırırken saçma hatalar almayız. )

Windows 2000 için PATH ve CLASSPATH tanımlarını Environment Variables kısmına ulaşarak yapabilirsiniz. Bu kısıma  ulaşmak için Control Panel --> System --> Advanced --> Environment Variables   yolunu izlemeniz yeterli. 

System Variables veya User Variables bölümünde , PATH değişkenini değiştirmeniz ve "new" diyerek yeni bir CLASSPATH değişkeni tanımlamanız gerekmektedir (hiç CLASSPATH değişkeniniz olmadığını var sayıyorum) . PATH ve CLASSPATH değişkenlerini yukarıdaki gibi java ile ilgili  parametreleri girerek kurulumu tamamlıyabilirsiniz .

Kurulum ilgili aklınızda daha birçok soru olabilir veya yolunda gitmeyen tanımlar olabilir , bunlar için Java ile  beraber  gelen  kurulum hakkındaki dosyaları okumanızı şiddetle tavsiye ederim.

Derleme  ve Çalıştırma :  

Elimizde   Selam.java (bkz)  dosyasını nasıl derliyeceğiz ? Sorunun cevabı aşağıdaki komut satırında

$ javac Selam.java  

Artık elimizde Selam.class  dosyası var olmuş oldu , şimdi sıra geldi bu dosyayı çalıştırmaya  

$ java Selam

Ekrana çıkan yazın : 

Selamlar !

Ne yaptığımızı tekrarlarsak, Elimizde bulunan Selam.java kaynak dosyasını javac uygulamasını kullanarak derlenik ve  Selam.class dosyamız oluşmuş oldu. Daha sonradan java uygulamasını kullanarak uygulamamızı çalıştırdık. Hepsi bu !!!! .

 

Nedir bu args[] , ne işe yarar ?

javanın komut satırından nasıl çalıştığını anladıktan sonra komut satırından java uygulamamıza parametere göndermeyi öğrenebiliriz. 

işte ufak bir uygulama : 

ör-args-1

public class ParametreUygulamasi 
{
    public static void main(String[] args) 
   {
      System.out.println("Merhaba Girdiginiz Parametre = " + args[0]);
    }
}

Daha evveldende belirtildiği gibi Java da diziler sıfır dan başlarlar (diziler ilerleyen bölümlerde detaylı olarak incelenecektir , panik yok !!) . Şimdi ParametreUygula.java kaynak dosyamızı derleyelim . 

$ javac ParametreUygulamasi.java 

Elimizde ParametreUygulamasi.class dosyamız oluşmuş oldu. Şimdi uygulamamızı çalıştırma zamanı ama farklı bir şekilde  :P 

$ java  ParametreUygulamasi  test

Uygulamamızı çalıştırma tarzımız değişmedi burada ki tek fark  artık en sona yazdığımız test kelimesini java uygulamasına parametre olarak gönderebilmemiz  . İşte programın çıktısı: 

   Merhaba Girdiginiz Parametre = test

Java uygulamasına birden fazlada parametre gönderebiliriz .

ör-args-2

public class ParametreUygulamasi2 
{
   public static void main(String[] args) 
   {
    System.out.println("Merhaba Girdiginiz ilk Parametre = " + args[0]);
    System.out.println("Merhaba Girdiginiz ikinci Parametre = " + args[1]);
   }
}

Uygulamamızı öncelikle derliyelim :

$ javac ParametreUygulamasi2.java 

şimdi çalıştıralım :

           $ java  ParametreUygulamasi2  Test1 Test2

Ekran çıktısı :

Merhaba Girdiginiz ilk Parametre = Test1
   Merhaba Girdiginiz ikinci Parametre = Test2

Peki Bu uygulamaya hiç dışarıdan parametre girmeseydik ne olurdu  ? deneyelim : 

$ java  ParametreUygulamasi  

Sansürsüz şekilde karşılaştığım görüntü : 

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at ParametreUygulamasi2.main(ParametreUygulamasi2.java:5)

Hımm , sorun nedir  ? sorun şu , Java uygulamamız bizden kesin kez iki adet parametre girmemizi bekliyor. Beklediğini aşağıdaki kısımlarda görebiliyoruz : 

gösterim-19

System.out.println("Merhaba Girdiginiz ilk Parametre = " + args[0]);
System.out.println("Merhaba Girdiginiz ikinci Parametre = " + args[1]);

 args[0] ve args[1] , ancak biz  dışarıdan iki adet parametre girersek bu dizinin ilk iki elemanı bilgi ile dolucaktır  eğer dışarıdan parametre girmezsek  dizinin birinci ve ikinci elamanları oluşmıyacaktır.Oluşmamış bir dizi elemanlarına ulaşmaya çalıştığımızda ise yukarıdaki hata ile karşılaşırız. Bu özellik diğer programla dillerinde bulunmayan bir özelliktir ve uygulamanın sağlamlığını arttırır . 

 

 

Javadoc = Yorum ile dökümantasyon oluşturmak  

Uygulamalar yazılırken büyük bir oranla dökümantasyon işi ikinci plana itilir veya unutulur hiç yapılmaz . Dökümantasyon kodu yazan kişiler için çok ağır işdir ( Bende bu fikri katılıyorum ). Java dökümanstasyon hazırla işini  daha kolay ve sevimli bir hale getirmiştir . Bu özelliğe "JavaDoc"  denir . JavaDoc olayının yaptığı iş , kodun içersine yazılmış olan yorum satırlarını alarak bunları HTML formata dönüştürmektir . Fakat yorum satırını yazarken bazı kurallara uymamamız gerekmektedir .

Sözdizimi Kuralları  (syntax)

Bizim yazdığımız yorum satırlarının Javadoc tarafından dikkate alınması içinı 

 /**   ile başlaması ve  */ ile bitmesi gerekmektedir. Javadoc mekanızmasını kullanmanın iki etkili yolu vardir birincisi  gömülü html (embedded html)  , ikincisi ise doc tags

Doc tag  “@” ile başlarlar.  sınıfa , metoda  ve değişkenlere  denk düşen  üç adet yorum dökümantasyon tipi vardir.Aşağıdaki şablon örnek  bunu açıklamaktadır.

gösterim-20

/** A sınıf yorumu */
public class DocTest {
  /** A değişken yorumu */
  public int i;
  /** A metod yorumu */
   public void isYap() {}

Unutulmaması gereken başka bir nokta  ise Javadoc mevcut olarak(default) public ve protected  olan   üyelerin dökümanını üretir.  private ve friendly üyelerin dökümantasyonu yapmaz , bunların sebeblerine ilerleyen konularda  deyineceğiz . Eğer private üyelere ait bilgilerinde dökümante edilmesini istiyorsak o zaman komut satırından  

$ javadoc a –private …… 

ekini vererek bunu başarabiliriz. (daha fazla bilgi için komut satırından javadoc -help diyebilirsiniz)

Gömülü Html (embedded Html)

Javadoc mekanizmasında kendinize has  HTML komutları kullanmanız mümkündür.

gösterim-21 :  

/**
* <pre>
* System.out.println("Selamlar");
* </pre>
*/

gösterim-22  

/**
* Çok güzel <em>hatta</em> liste bile yerleştirebilirsiniz:
* <ol>
* <li> madde bir
* <li> madde iki
* <li> Madde üç
* </ol>
*/

   

<h1> <hr> gibi etiketlerin (tag) kullanmayın çünkü Javadoc bunları sizin yerinize zaten yerleştirmekte.  

Gömülü HTML mantığı   sınıf ,değişken ve metodlar tarafından  desteklenir.  

Doc Tag 

 

Ortak  kullanılan yorum ekleri

@see : Başka bir sınıfın , değişkenin veya metodun  dökümantasyonunu göstermek için kullanabilirsiniz.  

(sınıf, değişken, ve metod) dökümantasyonlarında  , @see etiketini (tag) kullanabilirsiniz.Bu etiketin  anlamı , “ baska bir sınıf dökümantasyonuna gönderme yapıyorum” veya “başka bir metod dökümantasyonuna gönderme yapıyorum” veya “başka bir değişken dökümantasyonuna gönderme yapıyorum“ demekdir.

   gösterim-23

@see classismi
@see classismi#metod-ismi

Javadoc gönderme yaptığınız sınıf/değişken/metod  dökümantasyolarının var olup olmadığını  kontrol etmez.Bunun sorumluluğu size aittir. 

Sınıflara ait JavaDoc etiketleri  

Sınıflara ait etiketler arayüzler(arayüzler) içinde kullanilabilir (arayüzleri  ilerleyen bölümlerde göreceğiz , panik yok !!).  

@version :  Versiyon numaraları dökümantasyonlamada hayati bir rol aldığını düşünülecek olursa bu etiketin gerçekten önemli bir etiket  olduğu anlaşılır. Version etiketinin  görünmesini istiyosanız:  

$ javadoc  –version 

parametresi ile calıştırmamız gerekmektedir . Version etiketini  kodumuza  yerleştirmek için    

gösterim-24

@version versiyon-bilgisi 

  

@author : Sınıfı  yazan yazar hakkında bilgi verir . author etiketi Javadoc tarafından dikkate alınmasını istiyorsanız 

$ javadoc –author 

parametresini koymanız gerekir. Bir sınıfa ait  birden fazla author etikeni yerleştirebilirsiniz. Author etiketini kodumuza  yerleştirmek için   :

gösterim-25

@author author-bilgisi

 

@since : Java kodunun belli bir tarihden itibaren geçerli olduğunu belirtmek için kullanılır .

since etiketinikodumuza  yerleştirmek için   :

   

gösterim-26

@since 05.03.2001

Değişkenlere  ait JavaDoc etiketleri    

Değişkenlere ait dökümantosyonlarda sadece  gömülü html (embedded html) veya @see etiketi kullanılabilir.

 

Metodlara  ait JavaDoc etiketleri    

Metod dökümantasyonunda gömülü html ( embedded html) veya @see etiketini kullanabilirsiniz.Ayrıca aşagıdaki etiketleri kullanabilirsiniz.

 

@param: Metodun aldığı parametrenin açıklamasını belirtir. param etiketini kodumuza  yerleştirmek için   :    

gösterim-27

@param parametre-ismi açıklaması 

@return: Metodun döndürdüğü değerin açıklamasınıi belirtir. return etiketini kodumuza  yerleştirmek için   :    

  gösterim-28

@return aciklama

@throws: İstisnalar (exception)  ileryen konularda gösterilecektir. İstisnalar kısa olarak , metodlarda hata oluşursa  cağrılan objelerdir. throws  etiketini kodumuza  yerleştirmek için   :     

  gösterim-29

@throws class-ismi açıklaması 

@deprecated: Önceden yazılmış fakat şimdi  o metod yerine yenisi yazılmişsa eski metod deprecated olur.deprecated metodu kullandığınız zaman derleyici tarafından uyarı alırsanız.Deprecated  etiketini kodumuza  yerleştirmek için   :    

 

Dökümantasyon örneği

  ör-javadoc-1

 /** Ilk Java Kodumuzun Dokumantasyonu
 * Ekrana Selamlar diyen bir uygulama  
 * @author Altug B. Altintas (upux@yahoo.com)
 * @version 1.0 
 * @since 09.01.2002 
*/
public class SelamDoc {
  /**sayiyi artirmak icin , degiskenler icin bir ornek*/ 
   public int sayac = 0 ;
  /** siniflarda & uygulumalarda giris noktasi olan metod
   * @param args disaradan girilen parameterler dizisi
   * @return donen deger yok   
   * @exception Hic istisna firlatilmiyor  */ 
   public static void main(String[] args) {    
	System.out.println("Selamlar !");
   }
 }

  

Oluşturmuş olduğumuz bu kaynak koduna ait döküman çıkartmak için komut satırına aşağıdaki  yazıp enter tuşana basmak yeterli : 

$ javadoc -d javadoc SelamDoc.java

Yukarıdaki komut sayesinde HTML dokumanları bulunduğumuz dizinin altındaki javadoc dizininin içinde oluşturulmuş oldu . Javadoc un komutları ile daha fazla bilgiyi 

$ javadoc -help 

yazarak ulaşabilirsiniz 

Sınıf isimleri ve metod isimleri 

Sınıf isimleri uzun olursa alt çizgi  ile ayrılmamalıdır. Sınıf isimleri fiil cümlesi içermemelidir.  

gösterim-30

public class  EnKısaYolBulmaAlgoritması {
   
}

Metodlar fiil cümlesi içermelidirler. ilk kelime küçükharf ile başlamaldır.

gösterim-son

public void   yolBul() {
   
}

 

Bu bölümde  Javayı tanıyıp , Java ile nelerin yapılabileceğini gördük . Obje ile Sınıflar arasındaki farkdan bahsettik , Objelerin ve onlara ait referansların nelerde durduğu gördük . Javanın en önemli özelliklerinde biri çöp toplayıcısıdır bu sayade  kodu yazan kişiler daha az risk üstlenir ve daha rahat ederler . Bu özellik diğer dillerde olmayan bir özelliktir fakat bu rahatlığında bir bedeli vardır , bu bedelin ne olduğunu ilerleyen bölümlerde göreceğiz .

 

Sorular :

 

  1. İlkel tipler ile onlara ait sarmalıyıcı tipler arasında farkları açıklayınız .

  2. Geçerlilik alanları ile ilgili birer örnek yapınız ?

  3. İki adet yeni sınıf oluşturun , birinci sınıfın ismi : BankaA , digerinin ismi ise BankaB olsun.BankaA sınıfının içersinde ekrana "Selamlar Ben BankaA"  basan bir statik olmayan metod yazın ve bu metodu BankaB nin içersinde Çagırın . Uygulama  java BankaB diyince çalışssın .

  4. örnek 4 ün  statik metodlu  versiyonunu yazın .( BankaA nın "Selamlar Ben BankaA"  basan metodunu static yapın) . BankaA yı , BankaB nin içersinde new()  ile oluşturmadan çağırın.

  5. Dışarıdan 3 parametre alan bir uygulama yazın .

 

Mail Grubu

Java Kitap Projesinin mail grubuna üye olmak için = java_kitap_projesi-subscribe@yahoogroups.com 

Üyelikten çıkmak için =  java_kitap_projesi-unsubscribe@yahoogroups.com

 

Sorulanız ve Yorumlarınız için : upux@yahoo.com

Bu dökümanın her hakkı saklıdır

1