Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Yardım çağırmak için son dakikayı beklemeyin 1. ipucu.

Benzer bir sunumlar


... konulu sunumlar: "Yardım çağırmak için son dakikayı beklemeyin 1. ipucu."— Sunum transkripti:

1

2 Yardım çağırmak için son dakikayı beklemeyin 1. ipucu

3 Yeni bir konu öğrenirken kötü olaylarla karşılaşabilirsiniz. Büyük ihtimalle bazı programlarınız çökecek. Erken işe koyulun; hatalar için kendinize zaman verin. Yeteri kadar not alırsam geçeceğim. 2. ipucu

4 Ders yüküyle ilgili çok fazla endişeniz olmasın. Bu dersten birkaç gün bile kaytaramazsınız. 3. ipucu

5 Büyük resme odaklanın. Unutmayın ki, bu ders bir programlama dersidir, Java dersi değil. Dersin programlama kısmından kaçmayın. Finalde ezilebilirsiniz. İpucu 4

6 Özet Eğer yeteri kadar bu ders için hazırlık yapmadıysanız 1.seçenek: Hazırlanın 2.seçenek: Şimdiden dersi bırakın. İki taraf için de iyilik etmiş olursunuz. Ders için gerekli olan ön yeterlilik bilginizi test etmek amacıyla “home quiz” dediğimiz sınavlarınız olacak.

7 Yardımcı kaynaklar Sun firmasının Java konusunda 1000 sayfaya yakın ücretsiz kaynağı internette mevcuttur. Bu kaynağı internetten indirmeli ya da bu sayfayı mutlaka işaretlemelisiniz.

8 Java ‘ya giriş Java nedir: –İyi programlama için bir araç –JVM yorumlayıcısına sahip herhangi bir platforma taşınabilir –İyi bir temele sahipseniz öğrenmesi kolay –Nesneye yönelik bir dil Java ne değildir: –“Nihai (Son) Programlama Dili” –HTML ya da diğer web içerikli dir dil –Sadece web applet için gereklidir. –Gereksiz bir kısaltma (Just Another Vacuous Acronym)

9 Java ‘ya giriş (devam) Java ‘nın güçlü yönleri: –Gerçek hayatta kullanılan gerçek bir dildir. –Taşınabilirlik. –Öğrenilmesi kolay –Java ile makinaya zarar vermek kolay değil ;-) –Gelişmiş GUI grafik bileşenlerine sahiptir Java ‘nın zayıf yönleri: –Yorumlandığından ve nesneye yönelik olduğundan yavaştır. –GUI/Grafiksel elemanlar için “En Küçük Ortak Payda” (“Least Common Denominator”) yaklaşımı (platformdan bağımsızlık sağlamak için) –Yazımla ilgili bazı zorlukların olması

10 Java ‘nın popülaritesi Java ‘nın popülaritesinin püf noktaları: –Basit ve nesneye yönelik bir dil olması. –Java Virtual Machine sayesinde yazılan programların değişik sistemler arasında taşınabilir olması. –İnternet tarayıcıların JVM ‘e sahip olması sayesinde Java programlarının internet üzerinde taşınabilir olması.

11 Java nedir? “Basit, nesneye yönelik, dağıtık, yorumlanmış, güçlü, güvenli, platform bağımsız, taşınabilir, yüksek performanslı, çoklu kullanım imkanı olan (multithreaded), dinamik bir dildir” “Basit, nesneye yönelik, dağıtık, yorumlanmış, güçlü, güvenli, platform bağımsız, taşınabilir, yüksek performanslı, çoklu kullanım imkanı olan (multithreaded), dinamik bir dildir” -- Sun Pazarlamacı bir ifade; Gelin daha yakından inceleyelim...

12 “… nesneye yönelik …”. Java nesneye yönelik bir dildir.. Java ile nesneye yönelik olmayan programlar yazmak da mümkündür.. Nesneye yönelik bir dilde verinin durumunu ve davranışını belli bir biçimde ifade etmek ve izole etmek için sınıf (class) kullanılır. Veriyi işlemek ve programda kullanabilmek için sınıfın bir üyesi (instance) oluşturulur. Sınıflar belli bir hiyerarşik düzen içinde veya paketler şeklinde düzenlenmiştir.

