BIL4106 - MOBiL PROGRAMLAMA TEKNiKLERi Yard. Doç. Dr. Oğuzhan Topsakal [email protected] 26.02.2015 Bu Derste • Java Programlama (Crash Course) • Java Dilinin Özellikleri • JVM, JDK, JRE • Değişken tanımlama, veri tipleri • Array, ArrayList, HasMap • Kontrol yapıları: If-Else, Döngüler 2 Java Programlama Dili • Programlama dilleri bilgisayarla iletişim kurmakta kullanılır ve bilgisayarın ne yapacağını adım adım anlatmada, verinin nasıl kullanıcıdan alınacağını, ekranda nasıl gösterileceğini ve verinin nasıl işleneceğinin tanımlamakta kullanılır. • Java ve JavaScript farklı dillerdir ve bağlantıları yoktur. • Sun Microsystems tarafından üretilmiştir ve 1995de piyasaya çıkmıştır. Sun Microsystems daha sonra Oracle tarafından satın alınmıştır. • Öğrenmesi kolaydır, çünkü • Birçok kaynak vardır • Çokça öğretilir, kullanılır ve tartışılır • Kolayca anlaşılabilen bir syntax ı vardır 3 Sabit Tipli & Nesneye Dayalı • • Sabit Tipli • Değişkenler kullanılmadan önce tipleriyle birlikte tanımlanmalıdır. • Tanımlandığından farklı bir veri tipini saklamada kullanamazlar • Derleme sırasında programdaki değişlenlerin tipleri kontrol edilirler Nesneye Dayalı • Nesne konsepti ile gerçek dünya sanal (programlama dünyasına) tanıtılır. • Herşey bir nesne olarak tanımlanabilir ve program içinde bu nesnelerin etkileşimi, durumları tanımlanabilir. 4 Java nın Özellikleri • Platform Bağımsız • • Derlendiğinde Java kodunuz byte kod denen bır koda dönüştürülür. Bu kod JVM java sanal makinesi denen bir program tarafından yorumlanır ve makina kodu gibi JVM içinde çalıştırılır. Verimsiz bir yaklaşım gibi gözüksede yoğun çalışmalarla ibytei kodun JVM içinde verimli çalısması sağlanmıştır. Güvenli • JVM denen sanal makine ortamında çalıştığı için cihaz donanımından izole edilmiştir ve kod çalışması zararlı davranışlardan korunur. Her Android app linux tabanlı kodda farklı bir hesap altında ve kendi Dalvik VM kopyası içinde yaşar ve yaptıkları işletim sistemi tarafından gözetim altında tutulur. Eğer çok işlemci gücü harcarsa, kaynakları boşa harcarsa yada tepki vermez hale gelirse kapatılabilir. 5 Java Virtual Machine (JVM), JDK and JRE Java sanal nakinesi (Java virtual machine (JVM)) derlenmiş java kodunu çalıştırır. Derlendiğinde .class uzantılı byte kod oluşturulur ve bu kod sadece JVM içinde çalışan ara bir koddur. • • Java geliştirme ortamı (Java development kit (JDK)) ile programlar JVM içinde çalışacak byte koda dönüştürülür. Java yı derleyen programın ismi javac dir. Java çalıştırma ortamı (Java Runtime Environment (JRE)) java programlarının çalıştırıldığı ortamdır. JRE içinde .class uzantılı programları çalıştırmak için java programı kullanılır. 6 Demo - Java Programını Derleyip Çalıştırmak public class HelloJava { public static void main(String[] args) { System.out.println("Hello World!”); } } • JavaC programName.java • Java programName • Download link: www.topsakal.com/oguzhan/teaching/2015/spring/BIL4106/code/ 7 Değişken Tanımlama Her değişken kullanılmadan önce tanımlanmalıdır. Bu önce değişkenin tipi ve sonra ismi yazılarak yapılır. • int someVar = 1; • İsimlendirme “camel case”, şeklinde yapılır. Tek kelime ise tamamen küçük harflerle, eğer birden fazla kelime ise ilkden sonraki her kelimenin baş harfi büyük olacak şekilde isimlendirilir. • int tamsayiDegiskeni; • int degisken; • Isimlendirmede küçük büyük harf ayrımı vardır. • Her zaman değer atamak zorunlu değildir ancak değer atamak iyi bir alışkanlıktır. Değer atanmamışsa veri tipine göre varsayım değerler derleyici tarafından atanabilir. Fazlası için: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html 8 Veri Tipleri - ilkel (Primitive) • Java 8 değişik ilkel veritipini destekler • byte: 8-bit işaretli tamsayı • short: 16-bit işaretli tamsayı • int: 32-bit işaretli tamsayı. Max değer 2,147,483,647. • long: 64-bit işaretli tamsayı • float: 32-bit reel sayı • double: 64-bit reel sayı • boolean: mantıksal değerler için: true and false. • char: 16-bit Unicode karakter. 9 Veri Tipleri - Kompleks (Complex) • Java tarafından yada programcı tarafından tanımlanan nesnelerle oluşturulan veri tipleridir. Bu tiplerde değişkenler oluşturulduğunda class ın bir kopyası yaratılır. • String strCourseName = “Mobil Prog. Teknikleri”; 10 Diziler (Arrays) • Diziler belirli bir tip değişkenden sabit sayıda tutan değişkenlerdir. Dizinin uzunluğu ve tipi tanımlama sırasında belirtilir. • Uzunluğu 10 ve tipi tamsayı olan bir dizi değişkenin tanımlanması: • • int[] myArray = new int[10]; • myArray[0] = 10; Dizinin elemanlarına indeksleri ile erişilir. Indeks 0 dan başlar ve böylece 10. elemana erişmek için indeks numarası 9 kullanılır. 11 Demo - Diziler class ArrayTest { public static void main(String[] args) { // Allocate memory for 5 integers int[] anArray; anArray = new int[3]; // Initialize elements anArray[0] = 10; anArray[1] = 20; anArray[2] = 30; System.out.println("Value at index 0: " + anArray[0]); System.out.println("Value at index 1: " + anArray[1]); System.out.println("Value at index 2: " + anArray[2]); } } Download link: www.topsakal.com/oguzhan/teaching/2015/spring/BIL4106/code/ Diğer örnekler: •http://www.tutorialspoint.com/javaexamples/java_arrays.htm •http://www.java2novice.com/java-arrays/ 12 Collections - ArrayList Eğer tanımlama sırasında dizinin ne kadar uzun olduğunu bilmiyorsak ArrayList kullanabiliriz. ArrayList<String> androids = new ArrayList<String>(); androids.add("Cupcake"); androids.add("Donut"); System.out.println("Size of ArrayList: " + androids.size()); // Display the contents of the array list System.out.println("The ArrayList has the following elements: “ + androids); // Remove elements from the array list System.out.println("Deleting second element..."); androids.remove(3); 13 Collections - ArrayList ArrayList class da işinize yarayabilecek başka hangi metodlar (fonksiyonlar) var? API referans dokumanından bakınız.. add( . ), add( . , . ), clear(), clone(), get(.), remove(.), remove(.), set(.,.), size(.), toArray(.), 14 Collections - HashMap Değerleri anahtar kelimelere göre kaydetmeye yarar. Aynı anahtar kelime ile iki eleman kayıt edilemez. // Creating a HashMap HashMap<String,Double> androids = new HashMap<String,Double>(); // Adding elements androids.put("Cupcake", new Double(1.5) ); androids.put("Donut",new Double(1.6)); 15 Demo - ArrayList & HashMap Download link: www.topsakal.com/oguzhan/teaching/2015/spring/BIL4106/code/ 16 Kontrol Akışı - If/Else Programcı programın akışını if-else, döngülerle kontrol edebilir. if (someExpression1) statement1 else if (someExpression2) statement2 else statement3 17 Kontrol Akışı - Switch Switch byte, short, char, ve int primitive veri tipleri ile çalışır. int dayOfWeek = 1; String dayString=""; switch (dayOfWeek) { case 1: dayString = "Monday"; break; case 2: dayString = "Tuesday"; break; … case 6: dayString = "Saturday"; break; case 7: dayString = "Sunday"; break; } System.out.println(dayString); 18 Döngüler - While Loop ‘expression’ doğru olduğu sürece parantez bloku içindeki kodu çalıştırır. while (expression) { statement(s) } int counter = 1; while (counter < 11) { System.out.println("Count is: " + counter); counter++; } Examples: http://www.java2novice.com/java-loops/ 19 Döngüler - For Loop for (initialization; termination-condition; increment) { statement(s) } Aşağıdaki kod ne yapar? for (int i = 1; i <= 10; i++) { System.out.println("Value of i is: " + i); } 20 Döngüler - For Each Loop Kollekşın veri tiplerindeki her eleman üzerinde işlem yapmak için kullanılabilir. String[] appNames = new String[3]; appNames[0] = "Gmail"; appNames[1] = "Go SMS Pro"; appNames[2] = "Chrome"; for (String name : appNames) { Log.d(TAG, name); } 21 Örnek: For Döngüsü ile Diziyi Yazdırmak String[] derstekiOgrenciler = new String[3]; derstekiOgrenciler[0] = “Ahmet”; derstekiOgrenciler[1] = “Mehmet”; derstekiOgrenciler[2] = “Hatice”; for (int i = 0; i < derstekiOgrenciler.length(); i++) { System.out.println( i + “. ogrenci: “ + derstekiOgrenciler[ i ]); } 22 JAVA & Android API Linkleri Java API: http://docs.oracle.com/javase/7/docs/api/ Android API: http://developer.android.com/reference/packages.html 23 Sorularınız? • Ödev: • Android Studio yu bilgisayarınıza kurunuz, inceleyiniz. • Gruplarınızı en fazla 3 kişi olacak şekilde belirleyiniz. • http://www.topsakal.com/oguzhan/teaching/2015/spring/BIL4106/code/ altındaki programları çalıştırın ve anlayın. 24 Kaynaklar • http://www.yildiz.edu.tr/~smyavuz/java/java.pdf • http://androidatc.com/adnan/upload/editor_upload/file/SelfStudy/Java%20Funda mentals%20for%20Android%20Development_Self%20Study%20Guide.pdf • http://blog.teamtreehouse.com/java-basics-for-android-development-part-1 • http://blog.teamtreehouse.com/java-basics-for-android-development-part-2 • http://code.tutsplus.com/tutorials/learn-java-for-android-developmentintroduction-to-java--mobile-2604 • http://code.tutsplus.com/tutorials/learn-java--mobile-2612 • https://www.udacity.com/course/viewer#!/c-ud853/l-1395568821 25