OCP-I Chapter 1 Welcome to Java-II

Java' da Sınıf Yapısı

Java'nın nesne yönelimli bir dil olduğundan ve tüm kodların sınıf yapıları içerisine yazıldığından bir önceki bölümde bahsetmiştik.Sınıflar Java'daki en basit building block yapısıdır.Java sınıfları class keywordu kullanılarak tanımlanırlar.Java'da sınfları kullanmak için nesneler (object) kullanılır.Nesne bir sınıfın hafızadaki örneğidir.Hafızadaki nesneye işaret eden değişkene referans denir.

Alanlar ve Metodlar

Sınıfları oluşturan elemanlardan ikisi fields(alanlar) ve methodlardır.Field olarak bilinen alanlar diğer dillerde değişken (variable) olarak , metodlarda diğer dillerde fonksiyon yada prosedür olarak karşımıza çıkar.Sınıfı oluşturan tüm bu elemanlara members(sınıfın üyeleri) denir.

Gelin hep beraber ilk Java sınıfımız yazalım.Sınıfımızın adı MrRobot olsun ve isim,numara,güç adında üç alana koş ateşEt ve uç adında üç metoda sahip olsun.Kodlarımızı yazarken değişken isimlerimiz valid karakterler olmak koşuluyla istediğimiz dilde yazabiliriz biz ingilizce yazmayı tercih edeceğiz.

public class MrRobot { 

    String name;
    String number;
    int power;

    public void run() {
        // Bu metod robotumuzu koşturan kodları içercek.
    }

    public void fire(int bullet) {
        // Bu metod robotumuzun ateş etmesini sağlayan kodları içerir.
    }

    public void fly() {
        // Bu metod robotumuzun uçmasını sağlar.
    }
}

Şimdi sırasıyla kodlarımızı incelemeye başlayalım.

  • public: Access modifier( Erişim belirleyici ) olarak adlandırılır.Bu sınıfımız public erişim belirleyicisine sahip olduğu için diğer sınıflar tarafından erişilebilir durumdadır.
  • class: Sınıf tanımlamak için kullandığımız anahtar kelimedir.
  • MrRobot: Sınıfımızın ismidir.
  • String name: name alanımızın Sting türünde olduğunu ifade eder.Alanlarımız int , boolean , double vs gibi başka türlerde de olabilir.
  • void: Metodları tanımlarken kullandığımız void anahtar kelimesi metodun geriye hiçbir değer döndürmediğini ifade eder.
public void fire(int bullet) {
        // Bu metod robotumuzun ateş etmesini sağlayan kodları içerir.
    }

fire metodumuzun içindeki int bullet ifadesi bu metodun parametresidir.fire metodu integer türünde ve bullet isminde bir parametre almş.Metodlar hiç parametre almayacağı gibi bir veya daha fazla sayıda parametre alabilirler.Metodlarımızın ismi ve parametre listesi metodun imzasıdır(method signature).

Yorum Satırları

Yazdığımız kodların okunabilirliğini arttırmak için açıklama ifadelerine ihtiyaç duyarız.Bu ifadeler yazdığımız kodun başka programcılar tarafından daha kolay anlaşılabilmesini sağlar.Programlama dillerindeki yorum ifadeleri çalıştırılabilir ifadeler değildir derleyici tarfından derlenmezler.

Java dilinde 3 farklı şekilde yorum ifadeleri oluşturabiliriz bunlar;

  • Tek satırlık yorumlar (Single line comment)
  • Çok satırlık yorumlar ( Multi line comment)
  • JavaDoc yorum ifadeleri

Bu üç yorum şekline örnek vermek gerekirse.

  1. Tek satırlık yorumlar
// Bu cümle tek satırlık yorum ifadesidir.
  1. Çok satırlık yorumlar
/* Çok satırlık
*  yorumlar
*  bu şekilde yazılır.
*/
  1. Javadoc yorumları
/**
 * Javadoc çok satırlı yorum
 * 
 */

