Java Dersi - WordPress.com

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