13 “… nesneye yönelik, …” Örnek: “Stack” java.util paketinde bulunan bir sınıftır. new terimini kullanarak Stack sınıfının bir üyesi oluşturulur. Yani: import java.util.*; Stack c = new Stack(); c.push(“3”); java.util.Stack x = new Stack(); Diğer veri yapılarının Stack (yığın) modellemek için kullanıldığı fonksiyonel (işlevsel) ve prosedürel (yordamsal) yapıya sahip C ve Pascal gibi dillerden bu şekilde ayrılır.

14 “… dağıtık, …” Java ayrıca dağıtık bir dildir. Bilgisayar ağları göz önüne alınarak inşa edilmiştir. IPv4 protokolünü tam destekler. Ayrıca internette kullanılan IPv6 protokolünü destekleyen yapılara sahiptir. HTML dökümanlarına gömülmüş haldeki küçük programlar olan Applet ‘leri destekler. Bkz: java.net package RMI/CORBA

15 “… yorumlanmış, …” Her bir komutun derleme esnasında değil de çalışma esnasında makine koduna çevrildiği (diğer bir ifadeyle yorumlama) dildir. Bu, Java ‘ya platform bağımsızlık sağlar: “WORA” ( write once run anywhere) “bir kere yaz her yerde çalıştır”. Bu aynı zamanda, program çalışırken üzerinde değişiklik yapılabilmesini sağlar. Dezavantajı: yavaşlık

16 “… güçlü, …” Java basittir: İşaretçi ve yığın mantığından büyük ölçüde arındırılmıştır. Hata yakalama (Exception handling): try/catch/finally komut dizisi hataların kolay bir şekilde yakalanmasını ve düzeltilmesine olanak verir. Tip bildirimi ve kullanımını zorlar(Strongly typed language): Derleme esnasında birçok hata yakalanır.

17 Sadece derleme esnasında değil aynı zamanda yükleme esnasında da Byte-code doğrulaması yapılır. Applet kodu önemli kısıtlamalar çerçevesinde web dökümanının içerisinde çalışır. ('sandbox') Güvenlik SecurityManager sınıfı tarafından sağlanır. Applet ‘lerin güvenlik kısıtlamaları dijital imzaları ve Servlet ‘leri içermektedir. “… güvenli, …”

18 Java Programlarının Yapısı Uygulamalar (“standard” bilgisayar programları): –Bir ya da daha fazla Java kaynak dosyası oluşturun –Her bir kaynak dosyasını sonuçta sınıf dosyası oluşturacak şekilde derleyin. –Böylece bir uygulama, bir tek.exe dosyasından değil de birden fazla sınıf dosyasından oluşacaktır. –Bir sınıf dosyasını Java sistemine gönderin. –Bu sınıfın main adında bir metoda sahip olması gerekir. public static void main(String[ ] argv) –main metodu program akışını denetler.

