Ankara
0 (312) 276 75 93
info@billgatesweb.com

Java Koleksiyon Kullanımı – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları

Web Danışmanlık Hizmeti, Seo Hizmeti Al, Mobile Uygulama Yaptır, Back Link Satın Al, Blog Yazdırmak İstiyorum, Makale YAZDIRMA siteleri, Parayla makale YAZDIRMA, Seo makale fiyatları, Sayfa başı yazı yazma ücreti, İngilizce makale yazdırma, Akademik makale YAZDIRMA, Makale Fiyatları 2022, Makale yazma, Blog Yazdırma

Java Koleksiyon Kullanımı – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları

Programlama Kısıtlamaları – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları

Java Koleksiyon Kullanımı

AddAll yönteminin geçersiz kılınmasını ortadan kaldırarak alt sınıfı “düzeltebiliriz”. Ortaya çıkan sınıf işe yarayacak olsa da, HashSet’in addAll yönteminin add yönteminin üzerine uygulanması gerçeğine bağlı olarak düzgün işlevine bağlı olacaktır.

Bu “kendi kendine kullanım”, bir uygulama ayrıntısıdır, Java platformunun tüm uygulamalarında tutulacağı garanti edilmez ve sürümden sürüme değişebilir. Bu nedenle, ortaya çıkan InstrumentedHashSet sınıfı kırılgan olacaktır.

Belirtilen koleksiyon üzerinde yineleme yapmak için addAll yöntemini geçersiz kılmak ve her öğe için add yöntemini bir kez çağırmak biraz daha iyi olurdu. HashSet’in addAll uygulaması artık çağrılmayacağından, bu, HashSet’in addAll yönteminin add yönteminin üzerine uygulanıp uygulanmadığını garanti eder.

Ancak bu teknik tüm sorunlarımızı çözmez. Zor, zaman alıcı ve hataya açık olan, kendi kendine kullanımla sonuçlanabilecek veya gelmeyebilecek üst sınıf yöntemlerinin yeniden uygulanması anlamına gelir. Ek olarak, bazı yöntemler, alt sınıfa erişilemeyen özel alanlara erişim olmadan uygulanamayacağından, her zaman mümkün değildir.

Alt sınıflardaki kırılganlığın ilgili bir nedeni, üst sınıflarının sonraki sürümlerde yeni yöntemler edinebilmesidir. Bir programın güvenliğinin, bir koleksiyona eklenen tüm öğelerin bir yüklemi sağlamasına bağlı olduğunu varsayalım.

Bu, koleksiyonu alt sınıflara ayırarak ve öğeyi eklemeden önce yüklemin karşılandığından emin olmak için bir öğe ekleyebilen her yöntemi geçersiz kılarak garanti edilebilir. Bu, sonraki bir sürümde üst sınıfa öğe ekleyebilen yeni bir yöntem eklenene kadar sorunsuz çalışır.

Bu gerçekleştiğinde, yalnızca alt sınıfta geçersiz kılınmayan yeni yöntemi çağırarak alt sınıfın bir örneğine “illegal” bir öğe eklemek mümkün hale gelir. Bu tamamen teorik bir problem değildir. Hashtable ve Vector, Collections Framework’e katılmak için yeniden donatıldığında, bu nitelikteki birkaç güvenlik açığının düzeltilmesi gerekiyordu.

Yukarıdaki sorunların her ikisi de geçersiz kılma yöntemlerinden kaynaklanmaktadır. Yalnızca yeni yöntemler eklerseniz ve mevcut yöntemleri geçersiz kılmaktan kaçınırsanız, bir sınıfı genişletmenin güvenli olduğunu düşünebilirsiniz. Bu tür bir uzantı çok daha güvenli olsa da, risksiz değildir.

Üst sınıf sonraki bir sürümde yeni bir yöntem edinirse ve alt sınıfa aynı imzaya ve farklı bir dönüş türüne sahip bir yöntem verme şansınız varsa, alt sınıfınız artık derlenmeyecektir.

Alt sınıfa, yeni üst sınıf yöntemiyle tamamen aynı imzaya sahip bir yöntem verdiyseniz, şimdi onu geçersiz kılıyorsunuz, yani yukarıda açıklanan iki soruna tabisiniz. Ayrıca, alt sınıf yöntemini yazdığınızda bu sözleşme henüz yazılmamış olduğundan, yönteminizin yeni üst sınıf yönteminin sözleşmesini yerine getireceği şüphelidir.


