Java Dersi Altuğ Bilgin Altıntaş Bu Dönem Hakkında Corba Servlet RMI Temel Kısım EJB JSP XML 2 JDBC JNI Çalışma Evreleri 6 Çalışma Evreleri 7 Java dosyasının hali 7 İlk Java uygulaması 7 Ciddi bir uygulama Nasa.java 7 Sınıf Nedir? Nesne Nedir? 21 II Herşey Nesne Java’da herşeye nesne olarak davranırız. Herseyin nesne olmasına rağmen nesneleri yönetmek için “ referanslar” kullanılır . 18 Ciddi bir uygulama II NesnelerdeAtama.java 7 Ciddi bir uygulama CopNesne.java 7 Ciddi bir uygulama MutluAdam.java 7 http://download.oracle.com/javase/6/docs/api/ Ciddi bir uygulama TarihHesaplama.java 7 Ciddi bir uygulama III. Ali.java Mehmet.java 7 JAR Dosyaları (The JavaTM Archive File) Güvenlik Sıkıştırma İndirme (download) zamanını azaltması Paket mühürleme(versiyon 1.2) Versiyon uyumluluğu açısından Paket versiyonlanma (versiyon1.2) Versiyon bilgilerinin gösterimi Taşınabilirlik Açıklama Komut JAR dosyası oluşturmak için jar -cf jar-dosya-ismi içeriye-atılacak-dosya(lar) jar -tf jar-dosya-ismi JAR dosyasının içeriğini bakmak için JAR dosyasının içeliğini toptan dışarı çıkartmak için jar -xf jar-dosya-ismi Belli bir dosyayı JAR dosyasından dışarı çıkartmak için jar -xf jar-dosya-ismi arşivlenmiş dosya(lar) JAR olarak paketlenmiş uygulayı çalıştırmak için jre -cp jar-dosya-ismi MainClass jar -cf kou.jar tr/ CLASSPATH AYARLARI CLASSPATH="C:\kodlar\bolum4\;." Yukarıdaki ifade yerine artık aşağıdaki ifadeyi kullanabiliriz. CLASSPATH="C:\muzik\kou.jar;." Ciddi bir uygulama Voltran.java 7 Ciddi bir uygulama PolimorfizmOrnekBir 7 Arayüz (Interface) Arayüzler, soyut sınıfların bir üst modeli gibi düşünülebilir. Arayüzler tamamen birleştirici bir rol oynamaları için tasarlanmışlardır. 2 Arayüz (Interface) Arayüzlerin içerisindeki gövdesiz (soyut) yordamlar (methods) otomatik olarak public erişim belirleyicisine sahip olurlar. 3 4 Ciddi bir uygulama BuyukIsYeri.java 7 class Mudur implements Calisan { public void calis() { // iptal etti (override) System.out.println("Mudur Calisiyor"); } } 6 Arayüz(Interface) ve Soyut sınıflar(Abstract classes) interface Hayvan { public void avlan() ; } abstract class Kedi implements Hayvan { } Bu örnek derlenir mi ? 7 Arayüz (Interface) Arayüzler, soyut sınıfların bir üst modeli gibi düşünülebilir. Arayüzler tamamen birleştirici bir rol oynamaları için tasarlanmışlardır. 2 Arayüz (Interface) Arayüzlerin içerisindeki gövdesiz (soyut) yordamlar (methods) otomatik olarak public erişim belirleyicisine sahip olurlar. 3 8 Ciddi bir uygulama Karisim2.java 7 Arayüz(Interface) ile çoklu kalıtım(Multiple inheritance) Java Programlama dili çoklu kalıtımı (multiple inheritance) desteklemez. 10 11 Ciddi bir uygulama Spor.java 7 Sebep Sporcu s = new SportmenMehmet(); // yukari cevirim s.calis(); // ?? 13 Arayüz (Interface) ile çoklu kalıtıma destek 14 Örnek SportmenMehmet belki hem BuzPatenci hem de Basketbolcu olamayabilir ama bunlara ait özellikleri alabilir. 15 Ciddi bir uygulama Spor2.java 7 Arayüzlerin kalıtım (inheritance) yoluyla genişletilmesi Bir arayüz başka bir arayüzünden türetilebilir. Böylece arayüzler kalıtım yoluyla genişletilmiş olur. 16 17 Yakından bakılırsı interface Avlanabilme extends DahaHizliKosabilme,Kosabilme { //.. } 18 Ciddi bir uygulama Jaguar.java 7 Çakışmalar Arayüzlerin içerisinde dönüş tipleri haricinde herşeyleri aynı olan gövdesiz (soyut) yordamlar varsa bu durum beklenmedik sorunlara yol açabilir. Cakisma.java (derlemeye çalışılırsa...) 20 Ciddi bir uygulama Cakisma.java (derlemeye çalışılırsa...) 7 public void hesapla(); // A1 arayüzüne ait public int hesapla(); // A3 arayüzüne ait 21 Arayüzün(Interface) içerisinde alan tanımlama Arayüzlerin içerisinde gövdesiz (soyut) yordamların dışında alanlar da bulunabilir. Bu alanlar, diğer uygulamalarda sabit olarak kullanılabilir. Arayüzün içerisinde tanımlanan bir alan (ilkel tipte veya sınıf tipinde olsun) otomatik olarak hem public erişim belirleyicisine hem de final ve static özelliğine sahip olur. 22 Örnek AyBul.java 23 Ciddi bir uygulama AyBul.java 7 Genel Bakış Arayüzlerin (interface) bizlere sağlamak istedigi fayda nedir ? 25 Genel Bakış Ulaşılmak istenen amaçlardan biri çoklu yukarı çevirimdir (upcasting). 26 Ciddi bir uygulama GenelBakis.java 7 Yakından bakarsak class A extends Soyut1 implements Arayuz1, Arayuz2 { //...... } 27 28 Soyut1 soyut_1 = new A(); Arayuz1 arayuz_1 = (Arayuz1) soyut_1; // tip degisimi Arayuz2 arayuz_2 = (Arayuz2) soyut_1; // tip degisimi 29 Veya Soyut1 soyut_1 = new A(); Arayuz1 arayuz_1 = new A(); Arayuz2 arayuz_2 = new A(); 30 Arayüzlerin en önemli amacı bağlaşımı kesmektir (decoupling) - I. Yazılım tasarımlarının en önemli amacı uygulamayı parçalara ayırmaktır (decompose). Uygulamayı parçalara ayırmak şart mı ? Neden ? Bağlaşımı Kesmek (decoupling) parçalara ayrılan kısımların birbirleriyle nasıl bir ilişki içerisinde olmaları gerektiği ile alakalı bir konudur. 31 Arayüzlerin en önemli amacı bağlaşımı kesmektir (decoupling) - II. Kullanım diyagramı (Uses Diagram) Parçalara ayrılan kısımlar arasındaki bağlılığı ifade eden bir gösterim seklidir. A parçası B parçasına ait bir kısmı kullanıyorsa o zaman A parçası B parçasına bağımlıdır diyebiliriz. 32 Arayüzlerin en önemli amacı bağlaşımı kesmektir (decoupling) - VI. Bağımlılık ve Belirtimler (Dependences and Specifications) A parçası’nın B parçasına olan bağımlılığını kesmek için araya belirtim konabilir. Belirtimler (Java programlama dilindeki arayüzler-interface) tek başlarına çalıştırılamazlar. Böylece A parçası (S) belirtimine bağımlı olur, B parçasıda belirtimin (S) gerektirdiklerini yerine getirir. 36 Arayüzlerin en önemli amacı bağlaşımı kesmektir (decoupling) - VII. Bağlaşımı kesme (decoupling) teknikleri Java kütüphaneleri içerisinde de kendisini çokca gösterir. java.util paketinin altındaki List arayüzü bunun en güzel örneklerindendir. 37 Dahili Sınıflar (Inner Classes) Dahili üye sınıflar Yerel sınıflar (Local classes) İsimsiz sınıflar (Anonymous classes) 43 Dahili Üye Sınıflar class CevreliyiciSinif { class DahiliSinif { //.... } //... } 44 Ciddi bir uygulama Hesaplama.java 7 Türetilebilen Dahili Üye Sınıflar Dahili üye sınıflar, aynı normal sınıflar gibi başka sınıflardan türetilebilirler. Böylece çoklu kalıtım desteğinin bir benzerini (güvenli), Java programlama dilinde de bulabiliriz. 47 48 Ciddi bir uygulama YarisArabasi.java 7 Yerel Sınıflar (Local Classes) Yerel sınıflar Yapılandırıcıların (constructor) Sınıf yordamlarının (statik yordam) Nesne yordamlarının Statik alanlara toplu değer vermek için kullandığımız statik bloğun Statik olmayan alanlara toplu değer vermek için kullandığımız bloğun içerisinde tanımlanabilir. 50 Yerel Sınıflar public class Sinif { public void yordam() { public class YerelSinif { //... } } } 51 57 Ciddi bir uygulama VI Supermarket.java 7 Ciddi bir uygulama VI HashMapTestBir.java Java 'da en iyi uygulama kuralları - 1 7 Java 'da en iyi uygulama kuralları - 2 Yanlış Doğru Java 'da en iyi uygulama kuralları - 2 Doğru Daha Doğru Java 'da en iyi uygulama kuralları - 3 Doğru Java 'da en iyi uygulama kuralları - 4 Doğru Java 'da en iyi uygulama kuralları - 5 Doğru Java 'da en iyi uygulama kuralları - 6 Java 'da en iyi uygulama kuralları - 7 Sorular ... 58