19 Basit bir uygulama ( “HelloWorld.java” adıyla kaydedildi) public class HelloWorld { public static void main(String argv[]) { System.out.println(“MerhabaDünya!”); }

20 Kaynak kod dosyası “.java” uzantılı olmalıdır. Dosya adı ile sınıf adı aynı olmak zorundadır. Bu isimlendirme kuralı birçok derleyici tarafından uygulanmaktadır. Örneğin, kurallara uygun olmayan bir isimlendirme şekli aşağıda gösterilmiştir. Kaynak kod dosyası "myTest.java“ olarak kaydedilmiş olsun, Sınıf tanımı da aşağıdaki gibi olsun: class test {... } Java Dosya İsimleri YANLIŞ

21 Derlenmiş byte kodlarının tutulduğu dosya “.class” uzantısına sahiptir. Kurallara uygun bir isimlendirme şekli ise aşağıda gösterilmiştir. Kaynak kod dosyası “Test.java” şeklinde kaydedilmiş olsun, Sınıf isimlendirmesi de aşağıdaki gibi olursa kurallara uygun bir isimlendirme yapılmış olur. class Test {... } Derlenmiş byte kodlarının tutulduğu dosya “.class” uzantısına sahiptir. Java Dosya İsimleri

22 Büyük Resim Zamanı MerhabaDunya.java public class MerhabaDunya { public static void main(String argv[]){ System.out.println (“Merhaba Dünya!”); } MerhabaDunya.class 0xCAFEBABE... javac javac MerhabaDunya.java java MerhabaDunya

23 Java Dosyaları: 1. Opsiyonel olarak package ifadesi (dosyanın hangi paketin altına eklenmesi istendiğini belirten ifade), 2. Gerekli sınıfların eklenmesi için kullanılan import satırları, 3. Daha sonra sınıf ismi gelir, 4. Sınıf ismini takiben kalıtım (inheritance ) ve arayüz (interface) ifadeleri gelir, 5. NOT: Eğer kaynak kod içerisinde birden fazla sınıf (class) veya arayüz (interface) tanımlanmışsa sadece bir tanesi public olarak tanımlanabilir. Buna ek olarak, kaynak kod dosyasının ismi public olarak tanımlanan sınıf ismi ile aynı olmak zorundadır. Java Dosya Yapısı

24 Örnek: package fatih.edu.ceng217; import java.util.*; import fatih.edu.ceng217.lecturenotes.*; import netscape.javascript.JSObject; import netscape.javascript.JSException; public class SplayTree implements TreeType, TreeConstants {... }// SplayTree Paket ismi global olarak tek olmak zorundadır. Yani, aynı isimde başka bir paket olamaz. Eğer herhangi bir paket ismi belirtilmezse, kaynak dosyamız içinde bulunulan dizin içerisinde isimsiz ve yazılım geliştirme ortamı tarafından varsayılan olarak belirlenmiş bir paketin altına kaydedilir. Ortalama bir Java Dosyası

25 Terimler Modüler (Yapısal) Programlama (Structured Programming): –Programı düz bir akış halinde oluşturmak yerine işlevsel parçalara bölüp bu parçaları bir araya getirmeyi öngörür.. Nesneye Yönelik Programlama (Object Oriented Programming): –Nesneler ile bunların birbiriyle ilişkilerinin vurgulandığı ve ön plana çıktığı programlama modeli.. Bayt Derleyicisi (Byte Compiler): –Yazılan kaynak kodun herhangi bir makine ve sisteme taşınıp çalıştırılabilen bayt kodlara (byte code) dönüştüren derleyici..

26 Terimler (devam) Bayt Yorumlayıcısı (Byte Interpreter): –Platform bağımsız olan bayt kodları (byte code) spesifik bir makine veya sistem üzerinde çalışan amaç kodlara (object code) çeviren ve çalıştıran yorumlayıcı.. Bayt Kodu (Byte Code): –Kaynak kodun Sanal Makine (Virtual Machine) tarafından anlaşılabilecek dile çevrildiğinde oluşan kod parçacıkları. Java Virtual Machine (JVM): –Programların birçok platform 'da değişiklik yapılmadan çalıştırılabilmesi için hazırlanan sanal ortam. Sadece bu sanal ortam kodunun diger platform 'lara taşınması ile kaynak kodun birçok değişik platformda çalıştırılabilmesi sağlanır.

27 Java Harici Geleneksel Yöntem: “Kaynak Kod” İşletim Sistemine özel derleyici ya da yorumlayıcı İşletim Sistemine özel amaç kod Programı çalıştır Java ‘nın yöntemi: “Kaynak kod” Java derleyicisi “Bayt Kod (Byte Code)” İşletim Sistemine özel JVM yorumlayıcısı İşletim Sistemine özel amaç kod Programı çalıştır Java ‘nın Taşınabilirlik Özelliği Demo.javajavac Demo.javaDemo.class java Demo

28 Varolan Veri Türleri 4 “atomik veri türü” + String – Num (sayı) – Char (karakter) – Boolean – Ptr (işaretçi) – String Java: (6 önemli temel (primitive) tür + String) –int (tamsayı) –long (uzun tamsayı, 2x bit) –float (gerçek sayı) –double (uzun gerçek sayı, 2x bit) –char karakter; tek tırnak içinde ifade edilir: ‘b’) –boolean –String (Java küçük büyük harf duyarlıdır, bu yüzden başlangıç harfine(S) dikkat edin) ; çift tırnak içinde ifade edilir: “deneme”) Not: String temel (primitive) bir tür değildir.

