java etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
java etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

20 Aralık 2014 Cumartesi

Expression Evaluator



Bu ödevde gelen infix bir string ifadeyi postfix gösterimine çevirme, postfix notasyonunun değerini bulma, postfix notasyonunu ağaç yapısına çevirme ve ağaç yapısını dolaşarak postfix notasyonunun değerini bulmayı yapmamız istendi. Kodlara github üzerinden ulaşabilirsiniz: ExpressionEvaluator

//In this homework, we are asked to convert infix notation to postfix notation, also we have to evaluate and put it into tree structure. Finally traverse tree by postorder traversal. You can reach the code via github : ExpressionEvaluator






8 Temmuz 2014 Salı

Jar Dosyasına İçerik Ekleme


Bu yazımda jar dosyasına içerik eklemeden bahsedeceğim. Önceleri belli bir konumda bulunan içerikleri jar dosyama ekleyebiliyordum veya direk jar dosyasının yanına koyuyordum ama her dosyayı böyle taşımak zor oluyordu. Daha sonra araştırınca direk jar dosyasına gömebilmeyi öğrendim. Şu şekilde içeriklerimizi jar dosyasına gömebiliyoruz;

Öncelikle dosyalarımız için kaynak klasörü oluşturmalıyız. Resimler için ayrı ses dosyaları için ayrı dosyalar oluşturabiliriz. Ben bu örneğimde sadece resim dosyaları kullanacağım için bir tane klasör oluşturacağım. Bu açıklamalardan sonra gelelim nasıl yapılacağına;

İlk olarak projemize sağ tıklayarak yeni bir kaynak klasörü (source folder) oluşturuyoruz


 


Daha sonra klasör oluşturma penceresi çıkacak;


Ben images isimi verdim. Siz herhangi bir ad verebilirsiniz. Daha sonra finish butonuna tıklayalım.

Klasörümüz geldi. Şimdi resimlerimizi sürükleyerek images klasörünün üstüne getiriyoruz.


Böyle bir pencere geliyor bir şeyi değiştirmeden tamam diyoruz ve dosyalarımız eklenmiş oluyor. Artık sıra geldi dosyaları nasıl kullanacağımıza.

Resimlerimizi direkt olarak kullanamıyoruz. Kullanmak için ClassLoader objesine ihtiyacımız var.  


Buradan sonra istediğiniz yerde direkt image/icon vs.  obje adı vererek kullanabilirsiniz.

17 Mayıs 2014 Cumartesi

Dosya İşlemleri

Bu yazımda dosya işlemleri ve kullanımları hakkında biraz bahsedeceğim.

Öncelikle dosya işlemleri bir programcı için çok önemli. En basitinden oluşan hatayı kaydedip daha sonra tekrar bakabilme olanağı sağlıyor. Örneğin Firefox çöktüğünde çökme raporunu kaydedip daha sonra siz isterseniz o raporu programcılara yolluyor ve böylece programcılar hatayı görüp düzeltebilme olanağına kavuşuyor.

Örnekler sanki bir program yazıyormuş ve hata alınca log dosyası oluşuyormuş gibi olacak ve böylece yararını daha iyi göreceğiz.

1) Dosya Yazma:


2) Dosya Okuma:




6 Mayıs 2014 Salı

Try-Catch Kullanımı

 


Exception Handling (Hata çözümlenmesi):

Programlamada hatalar kaçınılmaz, ufak bir kod yazarken bile hata alma olasılığı oldukça yüksek. Biz hataları ne kadar düzeltmeye çalışsak da son kullanıcının kullanımını bilmediğimiz için çoğunlukla gözümüzden kaçan noktalar oluyor.  Bu yazıda çalışma zamanı hatalarını(exception, error ile karıştırılmamalı) ve onları çözümlemenin yolunu anlatacağım.

Öncelikle birkaç terimi açıklamalıyım;
 1) Exception: Beklenmeyen hatalara(istisna) verilen isimdir. Errordan farkı ise bu hataları tahmin edip, yakalayıp o hatalarla karşılaştığınızda ne yapacağınızı belirleyebilmenizdir. Error durumunda ise durumu tahmin edip onu yönetemezsiniz.

