Yazılım geliştirirken var olan bir nesneyi kullanmak, işlevsel olarak aynı işi yapan yeni bir nesne yaratmaktan genellikle daha faydalıdır. Nesnelerin yeniden kullanımı hem uygulamayı hızlandıracak hem de daha okunabilir bir kod yazmanızı sağlayacaktır. Eğer bir nesne değiştirilemez (immutable) ise, o nesne her zaman yeniden kullanılabilir. Aşağıdaki kod gereksiz nesne yaratılmasına…
4 CommentsCategory: Java
Daha önce birinci maddesini işlediğimiz Effective Java kitabının ikinci maddesiyle devam ediyoruz.
Sınıf yapıcılar (constructor) ve statik fabrika metotlarının (static factory methods) paylaştığı ortak bir kısıt vardır: çok sayıda parametre geçmeniz gerektiği zaman kullanışsız bir duruma gelirler. Örneğin, paket gıdaların üzerinde yer alan ve besin değerlerini gösteren bir etiketi Java’da bir sınıf kullanarak ifade etmeye çalıştığımızı düşünelim. Bu etiketin üzerinde kalori, kolesterol, protein, karbonhidrat, yağ, doğmamış yağ, kalsiyum, demir ve daha birçok besin türü görürüz. Ancak besinlerin bir çoğu için bu değerlerin büyük bir kısmı opsiyonel olacaktır, yani bu alanlara hiçbir atama yapmamıza gerek olmayacaktır.
Böyle bir sınıf yazmamız gerektiği zaman nasıl bir sınıf yapıcı veya statik fabrika metodu kullanırız? Genelde yazılımcıların aklına gelen ilk yöntem iç içe geçmiş yapıcı metotlar (telescobing constructors) kullanmak olur, yani sadece zorunlu parametreleri içeren bir yapıcı metot, ardından zorunlu parametreleri ve sadece bir opsiyonel parametre içeren başka bir yapıcı metot, ardından iki opsiyonel parametreli üçüncü bir yapıcı metot ve bu şekilde devam eder. Şimdi örnek kodu inceleyelim, kolaylık olması açısından sadece 2 tane zorunlu 4 tane de opsiyonel değişkenimiz olsun.
2 CommentsEffective Java kitabını duymuşsunuzdur, Joshua Bloch efsane kitabında madde madde sizlere nasıl kaliteli Java kodu yazacağınızı anlatır. Bu kitapta anlatılanlarla ilgili yüzlerce İngilizce kaynak bulmak mümkün ama ben Türkçe bir kaynak bulamayınca sizlere bu kitabı özetlemeye karar verdim. Direk kitabın tam çevirisi olmasa da kendimce eklemeler çıkarmalar yaparak ve önemli gördüğüm yerleri vurgulayarak kitaptaki bölümlerden daha kısa ama aşağı yukarı aynı şeyi anlatan yazılar paylaşacağım. Başlangıç olarak kitaptaki ilk madde olan statik fabrika metotlarıyla başlıyoruz.
Normal şartlarda bir sınıf kendisinden nesne oluşturulmasını istiyorsa public bir sınıf yapıcı (constructor) tanımlar ve diğer sınıflar bunu kullanarak nesne oluşturabilir. Ancak her yazılımcının bilmesi gereken başka bir nesne yaratma yöntemi daha var. Bu yöntemde sınıf, dönüş değeri kendi nesnesi olan statik bir fabrika metodu (static factory method) tanımlar ve bu sınıftan nesne oluşturmak isteyenler bu metodu kullanırlar.
6 CommentsYıl olmuş 2014 hala birim test makalesi mi yazıyorsun diye düşünüyor olabilirsiniz. Ancak, birim testi uzun zamandır kullanılan bir yöntem olmasına rağmen tam olarak ne işe yaradığı, neden yapıldığı ve nasıl yapılması gerektiği konusunda açıklayıcı bir Türkçe yazı bulmak malesef zor. Bu yüzden, yazılım mühendisi adaylarına ve kariyerine yeni başlayan…
Leave a CommentÇalıştığım şirkette eski de olsa Glassfish 2.1.1 sunucusu üzerinde barındırdığımız bir uygulamamız var. Bütün sistemi daha yeni ve hızlı bir ortama taşımamız gerektiğinde Glassfish uygulama sunucusu yeni donanımlar üzerine yüklendi ve gerekli ayarlamaları yapıldı. Ancak test aşamasında farkettik ki Glassfish sunucusunun yüklü olduğu makinede kullanıcı oturumunu kapattığı anda uygulama yanıt…
2 CommentsProgramlama dillerinde bir işlev, fonksiyon veya yöntem (metod) çağırırken veri geçişi için parametreler kullanılır. Java dilinde de aynı şey geçerlidir. Aşağıdaki gibi bir yöntemimiz olduğunu düşünürsek; public void maasArtir(double oran) { maas += maas * oran/100; } yukarıdaki yöntem parametre olarak double türünde bir değer almakta ve nesne değişkeni olan…
Leave a CommentJava dilinde kullanılan anahtar kelimelerden birisi de “this” kelimesidir. Kullanım alanı çok fazla olmasa da this anahtar kelimesinin ne işe yaradığını ve ne amaçlarla kullanıldığını öğrenmekte fayda var. Basit olarak söylemek gerekirse this anahtar kelimesi o anda hangi nesne üzerinde işlem yapılıyorsa o nesnenin referansını döndürür. Şimdi bu anahtar kelime ile neler yapılabileceğine bakalım.
17 CommentsJava gibi nesneye yönelik programlama dillerinde, nesneye ait alanların değerleri o nesnenin durumunu oluştururken, yazdığımız metotlar ise o nesnenin davranışını belirleyen ve nesnenin durumu üzerinde değişiklikler yapan kodlardır. Java dili bizlere bir nesnenin herhangi bir andaki durumunu bir dosyaya kaydetmemizi ve daha sonra bu dosya üzerinden nesneyi tekrar oluşturmamızı sağlayan bir mekanizma sunmaktadır. Bu mekanizmaya Serileştirme denir. Serileştirmeyi kullanarak JVM içerisindeki nesneleri sabit diske kaydedip kalıcı olmalarını sağlayabiliriz veya bir yerden başka bir yere aktarabiliriz .
Serileştirme yapılırken sınıf adı, tanımlı alanların türleri, adları ve değerleri gibi bilgiler tek tek bytelara çevrilir ve bir dosyaya kaydedilir. Daha sonra bu dosya kullanılarak aynı nesne yeniden oluşturulabilir. Serileştirme genellikle nesnelerin bir ağ üzerinden gönderilmesi amacıyla kullanılır. Serileştirme işlemi uygulanarak byte dizisi haline getirilen nesne ağ üzerinden başka bir bilgisayara gönderilir ve alıcı bilgisayar üzerinde yeniden oluşturulur. Nesnenin byte dizisine çevrilmesi işlemine “Serialization”, byte dizisi kullanılarak nesnenin yeniden oluşturulmasına ise “De-Serialization” denir. Şimdi Java dilinde serileştirmenin nasıl yapıldığına bakalım.
3 CommentsJava dilinde detayları çok iyi bilinmeyen ve belki de pek önemsenmeyen, kıyıda köşede kalmış konulardan birisi de “final” anahtar kelimesidir. Değişkenlere, metodlara ve hatta sınıflara uygulanabilen, kullanıldığı zaman çok faydalı olabilecek bu anahtar kelimenin bütün kullanım detaylarını bu yazıda açıklamaya çalışacağım.
13 Comments