Bu prensibe göre somut sınıflara olan bağımlılıklar soyut sınıflar ve interface sınıflar kullanılarak ortadan kaldırılmalıdır, çünkü somut sınıflar sık sık değişikliğe uğrarlar ve bu sınıflara bağımlı olan sınıflarında yapısal değişikliğe uğramalarına sebep olurlar. Okumaya devam et
Yazar arşivleri: Özcan Acar
Liskov Substitution Principle (LSP) – Liskov’un Yerine Geçme Prensibi
Barbara Liskov tarafından geliştirilen bu prensip kısaca şöyle açıklanabilir:
Alt sınıflardan oluşturulan nesneler üst sınıfların nesneleriyle yer değiştirdiklerinde aynı davranışı göstermek zorundadırlar.
Open Closed Principle (OCP) – Açık Kapalı Tasarım Prensibi
Yazılım disiplininde değişmeyen birşey varsa o da değişikliğin kendisidir. Birçok program müşteri gereksinimleri doğrultusunda ilk sürümden sonra değişikliğe uğrar. Bu doğal bir süreçtir ve müşteri programı kullandıkça ya yeni gereksinimlerini ya da mevcut fonksiyonlar üzerinde adaptasyonları gerekçe göstererek programın değiştirilmesini talep edecektir.
Loose Coupling (LC) – Esnek Bağ Tasarım Prensibi
Bir program bünyesinde, tanımlanan görevlerin yerine getirilebilmesi için birden fazla nesne görev alır. Bu nesneler birbirlerinin sundukları hizmetlerden faydalanarak kendi görevlerini yerine getirirler. Bu durumda nesneler arası bağımlılıklar oluşur. Bir nesne kullandığı diğer bir nesne hakkında ne kadar fazla detay bilgiye sahip ise, o nesneye olan bağımlılığı o oranda artar. Oluşan her bağımlılık bir sınıf için dolaylı olarak yapısal değiştirilme rizikosunu artırır, çünkü bağımlı olduğu sınıf üzerinde yapılan her değişiklik kendi yapısında değişikliğe neden olacaktır. Bu durum programın genel olarak kırılgan bir hale gelmesini kolaylaştıracaktır.
Single Responsibility Principle (SRP) – Tek Sorumluk Tasarım Prensibi
Resim 1 deki gibi bir sınıfa daha önce bir yerlerde rastlamışsınızdır. Bu sınıf kendisini bilgibankasına ekleme, silme, müşteriye email gönderme, login yapma (shop sistemi olabilir) ve sipariş oluşturma işlemlerini yapabilmektedir.
Chain of Responsibility Tasarım Şablonu
Chain of responsibility sorumluluk zinciri anlamına gelmektedir. Sisteme gönderilen bir istediğin (komut) hangi nesne tarafından cevaplanması gerektiğini bilmediğimiz durumlarda ya da isteği yapan nesne ve servis sağlayan nesne arasında sıkı bir bağ oluşmasını engellememiz gerektiğinde Chain of Responsibility tasarım şablonu kullanılır. Okumaya devam et
Front Controller Tasarım Şablonu
Web aplikasyonlarında Front Controller tasarım şablonu ile sisteme yöneltilen tüm istekler (request) merkezi bir yerde toplanarak işlem görürler. Okumaya devam et
Flyweight (Sinek Siklet) Tasarım Şablonu
Java dilinde yazılan programlar içinde sınıflar ve bu sınıflardan oluşturulan nesneler kullanır. Bazen aynı sınıftan yüzlerce, belki binlerce nesne oluşturup, kullanıyor olabiliriz. Bu gibi durumlarda çok nesne oluşturulduğu için sistem performansı kötüye gidebilir. Flyweight tasarım şablonu kullanılarak, kullanılan nesne adedini aşağıya çekebiliriz.
Proxy (Vekil) Tasarım Şablonu
Oluşturulmaları zaman alıcı ve sistem kaynaklarını zorlayan nesnelere vekalet eden nesnelere proxy nesneleri adı verilir. Bu nesneler vekil oldukları nesnelerin tüm metodlarına sahiptirler ve kullanıcı sınıf ile vekil olunan nesne arasında aracılık yaparlar. Vekil olan nesne, kullanıcı sınıfa, vekil olunan nesne gibi davranır ve kullanıcı sınıftan gelen tüm istekleri vekil olunan nesneye iletir. Böyle bir yapının kullanılmasının sebebi, gerek olmadığı sürece vekil olunan nesnenin oluşturulmasını engellemektir ya da vekil olunan nesneyi gizlemektir. Okumaya devam et
KurumsalJava.com Otuzbininci İndirime (Download) Koşuyor
Hizmet vermeye başladığı günden beri yazılım sektöründe Java teknolojileri ile çalışanların yoğun ilgisini çeken KurumsalJava.com’un bünyesinde barındırdığı ve KurumsalJava.com yazarları tarafından kaleme alınan makalelerin indirilme (download) adedi 30.000 e yaklaştı. Okumaya devam et
Facade (Cephe) Tasarım Şablonu
Profesyonel yazılım sistemleri birçok komponentin birleşiminden oluşur. Yazılım esnasında bir çok ekip birbirinden bağımsız, sistemin bütününü oluşturan değişik komponentler üzerinde çalışırlar. Bir komponent, belirli bir işlevi yerine getirmek için hazırlanmış bir ya da birden fazla Java sınıfından oluşmaktadır.
Embedded Jetty
JAXB ile Java-XML Mapping
JAXB (Java Xml Binding – https://jaxb.dev.java.net/) frameworkü kullanılarak Xml–>Java, Java–>Xml mapping işlemlerini gerçekleştirmek mümkündür. Bu yazılımcıya, Xml dosyalarının ihtiva ettiği verileri Java sınıflarıyla modelleme imkanı sunmakta ve verilerın işlenmesini kolaylaştırmaktadır. JAXB’nın nasıl kullanılabileceğini bir örnek üzerinde sizlere aktarmak istiyorum.
Hibernate Session Problemi: Illegal attempt to associate a collection with two open sessions
BTSoru.com projesini modellerken aşağıdaki hata ile karşılaştım:
org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
at bt.btsoru.application.manager.question.facade.QuestionManagerImpl.addQuestion(QuestionManagerImpl.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
BizimAlem.com – Java İle Yüksek Performanslı Web Platformu
11-12 Nisan 2009 tarihlerinde CETURK tarafından Kıbrıs Doğu Akdeniz Üniversitesinde düzenlenen Java Etkinlikleri Günü’nde “Java ile yüksek performanslı web platformlarının oluşturulması” başlıklı bir sunum yaptım.
Özcan Acar
Web Aplikasyonlarında Yüksek Performans için Caching Mekanizmaları (512,0 KiB, 13.103 yükleme)
Java İle Yüksek Performanslı Web Platformları (3,1 MiB, 7.862 yükleme)
BizimAlem.com - Bir Sistemin Tasarlanış Hikayesi (1,8 MiB, 17.018 yükleme)
Command (Komut) Tasarım Şablonu
Command tasarım şablonunu açıklamak için televizyonu uzaktan kumanda etme aletini metafer (mecazi örneklendirme) olarak kullanmak istiyorum. Kanalları değiştirmek için kumanda aleti üzerinde belirli bir tuşa basarız. Tusa basıldığı anda kumanda aleti televizyona bir komut göndererek, kanalın değişmesini sağlar. Aynı şekilde televizyonu açıp, kapatmak ve ses ve renk ayarlarını yapmak için değişik tuşlar kullanılır. Okumaya devam et
Çanakkale 18 Mart Üniversitesi Çevik Süreç ve TDD Semineri
Kurumsal Java Akademisi olarak 4 Nisan 2009 tarihinde, Çanakkale 18 Mart Üniversitesinde Çevik Süreç ve TDD (Test Driven Development – Test Güdümlü Yazılım) konulu semineri düzenledik.
Çevik Java EE 5 Web Uygulamaları ve Mimarileri (1,8 MiB, 7.549 yükleme)
Okumaya devam et
Oracle Sun ve Java’yı Satın Aldı
Geçtigimiz günlerde ürün portföyündeki bilgibankası ile meşhur Oracle firması Java’nın oluşturucusu Sun firmasını satın aldığını duyurdu. Okumaya devam et
Subversion İle Versiyon Kontrolü
İnsanoğlu okuma, yazmayı icat etmeden önce mağara duvarlarına resimler yaparak düşüncelerini şekillendirmeye başladı. Araştırmalara göre ilk yazının Sümer’liler tarafından İsa’dan önce 3500 civarında icat edildiği söylenmektedir. Okumaya devam et