26.02.15 - Oguzhan Topsakal

advertisement
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
Download