29 Veri Türlerinin Listesi Temel (Primitive) Türler Varsayılan Değeri boolean false char '\u0000' (null) byte (byte) 0 short (short) 0 int 0 long 0L float 0f double 0d void N/A

30 Değişken Tanımlamaları Java: – ; Ya da (değişken bildirimi yapılırken ilk değer ataması yapılabilir) – = ;

31 Örnekler int counter; int numStudents = 583; float gpa; double batAvg =.406; char gender; char gender = ‘f’; boolean isSafe; boolean isEmpty = true; String personName; String streetName = “North Avenue”; Bu konuda daha fazla örnekler...

32 Sorular?

33 Javadoc açıklamaları her bir değişken için tekrarlanır! Değer Atama Java birden fazla bildirimi ve değer atamayı aynı komut satırında yapmaya izin verir. int theStart, theEnd; int width = 100, height = 45, length = 12; Ancak bu javadoc açıklamalarını karmaşıklaştırabilir: /** * Silindirin çapı ve yüksekliğinin bildirimi ve ilk değer atamasının yapılması */ int diameter = 50, height = 34;

34 Örnekler Tam sayı sabitleri int kabul edildiği için başka tip değişkenlere atama yaparken çevirim gerekebilir: float maxGrade = 100f; // tutulan değer ‘100.0’ double temp = 583d; // tutulan değer çift duyarlılığa sahip 583. float anotherTemp = 5.5; // hata! ‘float’ için (F ya da f), ‘double’ için (D ya da d), ve ‘long’ için (l ya da L, fakat genelde L tercih edilir) kullanılır: float maxGrade = 100F; // tutulan değer ‘100.0’ long x = 583l; // tutulan değer 583, long y = 583L; // Bu şekliyle daha iyi !

35 Tür Dönüşümleri (Primitive Casting) Tür dönüşümleri (1) dolaylı dönüşüm ve (2) açık dönüşüm olmak üzere iki şekilde yapılır: int total = 100; float temp = total; // temp değeri oldu Tür dönüşümleri yapılırken duyarlılık kaybı yaşanıyorsa açık veri dönüşümü yapılması gerekir. Açık dönüşüm, yeni tür isminin parantez içerisinde ifade edilmesiyle yapılır. float total = 100f; int temp = total; // ERROR! int theStart = (int) total; Tür Dönüşümünün nesnelerde yapılışı ile ilgili daha fazlasını ileride göreceğiz…

36 Verilenler: int theStart = 10; float temp = 5.5f; temp = temp + (float)theStart; Şimdi temp değişkeninin içinde tutulan değer nedir? Dönüşüm: Bilginizi sınayın Hileli soru Verilenler: char c = ‘A’; int x; x = c; Legal mi? Unutmayın ki sonuçta herşeyin sayısal bir ifadesi vardır

37 Operatörler Atama işlemi: = Aritmetik: +, -, *, /, % (mod), ve diğerleri int numLect = 2; int numStudents = 583; int studentsPerLect; studentsPerLect = numStudents / numLect; // tamsayı bölmesi yapıldığından sonuç 291 ‘dir. int numQualPoints = 30; int numCreditHours = 8; float GPA; GPA = numQualPoints / numCreditHours; // tamsayı bölmesi yapıldığından ve sonuç float türünden bir değişkende tutulduğundan sonuç 3.0 ‘dır. someIntVar = someIntVar * someFloatVar // derleme zamanı hatası verir

38 Bilginizi sınayın Problem: int iVar = 10; float fVar = 23.26f; // derleme zamanı hatası verir iVar = iVar * fVar; Hangi çözüm daha iyi çalışır? iVar = (int) iVar * fVariVar = (int) (iVar * fVar)iVar = iVar * (int) fVar Ders: kolay anlaşılan kodu yazın iVar = (int) ((float) iVar * fVar) 4 Çeşitli Çeşitli Çözümler Çözümler Paketi Paketi 232 Derleme hatası

39 Kısayol Operatörleri counter = counter + 1; //veya: counter++; counter = counter - 1; //veya: counter--; counter = counter + 2; //veya: counter+=2; counter = counter * 5; //veya: counter*=5; Son iki örneğe dikkat ederseniz: counter+=2 ifadesi ile counter=+2 ifadesi aynı şey değildir. Kısayol operatörlerini kullanırken oluşan hatalara dair örnekleri ileride göreceğiz

