Merhaba,

Github'ta rastladığım bir projede şöyle bir kod satırına rastladım.Sınıf isminden sonra iki adet fonksiyon çağrılıyor.Kendim denediğimde böyle birşey mümkün olmuyor.Okuduğum kitaplarda böyle bir ifadeye rastlamamıştım.İnternette başka açık kaynak projelerde de rastladım. Ne anlama geliyor bilmiyorum. Mantığını açıklayabilir misiniz?

image = Toolkit.getDefaultToolkit().getImage(imagefile);

soruldu: 26 Eki '14, 14:57

ugurcanlacin's gravatar image

ugurcanlacin
816101625
cevap kabul oranı: 11%

değiştirildi: 26 Eki '14, 14:58


Merhaba

"Fluent Api" veya "Fluent interface" tekniği diye araştırma yapabilir, aşağıda ki linklere gözatabilirsiniz.

In software engineering, a fluent interface (as first coined by Eric Evans and Martin Fowler) is an implementation of an object oriented API that aims to provide for more readable code.

http://en.wikipedia.org/wiki/Fluent_interface

wikipedia sayfasında ki örnekler de görüleceği üzere sadece java ya has bir yazım tarzı değildir. Diğer programlama dillerin de de uygulanabilinir.

http://martinfowler.com/bliki/FluentInterface.html

http://www.pratikprogramci.com/2014/04/14/kodun-okunabilirlik-seviyesi-nasil-artilir/

https://www.youtube.com/watch?v=lVgz-DeTJhM

https://www.youtube.com/watch?v=m63k7UOMweA

http://www.buraksenyurt.com/post/Fluent-Interface-Nedir.aspx

Kolay gelsin.

permanent link

cevaplandı: 27 Eki '14, 08:26

ismailkocacan's gravatar image

ismailkocacan
2.4k31733
cevap kabul oranı: 13%

değiştirildi: 27 Eki '14, 08:34

1

Ayrıntılı cevabınız için teşekkürler. İnceliyorum hepsini.

(28 Eki '14, 05:29) ugurcanlacin ugurcanlacin's gravatar image

Misal senin bir tane Kare adında bir sınıfın var ve bu sınıfındada çevreyiHesapla(int kenarUzunlugu) diye bir metodu(fonksiyonu) olsun. Sen main classa gelip:

int kareninCevresi = new Kare().cevreyiHesapla(5);

demenle aşağıdaki yazım aynıdır:

Kare kare1 = new Kare();

int kareninCevresi = kare1.cevreyiHesapla(5);

Seninkinin olayıda şöyle:

Toolkit toolkit = Toolkit.getDefaultToolki();

image = toolkit.getImage(imageFile);

Yukarıdaki tanımlama ile bu tanımlanamanın :

image = Toolkit.getDefaultToolkit().getImage(imagefile);

farkı daha tek kod sataırında işi halletmiş.

permanent link

cevaplandı: 26 Eki '14, 15:10

serkanerip's gravatar image

serkanerip
101345
cevap kabul oranı: 0%

Sorumu düzgün yöneltememişim sanırım. Tek satırda işi halletmiş olmasını anlıyorum. Benim merak ettiğim şey şu; Ben bu yapıyı kullanmak istediğimde, aynı şekilde bir sınıftan fonksiyonları art arda çağıramıyorum. Art arda bu şekilde çağırabilmek için sınıfın içinde nasıl bir kod yazmam gerekiyor.

(26 Eki '14, 15:18) ugurcanlacin ugurcanlacin's gravatar image
1

Return'leri kullanacaksın dönüş tipi olarak.Misal return string,int,List ve ya bir class'ı return ettirerek böyle onların içindeki özellikleri kullanabilirsiniz.

(26 Eki '14, 15:22) serkanerip serkanerip's gravatar image

Aradığım cevap buydu.Denedim ve anladım. Teşekkür ederim.

(26 Eki '14, 16:52) ugurcanlacin ugurcanlacin's gravatar image
4

@ugurcanlacin Builder tasarim sablonu (design pattern) kullanimina bakarsan bur tur class'larin yapisini daha iyi anlayabilirsin.

(26 Eki '14, 19:00) CemIkta ♦ CemIkta's gravatar image

Static method kullanmalısın.

(27 Eki '14, 03:58) kodmanyagha kodmanyagha's gravatar image
3

builder pattern ve fluent api'ye dair blog yazıma bakabilirsin :] http://gturedi.blogspot.com.tr/2014/04/cok-parametre-alan-metotlar-ve-builder.html

(27 Eki '14, 12:32) gturedi gturedi's gravatar image

@CemIkta hocam teşekkür ederim.Araştıracağım dediğiniz şablonu.

@gturedi inceliyorum, teşekkürler.

(28 Eki '14, 05:27) ugurcanlacin ugurcanlacin's gravatar image
7 yorumdan 5 tanesi gösteriliyor hepsini göster
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,077
×1

Soruldu: 26 Eki '14, 14:57

Görüntüleme: 980 kez

Son güncelleme: 28 Eki '14, 05:29

powered by BitNami OSQA