Java Collection Nedir
Java Collections example
Java Collections Framework Nedir
Java Map kullanımı
Java Collections import
HashSet Java Collection
Java List ve Set arasındaki fark
Java Iterator


Neyse ki, daha önce açıklanan tüm sorunlardan kaçınmanın bir yolu var. Mevcut bir sınıfı genişletmek yerine, yeni sınıfınıza mevcut sınıfın bir örneğine başvuran özel bir alan verin. Bu tasarıma kompozisyon denir çünkü mevcut sınıf yenisinin bir bileşeni haline gelir.

Yeni sınıftaki her örnek yöntemi, mevcut sınıfın kapsanan örneğinde karşılık gelen yöntemi çağırır ve sonuçları döndürür. Bu, iletme olarak bilinir ve yeni sınıftaki yöntemler, iletme yöntemleri olarak bilinir.

Ortaya çıkan sınıf, mevcut sınıfın uygulama ayrıntılarına hiçbir bağımlılık olmaksızın kaya gibi sağlam olacaktır. Varolan sınıfa yeni yöntemler eklemek bile yeni sınıf üzerinde hiçbir etkiye sahip olmayacaktır. Bunu somut hale getirmek için, kompozisyon/iletme yaklaşımını kullanan InstrumentedHashSet’in yerine bir tane var.

InstrumentedSet sınıfının tasarımı, HashSet sınıfının işlevselliğini yakalayan Set arabiriminin varlığıyla etkinleştirilir. Sağlam olmasının yanı sıra, bu tasarım son derece esnektir. InstrumentedSet sınıfı, Set arabirimini uygular ve bağımsız değişkeni de Set türünde olan tek bir kurucuya sahiptir.

Temelde sınıf, enstrümantasyon işlevselliği ekleyerek bir Set’i diğerine dönüştürür. Yalnızca tek bir somut sınıf için çalışan ve üst sınıfta desteklenen her bir kurucu için ayrı bir kurucu gerektiren kalıtım tabanlı yaklaşımın aksine, sarmalayıcı sınıf herhangi bir Set uygulamasını enstrümantal etmek için kullanılabilir ve önceden var olan herhangi bir kurucu ile birlikte çalışır.

InstrumentedSet sınıfı, her InstrumentedSet örneği başka bir Set örneğini sardığından sarmalayıcı sınıf olarak bilinir. Bu aynı zamanda Dekoratör deseni olarak da bilinir, çünkü InstrumentedSet sınıfı enstrümantasyon ekleyerek bir seti “süsler”. Bazen birleştirme ve iletme kombinasyonuna yanlışlıkla yetkilendirme denir. Teknik olarak, sarmalayıcı nesne kendisini sarılmış nesneye iletmedikçe, bu delegasyon değildir.

Sarıcı sınıfların dezavantajları azdır. Bir uyarı, sarmalayıcı sınıfların, nesnelerin daha sonraki çağrılar (“geri aramalar”) için diğer nesnelere kendi referanslarını ilettiği geri arama çerçevelerinde kullanım için uygun olmamasıdır. Sarılmış nesne sarmalayıcısını bilmediğinden, kendisine bir başvuru (bu) iletir ve geri aramalar sarmalayıcıdan kaçar.

Bu, SELF sorunu olarak bilinir. Bazı insanlar, iletme yöntemi çağrılarının performans etkisinden veya sarmalayıcı nesnelerin bellek ayak izi etkisinden endişe duyar. Bunların hiçbiri pratikte çok fazla etkiye sahip değil. İletim yöntemlerini yazmak biraz sıkıcıdır, ancak yalnızca bir kurucu yazmanız gerektiği gerçeğiyle bu sıkıntı kısmen dengelenir.

Kalıtım, yalnızca alt sınıfın gerçekten üst sınıfın bir alt türü olduğu durumlarda uygundur. Başka bir deyişle, iki sınıf arasında bir “is-a” ilişkisi varsa, bir B sınıfı yalnızca A sınıfını genişletmelidir.

B sınıfının A sınıfını genişletmesi cazip geliyorsa, kendinize şu soruyu sorun: “Her B gerçekten bir A mıdır?” Bu soruya doğru bir şekilde evet yanıtı veremiyorsanız, B, A’yı genişletmemelidir. Yanıt hayır ise, genellikle B’nin özel bir A örneği içermesi ve daha küçük ve daha basit bir API ortaya koyması gerekir.


Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır. 

1) Backlink Paketi  50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)


 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

× Bize Whatsapp'tan Ulaşın