Java sınıf deklarasyonu

Başlatan Klein, 12 Şubat 2014, 12:31:50

Klein

Java- Android - Eclipse şeytan üçgeni içinde sıyırmak üzereyim.
Bir android programı yazmaya çalışıyorum. Ancak Örneklerin tamamında, tüm fonksiyonlar  sınıfın bloğunun içerisinde.
Bu yazım tarzı kafamı çok karıştırıyor. program biraz uzayınca  kimin parantezi nerede onu bile ayırt edemiyorum.

Java'da  sınıfın üye fonksiyonları  blok dışında yazılabilyor mu? yazılabiliyorsa nasıl?

Tagli

Sen bir de önce Java öğrenip sonra C++ kodu görünce "Nasıl yani? Üye fonksiyonlarını ayrı bir yere mi yazıyoruz? Neden ki?" tepkisi veren insanları düşün (mesela ben) :)

Hatırladığım kadarıyla başka yolu yok. Bence ayrı bir header dosyasının olmaması ve genelde bir dosyada tek sınıf olması, kodu daha anlaşılır yapıyor. Indentation kurallarına dikkat edilirse parantezler pek kafa karıştırmıyor. En kafa karıştıran şeyler isimsiz (anonymous) sınıflar bence. Satır arasında tanımlanıp tek sefer kullanılıyorlar. Event handler'lar genelde bunlarla yapılıyor.

Android programlama hakkında bir bilgim yok. Yazdıklarımı, pek de taze olmayan normal Java bilgime dayanarak yazdım.

Bu arada, konu parantezlerden açılmışken, Lisp'i anmadan edemeyeceğim. Dili bilmiyorum ama sırf meraktan açık kaynaklı bir Lisp projesini indirip bakayım dedim (galiba maxima'ya bakmıştım). Tam anlamıyla mide bulandırıcı. Kodun yarısından çoğu parantezden oluşuyor gibi.
Gökçe Tağlıoğlu

SpeedyX

#2
EDIT:
Soruyu yanlış anlamışım :S
Aşağıdakileri yine de silmiyorum, kalsın.

OnCreate : ornek_obje.setOnCompletionListener(onCompletion);

Ayrı olarak;
@Override
    public void onCompletion(sınıf arg0) {
        //TODO
    }


diğeri ise:
ornek_obje.OnErrorListener onErrorListener = new ornek_obje.OnErrorListener()   
                {  
                     @Override  
                     public boolean onError(sınıf x, int what, int extra)   
                     {  
                          Log.e(getPackageName(), String.format("Error(%s%s)", what, extra));  
                          return false;  
                     }  
                };