40 Dokümantasyon & Açıklamalar Üç türlü yöntem vardır: // Bu işaret satır sonuna kadar olan tüm ifadeyi açıklama olarak belirler. /* ve */ işaretleri arasında kalan tüm ifadeler satır sonu gözetmeksizin açıklama olrak kabul edilir. /** * Bu sentaks biçimi Javadoc açıklamaları için kullanılır, * HTML biçimlendirme özelliklerini sunar. */ BİLM217 için, Javadoc açıklamaları kullanın

41 1. C dilindeki gibi açıklamalar /* */; 2. C++ dilindeki gibi // ile başlayan açıklamalar 3. /**...*/ ifadeleri arasında yazılan açıklamalar : /*/ /* // */ /////////////////// /* ========= */ Açıklamalar hakkında açıklamalar anlamsız kapanmaz Bloklar için iyi Ders: Açıklamalar yardımcı nitelikte olmalıdır.

42 Açıklamalar Ders: Java, kullanılan operatör türünden, açıklamalara kadar, yazılan kodda açıklık ve anlaşılırlık ilkesini benimser. Açılan ama kapanmayan açıklamalara dikkat edin: int x, y; /* * noktanın koordinatları * belirtilmektedir. // int z; */

43 /** * * İsimi al. * Dizinin belirtilen * pozisyondaki ismi geri döndürür. * i geri döndürülmesi istenen ismin dizideki yeri (indeks) strName isim Employees#isEmployed() elemanın çalışıp çalışmadığını * doğrulamak için çağrılır */ public String getName (int i) { if (myEmpl.isEmployed()) return myArray[i]; else return "Nada"; } // getName(int) Javadoc

44 @deprecated // jdk // jdk // HTML etiketleri ekleyebilirsiniz fakat gibi yapısal etiketler kullanmaktan kaçının. Javadoc açıklamaları sınıf, alan veya metot bildiriminin hemen öncesinde yapılır. İlk cümle özet olmalıdır. Javadoc ‘a özel etiketler kullanın, örneğin etiketi kullanılırsa diğer etiketine kadar çözümleme(parse) işlemi devam eder. Javadoc (devam)

45 Sabitler Java: –public final static = ; –public final static int MIN_PASSING = 60; –public final static float PI = (float) ; Yazım şeklinin neden böyle olduğu konusunda açıklamalar birazdan...

46 Ekrana yazma Java: –System.out.println( ); –System.out.println( ); // boş satır ekler –System.out.println(5); // ekrana 5 yazar –System.out.println(“Merhaba Dünya”); // ekrana Merhaba Dünya yazar –“println” ve. “print” : println komutu ekrana mesajı bastıktan sonra imlecin bir alt satırın başına geçmesini sağlar print komutu ise ekrana mesajı bastıktan sonra imlecin kaldığı yerden devam etmesini sağlar

47 Yazma (devam) Java ‘da başlangıç olarak sizin için oluşturulmuş en az 3 adet stream türü vardır: System.in // giriş almak için System.out // çıktı almak için System.err // hataları belirtmek için Bunlar InputStream ve PrintStream objeleridir. Not: Win95/NT için System.out ile System.err hemen hemen aynı sonucu verir. Her ikisi de ekrana mesaj basar.

48 System.out.println(“Tırnak içerisindeki bu ifade ekrana basıldı"); System.err.println(“Bu ifade ise error streamine ait bir ekran çıktısıdır"); Bunların her ikisi de PrintStream sınıfının bir üyesidir. Bu sınıfa ait sizin için faydalı olabilecek başka metodlar da mevcuttur: System.out.flush(); System.out.write(int); System.out.write(byte[] buf, int offset, int length); // !!! Yazma (devam)

49 Özet Java ‘nın Temelleri: Özet –Java Uygulamaları JVM (Java Sanal Makinesi), uygulamalar & applet ‘ler Giriş noktası main() veya init() –Java Temel Türleri ve Operatörleri Temel veri türleri Operatörler: = ve == dışındakiler bilinen işlevlere sahiptir. –Yeni arkadaşınız: System.out.println( )

50 Sorular


"Yardım çağırmak için son dakikayı beklemeyin 1. ipucu." indir ppt

Benzer bir sunumlar


Google Reklamları