5.HAFTA İlk Değer Alma Sırası Nesnelere ait global alanlara başlangıç değerleri hemen verilir; üstelik, yapılandırıcılardan (constructor) bile önce... Belirtilen alanların konumu hangi sırada ise başlangıç değeri alma sırasında aynı olur. () Örnek: Defter.java () class Kagit { public Kagit(int i) { System.out.println("Kagit ("+i+") "); } } public class Defter { Kagit k1 = new Kagit(1); // dikkat public Defter() { System.out.println("Defter() yapilandirici "); k2 = new Kagit(33); //artık başka bir Kagit nesnesine bağlı } Kagit k2 = new Kagit(2); //dikkat public void islemTamam() { System.out.println("Islem tamam"); } Kagit k3 = new Kagit(3); //dikkat public static void main (String args[]) throws Exception { Defter d = new Defter(); d.islemTamam(); } } Uygulama sonucu aşağıdaki gibi olur: Kagit (1) Kagit (2) Kagit (3) Defter() yapilandirici Kagit (33) Islem tamam Diziler ve Dizi Elemanlarına Erişim Java dilinde dizi kullanımı diğer dillere nazaran daha az risklidir; anlamı, eğer tanımladığımız dizinin sınırları aşılırsak, çalışma-anında (runtime) hata ile karşılaşacağımızdır. Örneğin 20 elemanlı bir double dizisi tanımlanmış olsun. Eğer bu dizinin 78. elemanına ulaşılmak istenirse (- ki böyle bir indisli eleman yok), olanlar olur ve çalışma-anında hata alınır; böylesi hatanın (ArrayIndexOutOfBounds Exception) çalışma-anında alınması güvenlik açısından güzel bir olaydır. Böylece dizi için ayrılmış bellek alanından dışarı çıkılıp başka verilere müdahale edilmesi engellenmiş olunur. F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği | Algoritma ve Programlamaya Giriş II 5. hafta 1 Örnek: DiziElemanlariGosterimBir.java () public class DiziElemanlariGosterimBir { public static void main(String args[]) { double[] d = { 2.1, 3.4, 4.6, 1.1, 0.11 } ; String[] s = { "defter", "kalem", "sarman", "tekir", "boncuk" }; ; // double tipindeki dizimizi ekrana yazdırıyoruz for (int i = 0 ; i < d.length ; i ++) { System.out.println("d["+i+"] = " + d[i] ); // System.out.println("d["+78+"] = " + d[78] ); // Hata ! } System.out.println("---------------"); // String tipindeki dizimizi ekrana yazdırıyoruz for (int x = 0 ; x < s.length ; x ++) { System.out.println("s["+x+"] = " + s[x] ); // System.out.println("s["+78+"]=" + s[78] ); } // Hata ! } } length ifadesiyle bir dizinin içerisindeki eleman sayısı öğrenilir. Bu örnekte iki adet dizi tanımlandı: double ve String türündeki dizilerin içerisine 5’er adet eleman yerleştirildi ve sonradan bunları for döngüsü ile ekrana yazdırıldı. i < d.length ifadesine dikkat edilirse, döngü sayacın 4’e kadar artmaktadır; ancak, döngü sayacının 0'dan başladığı unutulmamalıdır. () Eğer 5 elemana sahip olan dizinin 78. elemanına erişilmeye kalkışılırsa, derleme anında (compile-time) bir hata ile karşılaşılmaz; ancak, uygulama yürütüldüğü zaman; yani, çalışma-anında (runtime) hata ile karşılaşılır. Uygulamanın sonucu aşağıdaki gibi olur: () d[0] = 2.1 d[1] = 3.4 d[2] = 4.6 d[3] = 1.1 d[4] = 0.11 --------------s[0] = defter s[1] = kalem s[2] = sarman s[3] = tekir s[4] = boncuk F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği | Algoritma ve Programlamaya Giriş II 5. hafta 2 Uygulama Çalışmaları: 1Kullanıcıdan 10 tam sayı alan ve bu sayılardan en büyük olanını bulan bir java programı yazınız.(Not: Programda yordam kullanınız). 2Aldığı tam sayılardan en küçük olanını ekrana yazdıran bir java programını metotlarla gerçekleştiriniz.( kaç sayı girileceğini siz belirleyiniz). 3Java Sunu 2’ de yer alan temel tanımlardaki yapıya uygun olarak kendiniz bir sınıf üretiniz. Sınıf üye değişkenler, yapılandırıcı metot, ve çeşitli işlemleri gerçekleştiren bazı diğer metotları içerebilir. Ürettiğiniz sınıfı baz alarak yeni nesneler üretiniz ve main fonksiyon içerisinden bu nesnelerinizi kullanınız.(Mesela, şehir, araba, öğrenci sınıfı vb) F.Ü. Teknoloji Fakültesi Yazılım Mühendisliği | Algoritma ve Programlamaya Giriş II 5. hafta 3