06.03.2015 Views

Java Kitabı

JAva`nın çalışma mantığıyla başlayıp basitten gelişmişe iyi bir kaynak

JAva`nın çalışma mantığıyla başlayıp basitten gelişmişe iyi bir kaynak

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

tarafından bu yordam kesin kes iptal edilmek (override) zorundadır. BaĢtan açıklarsak, eğer bir sınıfın<br />

içerisinde soyut (abstract) bir yordam varsa o zaman bu sınıf da soyut (abstract) olmak zorundadır. Fakat<br />

soyut olan sınıfların içerisinde normal yordamlarda bulunabilir aynı zamIste() yordamının Calisan<br />

sınıfının içerisinde bulunduğu gibi. ()<br />

Calisan sınıfından türeyen diğer sınıfları incelenirse, bu sınıfların hepsinin, calis() yordamını iptal<br />

ettikleri (override) görülür ama aynı zamanda zamIste() yordamı sadece Programci sınıfının içerisinde<br />

iptal edilmiĢtir (override). Eğer ana sınıfın içerisindeki bir yordamın türemiĢ sınıflar içerisinde iptal<br />

edilmeleri (override) Ģansa bırakılmak istenmiyorsa; o zaman bu yordamın soyut olarak tanımlanması<br />

gerekir. ()<br />

Dikkat edilmesi gereken bir baĢka nokta, soyut sınıfların direk olarak new() ile oluĢturulamıyor olmasıdır.<br />

Soyut sınıf demek birleĢtirici rol oynayan sınıf demektir. AbIsYeri.java uygulamasındaki sınıflara ait UML<br />

diyagramı aĢağıdaki gibidir; ()<br />

Şekil-6.4. AbIsYeri.java uygulamasında kullanılan sınıflar<br />

UML diyagramından daha net bir biçimde görmekteyiz ki türemiĢ sınıflar, ana sınıfa ait calis()<br />

yordamını iptal etmek (override) zorunda bırakılmıĢlardır. Fakat zamIste() yordamı ise sadece Calisan<br />

sınıfından türemiĢ olan Programci sınıfı içerisinde iptal edilmiĢtir (override). ()<br />

6.6.1. Niye Soyut Sınıf ve Yordamlara İhtiyaç Duyarız?<br />

Örneğin hem cep telefonunun ekranına hem de monitörün ekranına çizgi çizdirmek istiyoruz fakat cep<br />

telefonu ekranının özellikleri ile monitör ekranının özelliklerinin birbirinden tamamen farklı olması,<br />

karĢımızda büyük bir problemdir. Bu iki ekrana çizgi çizdirmek için değiĢik sınıflara ihtiyaç duyulacağı<br />

kesindir. Peki nasıl bir yazılım tasarımı yapılmalıdır. ()<br />

Örnek: CizimProgrami.java ()<br />

abstract class Cizim {<br />

// soyut yordam<br />

public abstract void noktaCiz(int x , int y) ;<br />

// soyut olmayan yordam<br />

150

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!