SlideShare a Scribd company logo
1 of 103
Download to read offline
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Java Programlama Dili
Ayrıksı Durumlar ve Kalıtlama
Tevfik AKTUĞLU
ta-java.blogspot.com
Mart 2016
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
İçerik
1 Ayrıksı Durumlar
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
2 Kalıtlama-Üstsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
3 Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durumlar Blog makalesi
Ayrıksı Durum
Bir programın çalışması sırasında ortaya çıkabilecek beklenmedik
durumlara ayrıksı durum denir. Ayrıksı durumun ortaya çıkması,
programın hatalı olduğu anlamına gelmez. Ancak; ayrıksı
durumların öngörülmeyip atlanması programı dayanıksız kılacaktır.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durumlar Blog makalesi
Ayrıksı Durum
Bir programın çalışması sırasında ortaya çıkabilecek beklenmedik
durumlara ayrıksı durum denir. Ayrıksı durumun ortaya çıkması,
programın hatalı olduğu anlamına gelmez. Ancak; ayrıksı
durumların öngörülmeyip atlanması programı dayanıksız kılacaktır.
Örnek
Kullanıcının sağladığı girdi sonucu;
1 bölenin 0 olması ve bölme işleminin sonuç döndürememesi
2 verilen ada sahip bir dosyanın bulunamaması
3 işlenmekte olan bir dizinin sınırları dışına taşılması
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durum İlanı
Java’da olası ayrıksı durumlar metot başlıklarının sonuna eklenen
throws yantümcesiyle ilan edilir.
public void kayıtlarıYaz(String dosyaAdı)
throws FileNotFoundException { ... }
Bu, söz konusu metot içinde bir şeylerin yanlış gidebileceği
(throws) ve bu durumun halledilmesi için yeterli bilgi olmaması
nedeniyle topun çağırıcıya atıldığı (throw) anlamına gelir.
Dosya açılıp bazı kayıtlar yazılacak ama ya verilen adda bir dosya
yoksa? Belki, çağıran metot buna karşı önlemini almış ve
yedekleme amacıyla ikinci bir konuma aynı kayıtları yazdırarak veri
kaybını önler.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durum İlanı
Java’da olası ayrıksı durumlar metot başlıklarının sonuna eklenen
throws yantümcesiyle ilan edilir.
public KesirliSayı böl(KesirliSayı sağ)
throws SıfırBölen { ... }
Bölenin sıfır olması karşısında yapılacak pek fazla bir şey yok.
Belki, ortaya çıkan olumsuzluğu kayıt defterine kaydettikten sonra
açık dosyaları kapatıp, açık bağlantıları kesip efendice programı
sonlandırmakta yarar var.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durum Fırlatımı
public KesirliSayı(long pay, long payda)
throws SıfırPayda {
if (payda == 0) throw new SıfırPayda();
_pay = pay;
_payda = payda;
this.sadeleşmiş();
} // yapıcı(long,long) sonu
throw ayrıksı durum koşullarının oluştuğu ve çözümün metot
içindeki kısıtlı ortamda mümkün olmaması nedeniyle çağırıcıya
bu konuda haber verilmesi zorunluluğunu gösterir.
throw return komutunun benzeri olarak düşünülebilir. Biten
işin sonucu değil, işin neden bitemediğinin özet bilgisini içeren
bir ayrıksı durum nesnesi döndürülür.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durum Fırlatımı
public KesirliSayı(long pay, long payda)
throws SıfırPayda {
if (payda == 0) throw new SıfırPayda();
_pay = pay;
_payda = payda;
this.sadeleşmiş();
} // yapıcı(long,long) sonu
throw sonrasındaki satırlar işlenmeyecek ve denetim akışı
çağırıcıya dönecektir.
Çağırıcı metot ya sorunu çözmeli ya da topu kendisini çağıran
metoda geçirmelidir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durum Kotarımı-try
public KesirliSayı ters() throws TersiYok {
try { return(new KesirliSayı(_payda, _pay)); }
catch(SıfırPayda e) {
throw new TersiYok(_pay, _payda);
}
} // KesirliSayı ters() sonu
try ayrıksı duruma neden olabilecek korunmalı kod bloğunun
sınırlarını saptar.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durum Kotarımı-catch
public KesirliSayı ters() throws TersiYok {
try { return(new KesirliSayı(_payda, _pay)); }
catch(SıfırPayda e) {
throw new TersiYok(_pay, _payda);
}
} // KesirliSayı ters() sonu
catch ortaya çıkması olası ayrıksı durumların nasıl hal yoluna
koyulacağını açıklayan kod bloğunu içerir. Yukarıdaki kod,
ortaya çıkabilecek SıfırPayda ayrıksı durumunu TersiYok
ayrıksı durumuna dönüştürüp gerisin geri çağırıcıya gönderiyor.
Gerektiği takdirde, birden çok catch bloğu birbirini izleyebilir.
Ancak, blokların sırasına dikkat edilmelidir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durum Kotarımı-catch
Ortaya çıkan durum için hangi bloğun seçileceğine yukarıdan
aşağıya bakılarak karar verilir. İlk eşleşme daha aşağı sıralardaki
blokların göz ardı edilmesine neden olacaktır. Dolayısıyla, genel
amaçlı kotarıcılar diğerlerinden sonra gelmelidir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durum Kotarımı-catch
Ortaya çıkan durum için hangi bloğun seçileceğine yukarıdan
aşağıya bakılarak karar verilir. İlk eşleşme daha aşağı sıralardaki
blokların göz ardı edilmesine neden olacaktır. Dolayısıyla, genel
amaçlı kotarıcılar diğerlerinden sonra gelmelidir.
try { ... }
catch(RuntimeException e) { ... }
catch(SıfırPayda e) { ... }
Yukarıdaki blokların sırası hatalı! Çünkü, ortaya çıkabilecek
SıfırPayda durumunda ilk sırada bulunan RuntimeException
kotarıcısı işe soyunacakır. Doğrusu, kotarıcıların sırasını
değiştirmektir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durum Kotarımı-finally
finally, ayrıksı durum ortaya çıksa da çıkmasa da icra edilmesi
garanti edilen özel bir kotarıcı tanımlar. Genelde bir işlemin bitişi
sonrasında kaynakların geri döndürülmesi için kullanılır.
FileInputStream dosya = null;
try {
dosya = new FileInputStream(...);
...
} catch(FileNotFoundException e) { ... }
...
finally { dosya.close(); }
Pek çok zaman, çökme noktasına gelen bir programda ortama çeki
düzen verip hasarı en aza indiren düzenlemeleri yapmak için
kullanılır.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durumun Duruma Uygunluğu
Atılan ayrıksı durumun metodun kullanım sebebine uygun olması
gerekir.
public KesirliSayı böl(KesirliSayı sağ)
throws TersiYok {
return(this.çarp(sağ.ters()));
} // KesirliSayı böl(KesirliSayı) sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durumun Duruma Uygunluğu
Atılan ayrıksı durumun metodun kullanım sebebine uygun olması
gerekir.
public KesirliSayı böl(KesirliSayı sağ)
throws TersiYok {
return(this.çarp(sağ.ters()));
} // KesirliSayı böl(KesirliSayı) sonu
Daha doğrusu...
public KesirliSayı böl(KesirliSayı sağ)
throws SıfırBölen {
try { return(this.çarp(sağ.ters())); }
catch (TersiYok e) { throw new SıfırBölen(); }
} // KesirliSayı böl(KesirliSayı) sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durum Sınıf Sıradüzeni
Throwable: Sıradüzeninin tepesindeki sınıf.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durum Sınıf Sıradüzeni
Throwable: Sıradüzeninin tepesindeki sınıf.
Error: Programcının halli yolunda pek fazla bir şey
yapamayacağı normal dışı durumlar. Dolayısıyla, sistem
yazılımı üretecek azınlık bir grup dışında, programcıların bu
kategorideki hata durumlarını yakalaması beklenmez. Örnek
olarak, bellek yetersizliğine işaret eden OutOfMemoryError
hatasını verebiliriz.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durum Sınıf Sıradüzeni
Throwable: Sıradüzeninin tepesindeki sınıf.
Error: Programcının halli yolunda pek fazla bir şey
yapamayacağı normal dışı durumlar. Dolayısıyla, sistem
yazılımı üretecek azınlık bir grup dışında, programcıların bu
kategorideki hata durumlarını yakalaması beklenmez. Örnek
olarak, bellek yetersizliğine işaret eden OutOfMemoryError
hatasını verebiliriz.
Exception: Programcının yakalayıp düzeltme yönünde bir
şeyler yapabileceği beklenmedik durumlar.
RuntimeException ve altındaki sıradüzeninde bulunan ayrıksı
durumların kotarımı zorunlu değildir.
Geri kalan Exception sıradüzenindeki ayrıksı durumların
kotarılması veya çağrıyı yapan metodun başlığında da ilan
edilmesi zorunludur ve bu derleyici tarafından kontrol edilir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
RuntimeException
RuntimeException sınıfının kökü olduğu kısmi sıradüzeninin
dışındaki ayrıksı durumlar bir şekilde hal yoluna konulmak
zorundadır.
1 Muhtemel sorunlu bölgeler ilişkin kotarıcıların bulunduğu try
içine alınmalı.
public KesirliSayı topla(KesirliSayı sağ) {
try {
return new KesirliSayı(
_pay * sağ._payda + _payda * sağ._pay,
_payda * sağ._payda);
} catch(SıfırPayda e) {}
} // KesirliSayı topla(KesirliSayı) sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
RuntimeException
RuntimeException sınıfının kökü olduğu kısmi sıradüzeninin
dışındaki ayrıksı durumlar bir şekilde hal yoluna konulmak
zorundadır.
1 Muhtemel sorunlu bölgeler ilişkin kotarıcıların bulunduğu try
içine alınmalı.
2 Çağırılan metodun neden olduğu ayrıksı durum aynen
çağırıcıya iletilmeli.
public KesirliSayı topla(KesirliSayı sağ)
throws SıfırPayda {
return
new KesirliSayı(
_pay * sağ._payda + _payda * sağ._pay,
_payda * sağ._payda);
} // KesirliSayı topla(KesirliSayı) sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
RuntimeException
RuntimeException sınıfının kökü olduğu kısmi sıradüzeninin
dışındaki ayrıksı durumlar bir şekilde hal yoluna konulmak
zorundadır.
1 Muhtemel sorunlu bölgeler ilişkin kotarıcıların bulunduğu try
içine alınmalı.
2 Çağırılan metodun neden olduğu ayrıksı durum aynen
çağırıcıya iletilmeli.
3 Ayrıksı durum, RuntimeException sınıfından kalıtlayacak
şekilde tanımlanmalı.
public KesirliSayı topla(KesirliSayı sağ) {
return
new KesirliSayı(
_pay * sağ._payda + _payda * sağ._pay,
_payda * sağ._payda);
} // KesirliSayı topla(KesirliSayı) sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
Ayrıksı Durumlar
Örnek
package etk.matematik.ayrıksıdurumlar;
import static java.lang.System.*;
public class TersiYok extends RuntimeException {
public TersiYok(long pay, long payda) {
super("Problemli sayı: " + pay + "/" + payda + ".");
_n = pay; _d = payda;
if (getProperty("ayrıksıdurumlar.çalçene") != null)
else err.println("TersiYok içinde...");
} // yapıcı(long, long) sonu
public long getPayda() { return _d; }
public long getPay() { return _n; }
private long _n, _d;
} // TersiYok sınıfının sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
İçerik
1 Ayrıksı Durumlar
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
2 Kalıtlama-Üstsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
3 Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Paket Tanımı ve import Yönergeleri
package etk.matematik;
import etk.matematik.ayrıksıdurumlar.*;
import static java.lang.System.err;
KesirliSayı sınıfı etk.matematik paketi içine konuluyor.
etk.matematik.ayrıksıdurumlar paketindeki tüm türler
programa görünür kılınıyor.
java.lang.System sınıfının static öğelerinden err, sınıf
adı olmadan kullanılabilir.
System.err standart hata dosyasını temsil eden çıktı ortamıdır
ve değiştirilmedikçe ekrana bağlanmıştır.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Arayüz Gerçekleştirme
public class KesirliSayı
implements Comparable<KesirliSayı> { ... }
KesirliSayı sınıfı Comparable arayüzünün varsayılan
gerçekleştirime sahip olmayan tüm iletilerini
gerçekleştireceğine dair söz veriyor.
Adı anılan sınıf ve arayüz arasında gerçekleştirme ilişkisi
kuruluyor.
KesirliSayı nesneleri karşılaştırılabilir nesneler kategorisine
giriyor.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Comparable Arayüzü
Comparable arayüzü Java evrenindeki nesnelerin
karşılaştırılabilir olma standardını ortaya koyar.
Tanıma uyan sınıfların nesneleri sınıflarından bağımsız olarak
karşılaştırılabilir nesneler kategorisine de aittir.
KesirliSayı nesneleri kesirli sayılardan beklenen toplama,
çıkarma gibi işlemlerin yanısıra karşılaştırılabilir nesnelere has
sıralama, ikili arama gibi işlemlere de katılabilirler.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Comparable Arayüzü
Comparable arayüzü Java evrenindeki nesnelerin
karşılaştırılabilir olma standardını ortaya koyar.
Tanıma uyan sınıfların nesneleri sınıflarından bağımsız olarak
karşılaştırılabilir nesneler kategorisine de aittir.
KesirliSayı nesneleri kesirli sayılardan beklenen toplama,
çıkarma gibi işlemlerin yanısıra karşılaştırılabilir nesnelere has
sıralama, ikili arama gibi işlemlere de katılabilirler.
Fonksiyonel bir arayüz olan Comparable, ilan ettiği yegâne
ileti olan compareTo’nun gerçekleştirimi ile ileti alıcı ve aynı
sınıftan bir diğer nesne arasındaki sıralama durumuna açıklık
getirilmesini bekler.
İleti alıcı ile diğer nesne eşitse, 0 döndürülmelidir.
Olası bir sıralamada ileti alıcının ’önce’ gelmesi gerekiyorsa eksi
bir int, aksi takdirde artı bir int döndürülmelidir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
java.util.Comparator
Sınıfın neneleri karşılaştırılabilir olduğu halde Comparable
gerçekleştirilmediyse?
Birden çok karşılaştırma ölçütü gerekli olursa?
Öğrencileri numaralarına göre sırala.
Öğrencileri adına göre sırala.
Öğrencileri aldığı nota göre sırala.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
java.util.Comparator
Sınıfın neneleri karşılaştırılabilir olduğu halde Comparable
gerçekleştirilmediyse?
Birden çok karşılaştırma ölçütü gerekli olursa?
Öğrencileri numaralarına göre sırala.
Öğrencileri adına göre sırala.
Öğrencileri aldığı nota göre sırala.
Çözüm: java.util.Compararator arayüzünü gerçekleştiren
karşılaştırıcı sınıf(lar) gerçekleştirmek.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Davranışsal ve Melez Öğeler
public class KesirliSayı
implements Comparable<KesirliSayı> {
public KesirliSayı böl(KesirliSayı sağ) { ... }
public KesirliSayı çarp(KesirliSayı sağ) { ... }
public KesirliSayı çıkar(KesirliSayı sağ) { ... }
public KesirliSayı ters() { ... }
public KesirliSayı topla(KesirliSayı sağ) { ... }
public int compareTo(KesirliSayı sağ) { ... }
public long getPay() { ... }
public long getPayda() { ... }
...
} // KesirliSayı sınıfının sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Metot Gerçekleştirimi
r/s = {t | pay(t) = pay(r) ∗ payda(s), payda(t) = pay(s) ∗ payda(r)}
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Metot Gerçekleştirimi
r/s = {t | pay(t) = pay(r) ∗ payda(s), payda(t) = pay(s) ∗ payda(r)}
public KesirliSayı böl(KesirliSayı sağ) {
return new KesirliSayı(getPay() * sağ.getPayda(),
getPayda() * sağ.getPay());
} // KesirliSayı böl(KesirlSayı)
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Metot Gerçekleştirimi
r/s = {t | pay(t) = pay(r) ∗ payda(s), payda(t) = pay(s) ∗ payda(r)}
public KesirliSayı böl(KesirliSayı sağ) {
return new KesirliSayı(getPay() * sağ.getPayda(),
getPayda() * sağ.getPay());
} // KesirliSayı böl(KesirlSayı)
Gerçekleştirim doğru. Ne var ki, sağlanan argümanın 0 değerine
sahip olması durumunda bölme işleminin gerçekleşmemesi gerekli.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Davranışsal Öğeler
public class KesirliSayı
implements Comparable<KesirliSayı> {
public KesirliSayı böl(KesirliSayı sağ)
throws SıfırBölen { ... }
public KesirliSayı çarp(KesirliSayı sağ) { ... }
public KesirliSayı çıkar(KesirliSayı sağ) { ... }
public KesirliSayı ters() throws TersiYok { ... }
public KesirliSayı topla(KesirliSayı sağ) { ... }
public int compareTo(KesirliSayı sağ) { ... }
...
} // KesirliSayı sınıfının sonu
throws, metot doğru gerçekleştirilmiş olsa bile, sağlanacak verinin
içeriği, çalışma ortamındaki olumsuz koşullar, vd nedenlerden dolayı
bazı beklenmedik durumların oluşabileceğini söylüyor.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Veri Öğeleri
public long getPay() { return _pay;}
public long getPayda() { return _payda;}
private long _pay;
private long _payda;
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Yapıcılar
public KesirliSayı(long pay, long payda)
throws SıfırPayda {
if (payda == 0) throw new SıfırPayda();
_pay = pay;
_payda = payda;
this.sadeleşmiş();
} // yapıcı(long,long) sonu
public KesirliSayı(KesirliSayı varolan) {
_pay = varolan._pay;
_payda = varolan._payda;
} // yapıcı(KesirliSayı) sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Yapıcılar
public KesirliSayı(long _pay) { this._pay = _pay; }
public KesirliSayı() { }
Parametre adı olarak seçilen _pay kötü bir seçim olmuş.
Programcı herhangi bir yapıcı gerçekleştirecek olursa derleyici
tarafından varsayılan yapıcı sentezlenmez. Dolayısıyla,
yukarıdaki ikinci yapıcının yazılması, varsayılan yapıcının
olması isteniyorsa, zorunlu.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Nesne İlkleme Bloğu
Nesne İlkleme Bloğu
Nesne ilkleme bloğu, nesne yaratımı sırasında yapıcı çağrısı
öncesinde çağırılır. Yapıcılarda ilkdeğer verilmemiş altalanlara
varsayılandan farklı bir değer verilmesi için kullanılabilir.
{ _pay = 1; _payda = 1; }
⇓
KesirliSayı ks = new KesirliSayı(3);
≡
KesirliSayı ks = new KesirliSayı(3, 1);
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Comparable Arayüzünü Gerçekleştirmek
public int compareTo(KesirliSayı sağ) {
double sol_ = ((double) _pay) / _payda;
double sağ_ = ((double) sağ._pay) / sağ._payda;
if (sol_ > sağ_) return 1;
else if (sol_ == sağ_) return 0;
else return -1;
} // int compareTo(KesirliSayı) sonu
Yukarıdaki gerçekleştirim, kayan noktalı sayıların gerçel sayıları
kusurlu temsil etmesi nedeniyle birbirine yakın kesirli sayıları farklı
oldukları halde eşit gösterebilir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Comparable Arayüzünü Gerçekleştirmek
/*
x - y = 0 ⇒ x = y
x - y > 0 ⇒ x > y
x - y < 0 ⇒ x < y
*/
public int compareTo(KesirliSayı sağ) {
long pay = çıkar(sağ).getPay();
if (pay == 0) return 0;
else return (pay > 0) ? 1 : -1;
} // int compareTo(KesirliSayı) sonu
Bu gerçekleştirim sayesinde, KesirliSayı nesneleri tutan kapları
Comparable içerik barındıran kaplar bekleyen Arrays.sort ve
Collections.sort gibi metotlara argüman olarak geçirebiliriz.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Derleme
javac -d "/home/tevfik/Java Kursu/sınıflar"
-encoding utf8 SıfırBölen.java
javac -d "/home/tevfik/Java Kursu/sınıflar"
-encoding utf8 SıfırPayda.java TersiYok.java
javac -d "/home/tevfik/Java Kursu/sınıflar"
-cp "/home/tevfik/Java Kursu/sınıflar"
-encoding utf8 KesirliSayı.java
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Derleme-Argüman Dosyaları
ayrıksıdurumlar
SıfırBölen.java
SıfırPayda.java
TersiYok.java
opsiyonlar
-encoding utf8
-d ”/home/tevfik/Java Kursu/sınıflar”
javac @opsiyonlar @ayrıksıdurumlar
javac @opsiyonlar
-cp "/home/tevfik/Java Kursu/sınıflar"
KesirliSayı.java
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Sınama Programı
import etk.matematik.KesirliSayı;
import etk.matematik.ayrıksıdurumlar.*;
import static java.lang.System.out;
public class SınaKesirliSayı {
public static void main(String[] args) {
...
} // void main(String[]) sonu
} // SınaKesirliSayı sınıfının sonu
import yönergeleri yetmez; ayrıksı durum sınıfları ve
KesirliSayı’nın derlenmiş hallerini sınıf yoluna da koymak gerekli.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Sınama Programı
out.println
("KS nesnesi (beş) yaratıp 5 ile ilkliyorum...");
KesirliSayı beş = new KesirliSayı(5);
out.println
("KS nesnesi (sıfır) yaratıp 0 ile ilkliyorum...");
KesirliSayı sıfır = new KesirliSayı(0);
out.println
("KS nesnesi (ks2) yaratıp 2/5 ile ilkliyorum...");
KesirliSayı ks2 = new KesirliSayı(2, 5);
out.println("beş.çarp(ks2) = " + beş.çarp(ks2));
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Sınama Programı
try {
// out.println
// ("KS nesnesi (ks3) yaratıp 3/0 ile ilkliyorum...");
// KesirliSayı ks3 = new KesirliSayı(3, 0);
out.println("beş'i sıfır'la bölmeye çaışıyorum...");
out.println(beş.böl(sıfır));
} // catch (SıfırPayda e) { e.printStackTrace(); }
catch (SıfırBölen e) { e.printStackTrace(); }
try {
out.println("sıfır'ın tersini almaya çalışıyorum...");
out.println(sıfır.ters());
} catch(TersiYok e) {
out.println(e.getMessage()); e.printStackTrace();
}
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
Sınama Programı
Çalıştırma
java -cp ".:/home/tevfik/Java Kursu/sınıflar"
SınaKarmaşıkSayı
ya da
java -cp ".:/home/tevfik/Java Kursu/sınıflar"
-Dayrıksıdurumlar.çalçene SınaKarmaşıkSayı
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
İçerik
1 Ayrıksı Durumlar
Tanım
Evreler
Ayrıksı Durum Sıradüzeni ve Örnek
2 Kalıtlama-Üstsınıf
Sınıf Başlığı
Kaynak Kod
Sınama Programı
3 Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Kaynak Kod
Sınıf Başlığı
package etk.matematik;
import etk.matematik.KesirliSayı;
public class Tamsayı
extends KesirliSayı implements Cloneable {
Tamsayı KesirliSayı sınıfından kalıtlar.
Tamsayı Cloneable arayüzünü gerçekleştirir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Kalıtlama Blog makalesi
Kalıtlama üstsınıf ve altsınıf arasında ”gibi olmak” ilişkisi
kurar.
Tamsayılar payda değeri 1 olan kesirli sayılardır. Dolayısıyla,
tamsayılar kesirli sayı gibi görülebilir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Kalıtlama Blog makalesi
Kalıtlama üstsınıf ve altsınıf arasında ”gibi olmak” ilişkisi
kurar.
Tamsayılar payda değeri 1 olan kesirli sayılardır. Dolayısıyla,
tamsayılar kesirli sayı gibi görülebilir.
Tanımında üstsınıf ilan edilmeyen sınıfların Object sınıfından
kalıtladığı varsayılır.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Kalıtlama Blog makalesi
Kalıtlama üstsınıf ve altsınıf arasında ”gibi olmak” ilişkisi
kurar.
Tamsayılar payda değeri 1 olan kesirli sayılardır. Dolayısıyla,
tamsayılar kesirli sayı gibi görülebilir.
Tanımında üstsınıf ilan edilmeyen sınıfların Object sınıfından
kalıtladığı varsayılır.
Üstsınıftaki public ve protected metotların tümü, erişim
niteleyicilerini koruyacak şekilde altsınıfta varlıklarını
sürdürürler.
Üstsınıfın nesnelerine gönderilen iletilerin tümü altsınıfın
nesnelerine de gönderilebilir.
İstenecek olursa, üstsınıftan kalıtlanan metot tanımları
altsınıfta ezilebilir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Kalıtlama Blog makalesi
Kalıtlama üstsınıf ve altsınıf arasında ”gibi olmak” ilişkisi
kurar.
Tamsayılar payda değeri 1 olan kesirli sayılardır. Dolayısıyla,
tamsayılar kesirli sayı gibi görülebilir.
Tanımında üstsınıf ilan edilmeyen sınıfların Object sınıfından
kalıtladığı varsayılır.
Üstsınıftaki public ve protected metotların tümü, erişim
niteleyicilerini koruyacak şekilde altsınıfta varlıklarını
sürdürürler.
Üstsınıfın nesnelerine gönderilen iletilerin tümü altsınıfın
nesnelerine de gönderilebilir.
İstenecek olursa, üstsınıftan kalıtlanan metot tanımları
altsınıfta ezilebilir.
Java’da çoklu sınıf kalıtlama desteklenmez.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Kalıtlama Blog makalesi
Kalıtlama üstsınıf ve altsınıf arasında ”gibi olmak” ilişkisi
kurar.
Tamsayılar payda değeri 1 olan kesirli sayılardır. Dolayısıyla,
tamsayılar kesirli sayı gibi görülebilir.
Tanımında üstsınıf ilan edilmeyen sınıfların Object sınıfından
kalıtladığı varsayılır.
Üstsınıftaki public ve protected metotların tümü, erişim
niteleyicilerini koruyacak şekilde altsınıfta varlıklarını
sürdürürler.
Üstsınıfın nesnelerine gönderilen iletilerin tümü altsınıfın
nesnelerine de gönderilebilir.
İstenecek olursa, üstsınıftan kalıtlanan metot tanımları
altsınıfta ezilebilir.
Java’da çoklu sınıf kalıtlama desteklenmez.
Kalıtlama bir araçtır, amaç değil.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Kök Sınıf: Object
Tüm Java nesneleri, hangi sınıfa ait olurlarsa olsunlar, Object
sınıfı üyesi gibi görülebilirler.
Üstsınıf ilanı içermediği takdirde tanımlanmakta olan bir
sınıfın Object’ten kalıtladığı varsayılır.
equals, toString ve hashCode gibi tüm nesnelerin alması
olası iletiler bu sınıfta tanımlanmıştır. Söz konusu iletilerin
sınıf içinde gerçekleştirimi sağlanmayacak olursa, ileti
gönderimi sonrasında çağrılacak metot Object sınıfı içinde
sağlanmış olan gerçekleştirim olacaktır.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Klonlama
int i1 = 3, i2 = 5;
SınıfAdı o1 = new SınıfAdı();
SınıfAdı o2 = o1;
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
İlkel Tür Kopyalama
public void main(String[] ksa) {
int i1 = 3;
int i2 = 5;
intleriTakasEt(i1, i2);
} // void main(String[]) sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
İlkel Tür Kopyalama
public void intleriTakasEt(int a, int b) {
int temp = a;
a = b;
b = temp;
} // intleriTakasEt(int, int) sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Nesne Kopyalama
public class DeğInt {
public DeğInt(int dğr) { _değer = dğr; }
public void setDeğer(int yeniDğr) { _değer = yeniDğr; }
public int Değer() { return _değer; }
private int _değer;
} // DeğInt sınıfının sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Nesne Kopyalama
public static void main(String[] ksa) {
DeğInt o1 = new DeğInt(3), o2 = new DeğInt(5);
integerNesnesiTakasEt(o1, o2);
} // void main(String[]) sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Nesne Kopyalama
public void integerNesnesiTakasEt(DeğInt a, DeğInt b) {
int temp = a.getValue();
a.setValue(b.getValue()); b.setValue(temp);
} // integerNesnesiTakasEt(DeğInt, DeğInt) sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Cloneable
Nesnelerin değişmesinin önüne geçmek, nesneyi paylaştırmak yerine
kopyalamakla mümkün olur. Bu ise Cloneable arayüzünü
gerçekleştirmekten geçer.
Cloneable gösterge arayüzdür. Yani, hiçbir ileti içermez.
Object tarafından sağlanan clone metodu ezilir. Bu
yapılırken, erişim niteleyicisi protected iken public yapılır.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Cloneable
Nesnelerin değişmesinin önüne geçmek, nesneyi paylaştırmak yerine
kopyalamakla mümkün olur. Bu ise Cloneable arayüzünü
gerçekleştirmekten geçer.
Cloneable gösterge arayüzdür. Yani, hiçbir ileti içermez.
Object tarafından sağlanan clone metodu ezilir. Bu
yapılırken, erişim niteleyicisi protected iken public yapılır.
public Object clone() {
Object sonuçNesne = null;
try { sonuçNesne = super.clone(); }
catch (CloneNotSupportedException e) {
System.err.println("Klonlama olanaksız!!!");
}
return sonuçNesne;
} // Object clone() sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Neden Bu “Garip” Protokol?
Klonlama bir şeyin değişime uğramadan kopyalanması
demektir. Dolayısıyla, nesnenin klonlanması nesnedeki hassas
içeriğin de olduğu gibi kopyalanmasına neden olur.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Neden Bu “Garip” Protokol?
Klonlama bir şeyin değişime uğramadan kopyalanması
demektir. Dolayısıyla, nesnenin klonlanması nesnedeki hassas
içeriğin de olduğu gibi kopyalanmasına neden olur.
Klonlamayı kopyalayan yapıcıdan üstün kılan performansıdır.
Kopyalayan yapıcıda tüm altalanlar teker teker kopyalanırken,
Object sınıfındaki klonlamada nesne büyüklüğündeki bellek,
içindeki yapısallık gözönüne alınmaksızın doğrudan kopyalanır.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Neden Bu “Garip” Protokol?
Klonlama bir şeyin değişime uğramadan kopyalanması
demektir. Dolayısıyla, nesnenin klonlanması nesnedeki hassas
içeriğin de olduğu gibi kopyalanmasına neden olur.
Klonlamayı kopyalayan yapıcıdan üstün kılan performansıdır.
Kopyalayan yapıcıda tüm altalanlar teker teker kopyalanırken,
Object sınıfındaki klonlamada nesne büyüklüğündeki bellek,
içindeki yapısallık gözönüne alınmaksızın doğrudan kopyalanır.
clone’un public tanımlanması, nesnelerin herkes tarafından
klonlanabileceği anlamına gelir. Güvenlik tehdidi olarak görülen
bu durum, erişimin protected yapılmasıyla önlenmiştir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Neden Bu “Garip” Protokol?
Klonlama bir şeyin değişime uğramadan kopyalanması
demektir. Dolayısıyla, nesnenin klonlanması nesnedeki hassas
içeriğin de olduğu gibi kopyalanmasına neden olur.
Klonlamayı kopyalayan yapıcıdan üstün kılan performansıdır.
Kopyalayan yapıcıda tüm altalanlar teker teker kopyalanırken,
Object sınıfındaki klonlamada nesne büyüklüğündeki bellek,
içindeki yapısallık gözönüne alınmaksızın doğrudan kopyalanır.
clone’un public tanımlanması, nesnelerin herkes tarafından
klonlanabileceği anlamına gelir. Güvenlik tehdidi olarak görülen
bu durum, erişimin protected yapılmasıyla önlenmiştir.
Sınıfın Cloneable ilan edilmesi, gerçekleştirimcinin durumun
farkında olduğunun işaretidir.
Sınıfın Cloneable ilan edilmesi sonrasında erişimin
protected iken public’e değiştirilebilmesi, derleyicinin
ikilemin farkında olduğunun işaretidir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Yapıcılar
public Tamsayı(long pay) { super(pay); }
public Tamsayı() { super(0); }
public Tamsayı(Tamsayı varolan) {
super(varolan.getPay());
} // yapıcı(Tamsayı) sonu
Yapıcılar kalıtlanmaz.
super(...) üstsınıfın uygun imzalı yapıcısını çağırır.
Üstsınıf yapıcı çağrısı ilk satırda yer almak zorundadır.
Üstsınıf yapıcı çağrısının yapılmaması durumunda, derleyici
üstsınıfın varsayılan yapıcısına çağrıyı söz konusu yapıcının ilk
satırı olarak ekler.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Üstsınıf Metodunu Ezmek
public KesirliSayı topla(KesirliSayı sağ) {
System.out.print(
"[Tamsayı.topla(KesirliSayı) içinde] ");
return (super.topla(sağ));
} // KesirliSayı topla(KesirliSayı) sonu
Yukarıdaki gerçekleştirim, KesirliSayı sınıfındaki aynı imzalı
metodu ezmekte.
super.topla(sağ) üstsınıftaki topla(KesirliSayı)
metodunu çağırır.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Üstsınıf Metodunu Aşırı Yüklemek
public Tamsayı topla(Tamsayı sağ) {
System.out.print(
"[Tamsayı.topla(Tamsayı) içinde] ");
return(new Tamsayı(
this.getPay() + sağ.getPay()));
} // Tamsayı topla(Tamsayı) sonu
Yukarıdaki gerçekleştirim, KesirliSayı sınıfında tanımlanıp
Tamsayı sınıfında ezilmiş aynı adlı metodu aşırı yüklemektedir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
1 Bir nesneye gönderilebilecek iletiler, nesneyi temsil eden
tutacağın türüne göre belirlenir.
Tutacak türüne statik tür de denir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
1 Bir nesneye gönderilebilecek iletiler, nesneyi temsil eden
tutacağın türüne göre belirlenir.
Tutacak türüne statik tür de denir.
2 Gönderilebilirliği derleyici tarafından onaylanan bir ileti
sonrasında çağrılacak metot nesnenin sınıfı içinde aranmaya
başlanır.
Nesne sınıfına dinamik tür de denir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
1 Bir nesneye gönderilebilecek iletiler, nesneyi temsil eden
tutacağın türüne göre belirlenir.
Tutacak türüne statik tür de denir.
2 Gönderilebilirliği derleyici tarafından onaylanan bir ileti
sonrasında çağrılacak metot nesnenin sınıfı içinde aranmaya
başlanır.
Nesne sınıfına dinamik tür de denir.
3 İleti ile aynı imzaya sahip bir metodun nesnenin sınıfı içinde
bulunması söz konusu metodun çağrılmasına neden olur. Aksi
takdirde, aramaya üstsınıfta devam edilir. Aramanın üstsınıfta
sürdürülmesi Object sınıfına kadar devam edebilir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı üç = new KesirliSayı(3);
out.print("beş.çarp(üç) = " + beş.çarp(üç));
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı üç = new KesirliSayı(3);
out.print("beş.çarp(üç) = " + beş.çarp(üç));
1 Tutacağın türü: Tamsayı =⇒ Tamsayı sınıfında listelenmiş
iletilere izin verilebilir ve çarp(KesirliSayı) bu iletilerden
birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı üç = new KesirliSayı(3);
out.print("beş.çarp(üç) = " + beş.çarp(üç));
1 Tutacağın türü: Tamsayı =⇒ Tamsayı sınıfında listelenmiş
iletilere izin verilebilir ve çarp(KesirliSayı) bu iletilerden
birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
3 Tamsayı sınıfı aranan imzaya sahip bir gerçekleştirim
içermiyor. Arama üstsınıfta sürmeli.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı üç = new KesirliSayı(3);
out.print("beş.çarp(üç) = " + beş.çarp(üç));
1 Tutacağın türü: Tamsayı =⇒ Tamsayı sınıfında listelenmiş
iletilere izin verilebilir ve çarp(KesirliSayı) bu iletilerden
birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
3 Tamsayı sınıfı aranan imzaya sahip bir gerçekleştirim
içermiyor. Arama üstsınıfta sürmeli.
4 KesirliSayı sınıfı çarp(KesirliSayı) imzalı bir
gerçekleştirim içeriyor. Bu metot çağrılacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
KesirliSayı üç = new KesirliSayı(3);
out.println("üç.topla(üç) = " + üç.topla(üç));
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
KesirliSayı üç = new KesirliSayı(3);
out.println("üç.topla(üç) = " + üç.topla(üç));
1 Tutacağın türü: KesirliSayı =⇒ KesirliSayı sınıfında
listelenmiş iletilere izin verilebilir ve topla(KesirliSayı) bu
iletilerden birisi.
2 Nesnenin türü: KesirliSayı =⇒ Çağrılacak metot
KesirliSayı sınıfı içinde aranmaya başlanacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
KesirliSayı üç = new KesirliSayı(3);
out.println("üç.topla(üç) = " + üç.topla(üç));
1 Tutacağın türü: KesirliSayı =⇒ KesirliSayı sınıfında
listelenmiş iletilere izin verilebilir ve topla(KesirliSayı) bu
iletilerden birisi.
2 Nesnenin türü: KesirliSayı =⇒ Çağrılacak metot
KesirliSayı sınıfı içinde aranmaya başlanacak.
3 KesirliSayı sınıfı topla(KesirliSayı) imzalı bir
gerçekleştirim içeriyor. Bu metot çağrılacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı üç = new KesirliSayı(3);
out.print("üç.topla(beş) = " + üç.topla(beş));
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı üç = new KesirliSayı(3);
out.print("üç.topla(beş) = " + üç.topla(beş));
1 Tutacağın türü: KesirliSayı =⇒ KesirliSayı sınıfında
listelenmiş iletilere izin verilebilir ve topla(Tamsayı) bu
iletilerden birisi. Çünkü, aynı ileti, kalıtlama sayesinde,
topla(KesirliSayı) olarak ele alınabilir.
2 Nesnenin türü: KesirliSayı =⇒ Çağrılacak metot
KesirliSayı sınıfı içinde aranmaya başlanacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı üç = new KesirliSayı(3);
out.print("üç.topla(beş) = " + üç.topla(beş));
1 Tutacağın türü: KesirliSayı =⇒ KesirliSayı sınıfında
listelenmiş iletilere izin verilebilir ve topla(Tamsayı) bu
iletilerden birisi. Çünkü, aynı ileti, kalıtlama sayesinde,
topla(KesirliSayı) olarak ele alınabilir.
2 Nesnenin türü: KesirliSayı =⇒ Çağrılacak metot
KesirliSayı sınıfı içinde aranmaya başlanacak.
3 KesirliSayı sınıfı topla(KesirliSayı) imzalı bir
gerçekleştirim içeriyor. Bu metot çağrılacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı üç = new KesirliSayı(3);
out.print("beş.topla(üç) = " + beş.topla(üç));
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı üç = new KesirliSayı(3);
out.print("beş.topla(üç) = " + beş.topla(üç));
1 Tutacağın türü: Tamsayı =⇒ Tamsayı sınıfında listelenmiş
iletilere izin verilebilir ve topla(KesirliSayı) bu iletilerden
birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı üç = new KesirliSayı(3);
out.print("beş.topla(üç) = " + beş.topla(üç));
1 Tutacağın türü: Tamsayı =⇒ Tamsayı sınıfında listelenmiş
iletilere izin verilebilir ve topla(KesirliSayı) bu iletilerden
birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
3 Tamsayı sınıfı topla(KesirliSayı) imzalı bir gerçekleştirim
içeriyor. Bu metot çağrılacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
out.print("beş.topla(beş) = " + beş.topla(beş));
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
out.print("beş.topla(beş) = " + beş.topla(beş));
1 Tutacağın türü: Tamsayı =⇒ Tamsayı sınıfında listelenmiş
iletilere izin verilebilir ve topla(Tamsayı) bu iletilerden birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
out.print("beş.topla(beş) = " + beş.topla(beş));
1 Tutacağın türü: Tamsayı =⇒ Tamsayı sınıfında listelenmiş
iletilere izin verilebilir ve topla(Tamsayı) bu iletilerden birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
3 Tamsayı sınıfı topla(Tamsayı) imzalı bir gerçekleştirim
içeriyor. Bu metot çağrılacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
KesirliSayı üç = new KesirliSayı(3);
out.print("ksBeş.topla(üç) = " + ksBeş.topla(üç));
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
KesirliSayı üç = new KesirliSayı(3);
out.print("ksBeş.topla(üç) = " + ksBeş.topla(üç));
1 Tutacağın türü: KesirliSayı =⇒ KesirliSayı sınıfında
listelenmiş iletilere izin verilebilir ve topla(KesirliSayı) bu
iletilerden birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
KesirliSayı üç = new KesirliSayı(3);
out.print("ksBeş.topla(üç) = " + ksBeş.topla(üç));
1 Tutacağın türü: KesirliSayı =⇒ KesirliSayı sınıfında
listelenmiş iletilere izin verilebilir ve topla(KesirliSayı) bu
iletilerden birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
3 Tamsayı sınıfı topla(KesirliSayı) imzalı bir gerçekleştirim
içeriyor. Bu metot çağrılacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
out.print("ksBeş.topla(beş) = " + ksBeş.topla(beş));
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
out.print("ksBeş.topla(beş) = " + ksBeş.topla(beş));
1 Tutacağın türü: KesirliSayı =⇒ KesirliSayı sınıfında
listelenmiş iletilere izin verilebilir ve topla(KesirliSayı)
olarak ele alınabilen topla(Tamsayı) bu iletilerden birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
out.print("ksBeş.topla(beş) = " + ksBeş.topla(beş));
1 Tutacağın türü: KesirliSayı =⇒ KesirliSayı sınıfında
listelenmiş iletilere izin verilebilir ve topla(KesirliSayı)
olarak ele alınabilen topla(Tamsayı) bu iletilerden birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
3 Tamsayı sınıfı topla(KesirliSayı) imzalı bir gerçekleştirim
içeriyor. Bu metot çağrılacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
out.print("ksBeş.topla(ksBeş) = " + ksBeş.topla(ksBeş));
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
out.print("ksBeş.topla(ksBeş) = " + ksBeş.topla(ksBeş));
1 Tutacağın türü: KesirliSayı =⇒ KesirliSayı sınıfında
listelenmiş iletilere izin verilebilir ve topla(KesirliSayı) bu
iletilerden birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
out.print("ksBeş.topla(ksBeş) = " + ksBeş.topla(ksBeş));
1 Tutacağın türü: KesirliSayı =⇒ KesirliSayı sınıfında
listelenmiş iletilere izin verilebilir ve topla(KesirliSayı) bu
iletilerden birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
3 Tamsayı sınıfı topla(KesirliSayı) imzalı bir gerçekleştirim
içeriyor. Bu metot çağrılacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
out.println("beş.topla(ksBeş) = " + beş.topla(ksBeş));
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
out.println("beş.topla(ksBeş) = " + beş.topla(ksBeş));
1 Tutacağın türü: Tamsayı =⇒ Tamsayı sınıfında listelenmiş
iletilere izin verilebilir ve topla(KesirliSayı) bu iletilerden
birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
out.println("beş.topla(ksBeş) = " + beş.topla(ksBeş));
1 Tutacağın türü: Tamsayı =⇒ Tamsayı sınıfında listelenmiş
iletilere izin verilebilir ve topla(KesirliSayı) bu iletilerden
birisi.
2 Nesnenin türü: Tamsayı =⇒ Çağrılacak metot Tamsayı sınıfı
içinde aranmaya başlanacak.
3 Tamsayı sınıfı topla(KesirliSayı) imzalı bir gerçekleştirim
içeriyor. Bu metot çağrılacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
KesirliSayı üç = new KesirliSayı(3);
out.print("üç.topla(ksBeş) = " + üç.topla(ksBeş));
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
KesirliSayı üç = new KesirliSayı(3);
out.print("üç.topla(ksBeş) = " + üç.topla(ksBeş));
1 Tutacağın türü: KesirliSayı =⇒ KesirliSayı sınıfında
listelenmiş iletilere izin verilebilir ve topla(KesirliSayı) bu
iletilerden birisi.
2 Nesnenin türü: KesirliSayı =⇒ Çağrılacak metot
KesirliSayı sınıfı içinde aranmaya başlanacak.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Ayrıksı Durumlar
Kalıtlama-Üstsınıf
Kalıtlama-Altsınıf
Sınıf Başlığı
Kaynak Kod
Dinamik İletim
Dinamik İletim
Örnekler
Tamsayı beş = new Tamsayı(5);
KesirliSayı ksBeş = beş;
KesirliSayı üç = new KesirliSayı(3);
out.print("üç.topla(ksBeş) = " + üç.topla(ksBeş));
1 Tutacağın türü: KesirliSayı =⇒ KesirliSayı sınıfında
listelenmiş iletilere izin verilebilir ve topla(KesirliSayı) bu
iletilerden birisi.
2 Nesnenin türü: KesirliSayı =⇒ Çağrılacak metot
KesirliSayı sınıfı içinde aranmaya başlanacak.
3 KesirliSayı sınıfı topla(KesirliSayı) imzalı bir
gerçekleştirim içeriyor. Bu metot çağrılacak.
Tevfik AKTUĞLU Java Programlama Dili

More Related Content

Viewers also liked

Second lifeexploringweek1ppt
Second lifeexploringweek1pptSecond lifeexploringweek1ppt
Second lifeexploringweek1pptharringtonbelinda
 
The Thirteen Colonies
The Thirteen ColoniesThe Thirteen Colonies
The Thirteen ColoniesBlue_Wonder95
 
The Thirteen Colonies
The Thirteen ColoniesThe Thirteen Colonies
The Thirteen ColoniesBlue_Wonder95
 
Moodlen aktiviteetit ja aineistot
Moodlen aktiviteetit ja aineistotMoodlen aktiviteetit ja aineistot
Moodlen aktiviteetit ja aineistotKirsiViitanen
 
006 Uml Modelleri Gereksinimler [120 Slides]
006 Uml Modelleri Gereksinimler [120 Slides]006 Uml Modelleri Gereksinimler [120 Slides]
006 Uml Modelleri Gereksinimler [120 Slides]Erol Bozkurt
 
Piotr Sut CV
Piotr Sut CVPiotr Sut CV
Piotr Sut CVPiotr Sut
 
Project Efiase Presentation
Project Efiase PresentationProject Efiase Presentation
Project Efiase Presentationproject_efiase
 
Educational technology objectives
Educational technology objectivesEducational technology objectives
Educational technology objectivesharringtonbelinda
 
BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)
BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)
BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)Phil Bautista
 
Sulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatu
Sulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatuSulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatu
Sulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatuKirsiViitanen
 
005 Alternatif Yazilim Surecleri [99 Slides]
005 Alternatif Yazilim Surecleri [99 Slides]005 Alternatif Yazilim Surecleri [99 Slides]
005 Alternatif Yazilim Surecleri [99 Slides]Erol Bozkurt
 
003 Uml Semalari [94 Slides]
003 Uml Semalari [94 Slides]003 Uml Semalari [94 Slides]
003 Uml Semalari [94 Slides]Erol Bozkurt
 
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]Erol Bozkurt
 
Git Sürüm Takip Sistemi
Git Sürüm Takip SistemiGit Sürüm Takip Sistemi
Git Sürüm Takip Sistemiözge Barbaros
 
Windows 8 Line of Business Applications
Windows 8 Line of Business ApplicationsWindows 8 Line of Business Applications
Windows 8 Line of Business ApplicationsNuri Cankaya
 

Viewers also liked (20)

Second lifeexploringweek1ppt
Second lifeexploringweek1pptSecond lifeexploringweek1ppt
Second lifeexploringweek1ppt
 
The Thirteen Colonies
The Thirteen ColoniesThe Thirteen Colonies
The Thirteen Colonies
 
Presentation2
Presentation2Presentation2
Presentation2
 
