Java’da interface ve soyut (abstract) sınıf kullanımı

Kas 19th, 2008 | Yazar: Özcan Acar | Kategori: Yazılım Mimarisi

Yazan: Özcan Acar

KurumsalJava.com


Java dilinde interface adını taşıyan, tasarım şablonlarında ve modellemede kullanılan sınıflar tanımlamak mümkündür. Bir interface normal bir Java sınıfından farksız bir şekilde tanımlanır. Sınıf tanımlanırken class yerine interface terimi kullanılır.

Bu yazıyı PDF olarak edinebilirsiniz.

  • Share/Bookmark

8 yorum | 3,665 kez okundu | yazdır yazdır

 
1 Yıldız2 Yıldız3 Yıldız4 Yıldız5 Yıldız (2 değerlendirme, ortalama: 5, toplam oy 5)
Loading ... Loading ...
Tags: , ,

RSS feed | Trackback URI

8 Yorum »

Yorum yapan: Yasin
2008-11-19 20:22:39

Makale için çok teşekkürler.

Makale .jsp uzantılı geliyor, bunu pdf’e dönüştürmemiz gerekiyor. Bu bir hata mı, yoksa normal mi?

 
Yorum yapan: acar
2008-11-20 09:20:18

Content-type da bir sorun olsa gerek, ben kodu tekrar kontrol edecegim.

 
Yorum yapan: osman haktan
2008-11-20 10:58:19

Yazınız için teşekkürler. Kitabınızın türkçe kaynak arayanlar için çok yardımcı olacaktır muhakkak.
Yazınızda geçen “Örneğin C++ dilinde mevcut olmayan bu yapılar, Java diline esnek yazılımlar yapılabilmesi adına büyük zenginlik katmaktadır” ibaresinin doğru olmadığı kanaatindeyim. C++ ta da içerisinde veri olmayan soyut sınıflar tanımlayıp bunları kalıtım (inheritance) yoluyla tıpkı java interface leri gibi kullanabilirsiniz (unutmayalım ki C++ çoklu kalıtımı da destekler). Kurumsal C++ uygulamalarında sık kullanılan bu tasarım kalıbı Java da anahtar isim (keyword) verilip, kullanım kuralları daha belirginleştirilmiştir. Yani “zenginlik katmaktadır” kısmını doğru bulmadım. Kullanmasını bilen için zenginlik başka yerlerde zaten vardı. Java’nın C++ a göre sağladığı çok büyük esneklikler var muhakkak ama bu onlardan biri değil.
Kitabınızdan bir bölümü bizlerle paylaştığınız için tekrar teşekkür ediyorum, umarım kitabınızın diğer bölümlerini de zaman içinde paylaşır ve öğrenmeye hevesli arkadaşlara yardımcı olmuş olursunuz.

 
Yorum yapan: acar
2008-11-20 11:27:31

Sevgili Osman, yorumun için tesekkür ederim. Ben C++ uzmanı değilim, lakin C++ daki OO konseptlerini taniyorum. C++ da tamamen soyut olan sınıflar tanımlıyarak, Java interface lere benzer yapılar oluşturmak mümkün, lakin benim kast ettigim C++ da safkan interface konseptinin olmadığıydı. Ama haklısın, cümle daha değişik ifade edilerek, C++ ve Java arasındaki farkın interface siniflar açısından altı çizilebilirdi. Yazı üzerinde gerekli değişikliği yapacağım.

 
Yorum yapan: sami dirik
2008-11-29 15:53:01

Merhaba,
Sitenizi yahoo bilgisayar grubuna attığınız mailden gördüm ve oldukça hoşuma gitti. İçerik arttıkça daha da güzel olacağına inanıyorum.
Başarılar.

 
Yorum yapan: Abdulkadir
2009-04-06 07:31:51

Selamlar
Java’da interface ve soyut (abstract) sınıf kullanımı ile ilgili makaleniz cok mutis olmustu anlasilir bir dil ve ornegin olmasi makalenizi cok mutis yapmis cok tesekurler kendinize iyi bakin hayirli gunler

 
Yorum yapan: Emre SÜREN
2009-09-21 15:34:03

Merhaba;
Dokumandaki bir ornek le ilgili bir parca bilgi aktarayim.

Orneklerde once iki tane kotu tasarimdan daha sonra composition ile nasil esnek ve kaliteli bir cozum yapilacagi anlatiliyor 16. sayfadan sonra. O bolumu kisaca buraya tasiyorum;

Ilk olarak,
Abstract class a fax metodu ekleyerek cozum sunulmus.
Bu cozumun iyi bir cozum olmadigi, fax cekme ozelligi olmayan printerlar icin de bu fax metodu kullanima erisilir oldugundan bahsedilmis.

daha sonra 2. cozum yolu olarak
Abstract class a fax metodunu eklemek yerine interface bir sinif tanimlayip cozum gosterilmis.
Bu cozumun de iyi bir cozum olmadigi, kod tekrari yapacagindan bahsedilmis.
Yani butun printerlar icin tek tek implementation yapilmasi gerekitigi aciklanmis.

Yanliz burada gozden kacan birsey var,
Ilk ornek te bile,
Printer multi = new MultiPrinter(); seklinde kullanim mumkun iken, burada mumkun degildir. Cunku fax metoduna ulasilamaz, MultiPrinter multi = new MultiPrinter(); seklinde kullanilmak zorunda. Bu daha buyuk bir problem.

Iyi calismalar.

Yorum yapan: acar
2009-09-22 09:44:49

Böyle bir örnek cast gerektiriyor, sorun ne yazik ki örnegin kendisinde yatiyor. Nasil bir cözüm uygulanabilecegi 21. sayfadan itibaren aktarilmis.

 
 
İsim (gerekli)
E-posta (gerekli - kimseye gösterilmez)
Websayfanız
Sizin yorumunuz (küçült | büyüt)
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> kullanabilirsiniz.

Trackback Listesi