2) Error:  Bu hata JVM(Java Virtual Machine) seviyesindedir. Kontrol edilmez çünkü bu uygulama seviyesinde bir hata değildir. Örneğin  OutOfMemoryError hatası(hafıza bitimi) oluştuğunda programın yapabileceği bir şey yoktur. Yani bu hatalar oluştuğunda programın kapatılması gerekir.

3) Catching: Oluşan istisnayı yakalayıp oluşan sorunu çözme adına yapılan işlemlerdir

4) Throwing: Oluşan exception durumunda exception objesi oluşturulup programa fırlatılma işlemidir.

5) Catch Block:  Oluşan exceptionda ne yapılacağı yazılan bloklardır. { //do something  }

Kullanım Talimatları:
* Programda exception(istisna) oluşturabilecek yerleri  try bloğuna alınır. Gereksiz yere tüm kodu try bloğuna almamalıyız çünkü bu boş yere performans kaybı yaşatır. Bunun yerine if bloklarını tercih etmeliyiz.
* Oluşabilecek hataları ön görüp onlara göre catch blokları yazılır. Her catch bloğu yakalayabileceği istisnayı belirler ve ona göre işlem yapar.
* Eğer istisna oluşsa da oluşmasa da belirlediğiniz bir kod parçasının çalışmasını istiyorsanız o kodu
finally bloğuna almalısınız.

1) Try Bloğu: Programımızda hata çıkabilecek olan yerleri içinde barındır bloktur. Eğer bir istisna oluşursa istisna objesi oluşturup fırlatır.

2) Catch Bloğu: Yaşanan istisnalarda ne yapılacağını belirleyen blok/bloklardır. Fırlatılan objeye uygun olan catch bloğu objeyi yakalar ve sorunu çözmek için programcının yazdığı kodları işlemeye başlar.

3) Finally Bloğu: Kodunuzda istisna oluşsa da oluşmasa da çalıştırılacak olan kod bloğudur.
Finally bloğuna gerek olmadığını düşünebiliriz çünkü catchin altına ne yazarsak yazalım çalışıyor. Fakat bazı yerlerde gerek var örneğin  catch ifadesinde bir şeyi  return edersem o zaman alttaki ifadeye geçmez fakat finally kullanırsam return etsem dahi finally çalışır. Yani ne olursa olsun finally bloğu çalışır!

-Oluşan hatalar nedir?
Öncelikle hataların hiyerarşik yapısını anlayalım;


Aslında hatalar  Checked ve Unchecked Exception olarak ikiye ayrılıyor.

Error ve RuntimeException  unchecked exception, diğer kısım ise checked exception olarak adlandırılır. Java Unchecked exception'ı handle etmeye zorlamıyor fakat checked exceptionları handle etmeye zorluyor. Eğer handle etmezsek kodu derlemiyor.

Hataları açıklarsak;
+ArithmeticException: Matematiksel hatalar. örneğin 0 a bölünememe durumu gibi.
+ArrayIndexOutOfBoundsException: Dizinin olmayan bir indisine erişme durumunda ortaya çıkan hata.
+NullPointerException: Olmayan bir şeyi işaret ettiğimizde çıkar. Örneğin  int a; demeden if(a==5) dersek bu hatayı alırız. 
+ClassCastException: Bir objeyi illegal bir şekilde cast edersek bu hatayı alırız.(Downcasting)
+ IOException: Örneğin diskten bir metin belgesinin ilk satırını okuyan bir programımız var. Ama okuyacağımız dosya ya diskte yoksa ya da ilk satırı yoksa? İşte bu hata o zaman karşımıza çıkar

Konu bu kadar, örnek vererek pekiştirelim.

 ArithmeticException örneği;


 Eğer bunu try-catch yapısı ile yakalamasaydık şöyle bir hata alacaktık;


Daha önce de belirttiğim gibi bu kadar ufak şeyler için try-catch yapısını kullanmaya gerek yok, bunun yerine if bloğunu kullanarak bölenin 0 olup olmama durumunu kontrol etmeliyiz.

ArrayBoundsOfException örneği;
Try-Catch kullanmadan önceki hali:



Try-Catch kullandıktan sonra;



4 Mayıs 2014 Pazar

2.Dönem 4.Ödev

Room Constructor;




Flat Constructor;
 
Maksimum Alan;