The Thirteen Colonies
The Thirteen ColoniesThe Thirteen Colonies
The Thirteen Colonies
 
Moodlen aktiviteetit ja aineistot
Moodlen aktiviteetit ja aineistotMoodlen aktiviteetit ja aineistot
Moodlen aktiviteetit ja aineistot
 
A MAGIA DAS LANTERNAS
A MAGIA DAS LANTERNASA MAGIA DAS LANTERNAS
A MAGIA DAS LANTERNAS
 
Causes of civil war
Causes of civil warCauses of civil war
Causes of civil war
 
006 Uml Modelleri Gereksinimler [120 Slides]
006 Uml Modelleri Gereksinimler [120 Slides]006 Uml Modelleri Gereksinimler [120 Slides]
006 Uml Modelleri Gereksinimler [120 Slides]
 
Piotr Sut CV
Piotr Sut CVPiotr Sut CV
Piotr Sut CV
 
Project Efiase Presentation
Project Efiase PresentationProject Efiase Presentation
Project Efiase Presentation
 
Educational technology objectives
Educational technology objectivesEducational technology objectives
Educational technology objectives
 
Class Diagram
Class DiagramClass Diagram
Class Diagram
 
BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)
BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)
BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)
 
Sulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatu
Sulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatuSulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatu
Sulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatu
 
005 Alternatif Yazilim Surecleri [99 Slides]
005 Alternatif Yazilim Surecleri [99 Slides]005 Alternatif Yazilim Surecleri [99 Slides]
005 Alternatif Yazilim Surecleri [99 Slides]
 
003 Uml Semalari [94 Slides]
003 Uml Semalari [94 Slides]003 Uml Semalari [94 Slides]
003 Uml Semalari [94 Slides]
 
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
007 Uml Modelleri Analiz Ve Tasarim [74 Slides]
 
Git Sürüm Takip Sistemi
Git Sürüm Takip SistemiGit Sürüm Takip Sistemi
Git Sürüm Takip Sistemi
 
Windows 8 Line of Business Applications
Windows 8 Line of Business ApplicationsWindows 8 Line of Business Applications
Windows 8 Line of Business Applications
 
Rfid 3.hafta
Rfid 3.haftaRfid 3.hafta
Rfid 3.hafta
 

Ayrıksı Durumlar ve Kalıtlama