Java da sınıfımızı yazdıktan sonra dosyamızı .java uzantısı ile kayıt ederiz.Burada dikkat etmemiz gereken iki durum var ;

  • Dosya adımız public olan sınıfımız ile aynı olmalı.
  • Bir dosyada birden çok sınıf tanımlanabilir tek şart dosya adı ile aynı isme sahip sınıfın public olmasıdır.

Main Metodu

Java kodları main maetodu ile çalışmaya başlar.Hemen örnek bir main metodu yazıp kodlarını inceleyelim.

public class MrRobot {

    public static void main(String[] args) {

    }
}

Main metodumuzu inceleyecek olursak;

  1. public: Erişim belirleyicsidir.
  2. static: Bu anahtar kelime metodu sınıfa bağlar yani bu metodu çağırmak için sınfımızdan nesne üretmemize gerek yoktur.
  3. void: Metodumuzun geriye hiçbir değer döndürmediğini söyleyen anahtar kelimedir.
  4. main: Metodumuzun ismidir.
  5. String[] args: Metodumuzun parametre listesidir.Main metodumuz args isminde String türünde bir liste yapısında parametre alır.Burada ek olarak şunları belirtmekte fayda var.args ismi valid olacak şekilde herhangi bir isim olabilir ve main metodunun paramete listesi 3 farklı şeilde yazılabilir bunlar;

    • String[] args
    • String args[]
    • String... args

Main metodu olmayan bir java sınıfını compile ettiğimizde derleyici hata fırlatır.Aynı zamanda static olmayan bir main metodu derleyici tarafından bulunamaz.

Main metodunun parametre listesi sayesinde JVM başladığında okunacak olan parametreler tanımlanabilir.Bu durumu örnek üzerinden açıklayalım.

public class MrRobot {

    public static void main(String[] args) {
        System.out.println(args[0]);
        System.out.println(args[1]);
    }
}

Şimdi terminal yardımı ile sınıfımızı compile edelim.

javac MrRobot.java

Bu komut çalıştıktan sonra aynı klasör içinde MrRobot.class dosyası oluşur daha sonra;

java MrRobot "Name: Voltran" "Number: 1"

OUTPUT

Name: Voltran
Number: 1

Burada dikkat edecek olursanız kodlarımızda args[0] ve args[1] ' i yazdırıyoruz, yani parametre listemizin ilk iki elemanını, bu iki elemanı java komutunu çalıştırdığımız esnada aralarına boşluk koyarak verdik.

Burada dikkat etmemiz gereken kısımlar şunlardır;

  • Tüm parametreler string olarak okunur.
  • Parametereleri ayırmak için boşluk kullanılır.
  • Eğer bir parametre birden çok kelimeden oluşuyorsa ve içerisinde boşluk karakteri varsa tırnak işaretleri arasına yazarız.Eğer tek kelimelik bir parametre ise tırnak arasına yazmaya gerek yoktur.
  • Eğer kodda beklendiği kadar parametre girilmezse örneğin yukarıdaki kodda args[1] yani ikinci parametre girilmezse derleyici hata fırlatır.Bu hata ArrayIndexOutOfBounds hatasıdır.

Java Programımızı Tek Satırda Çalıştırma

Java 11 ile birlikte single file source code diye bir özellik geldi bu özellikle birlikte javac kullanmadan aşağıdaki şekilde programımızı çalıştırabiliriz.

public class MrRobot {

    public static void main(String[] args) {
        System.out.println(args[0]);
    }
}
java MrRobot.java "Name: Voltran"

OUTPUT

Name: Voltran

Dikkat ettiyseniz javac kullanarak bytecode dosyası oluşturma adımını atlamış olduk bu özelliği kullanmak için tek şart;

  • Programımız sadece bir .java dosyasından oluşmalıdır.Eğer birden fazla .java dosyamız varsa hala javac komutuna ihtiyacımız vardır.

Bir sonraki yazımızda Java'da paket yapısını anlatarak devam edeceğiz.