Factory

Bu yazımda size Factory adında nesneye dayalı yazılım şablonunu (Object-Oriented Design Pattern) anlatacağım. Factory şablonunu şöyle anlatayım. Düşünün ki siz painte benzer bir program yazacaksınız ve bu programda siz sistemi kullanan bir kullanıcısınız ve siz çizmek istediğiniz objeyi söylüyorsunuz bizim factory adındaki sınıfımızda gidip bu objeyi sizin için yaratıyor. Daha programlama babında konuşacak olursak. Siz Shape adında genel bir interface yazıyosunuz. Bu interface side kullanan Rectangular, Circle vb objeler var. Siz de bu durumda Client sınız. Client yeni bir obje yaratılması için Factory adlı sınıfa bir parametreyle (bunun ne olacağını ve türünü siz seçebilirsiniz) emir veriyosunuz. Factory de bu parametreye göre size o objeden dönüyor.

factory


public interface Shape{}
public class Circle implements Shape{}
public class Rectangular implements Shape{}
public class Factory{
	public Shape getShape(String shapeName){
		if(shapeName.equals("circle"))
			return new Circle();
		else if(shapeName.equals("rectangular"))
			return new Rectangular();
		else
			return null;
	}
}

Singleton

Bu yazımda size Singleton adında nesneye dayalı yazılım şablonunu(Object-Oriented Design Pattern) anlatacağım. Singleton benim en çok kullandığım dizayn şablonlarından biri. Bu şablon genelde yaratmak istediğiniz objeden yalnız bir tane olmasını istediğiniz durumlarda kullanabileceğiniz bir şablon. Örnek verecek olursak, bir oyun yazıyosunuz ve bu oyununun Game adında oyunu çekip çeviren bir objesi var ve her yerden çağırabilinsin istiyorsunuz. Bu durumda singleton kullanmak şart olur :d.

public class Singleton{
	private static Singleton singleton;
	private Singleton(){}
	public Singleton getInstance(){
		if(singleton==null)
			return (singleton = new Singleton());
		return singleton;
	}
}

Yazılım Mimarisi

architecture

Mimari denildiğinde insanın aklına gelebilecek ilk konu değildir yazılım. Ama nasıl köprüler barajlar gibi büyük yapıtların bir mimariye ihtiyacı varsa, geniş kapsamlı yazılım projelerininde mimariye ihtiyaçları vardır. Çünkü projeler büyüdükçe bunların üstesinden gelmek zorlaşır. Dolayısıyla, karmaşık ve büyük çapta sistemleri tasarlamak için aslında olaylara çok basit noktalardan bakmak gereklidir. Bu noktada detaya fazla girmeden size neden ve nasıl yazılım mimarisi yapıldığından bahsedeceğim. Örneklerim biraz olağan dışı olursa beni mazur görün.

Öncelikle, neden mimariye genelde ihtiyaç vardır sorusunun yanıtını vererek başlayalım. Düşününki bir sürü inşaat işçisi duvar yapabiliyor. Hepsini bir araya getirsek ve Taç mahal yapmalarını istesek bu yapıtı inşa edemeyiz. Ancak bir mimar yapıtın mimarisini çıkarırsa ve de daha sonra bu mimarinin mühendisliği yapılırsa bu şekilde planlı ve programlı şekilde ilerlenir dolayısıyla ortaya eşsiz eserler çıkarılabilir. Aynen bu şekilde de yazılımlarda bu sistem geçerlidir. Mesela bir oyun yapılacak yada facebook gibi bir site. Şimdi siz bu siteye salt bakamazsınız. Sebebi çok iyi bir mimarisi olmaz ise sistem yeni gelen teknolojileri yada yazılımları kabul etmeyecektir. Sadece o değil nereden başlayacağınızı da bilemezsiniz. Çünkü sistem o kadar karmaşık ki planınız olmadan üstesinden gelinemez. Bu noktada amaç geliştirilebilir, yeniliklere açık, uygulanabilirliği kolay ve sağlam sistemler oluşturmaktır. Bu durumda da mimari artık kaçınılmazdır.

Eğer sizi yazılımların da mimariye ihtiyacı olduğuna ikna ettiysem size yazılım mimarisinin nasıl yapıldığına dair yüzeysel bilgiler vereyim. Genel olarak yaptığınız yazılımlar 2 parçaya ayrılabilir. Birincisi kullanıcıların görüp kullandığı görünüm ara yüzü(Graphical User Interface) ve bu ara yüzün planlayıcısı ve kontrol mekanizması olan bir mantık ünitesi. Şimdi mimari bu noktada başlıyor. Görünüm ara yüzünü o kadar iyi ayırırsınız ki alttaki mantık ünitesinden, iki kısımda birbirinden etkilenmez. Buna şöyle bir örnek vereyim. Şimdi facebook yeni bir tema oluştursa kendisine, sizce var olan her şeyi değiştirir mi? Tabiki hayır. Var olan temayı başka bir temayla rahatça değiştirebilecek bir sistemleri vardır. Bunu da mimarileriyle başarmışlardır. Peki bu mimari dediğimiz şey bu iki üniteyi sadece birbirinden ayırmak mıdır? Hayır değildir. Maksadımız sistemi yukarıda saydığımız özelliklere kavuşturmaktır. Sistemi öyle yapmak istiyoruz ki her şeyin yerine yenisi çıkarılıp takılabiliyor olsun. Tabi bu hiçbir zaman tamamı ile başarılabilecek bir durum değildir. Bu da bilgisayar ve yazılım mühendislerinin çalıştığı alanlardan biridir..

Şimdi bilgisayar mühendisi ve bilgisayar bilgisi iyi olan arkadaşlara yönelik kısıma geldik. Bu kısımda size yazılım mimarisinde kullanılan birkaç şablondan(pattern) bahsedeceğim. Öncelikle hepinizin bildiği pattern Model-View-Controller en çok bilinen ve yaygın olarak kullanılan mimari şablonudur(architectural pattern). Bunun yanı sıra oyun şirketlerinin çok kullandığı Peer-to-Peer yaygın bir şablondur. Bu şablonda internet üzerindeki kullanıcıların aynı anda hem sunucu(server) hemde alıcı(client) olabileceği düşünülerek tasarlanmıştır. Bundan başka Pipe and Filter diye bir şablonuzum varki bu da genelde derleyiciler(compiler) için kullanılmaktadır. Bu mimaride yapılacak işlemi parçalara ayırma güdülmüştür. Bunu şöyle açıklayabilirim. Mesela bir kodu derleme işlemini şu şekilde yapar bu tür sistemler. İlk önce bir syntax analizi yapar burada hata varsa durur, sonra array in sınırlarını kontrol eder. Daha sonra başka bir takım işlemlerden geçirdikten sonra kodunuzu derlemiş olur. İşte bu tür sıralı işlemlerde bu şablon kullanılmaktadır. Son zamanlarda çok yaygın olan bir diğer şablonsa Service-Oriented-Architecture dır. Bu mimaride ise temel olarak bir sistem üzerinde birden fazla küçük sistemin uyumlu şekilde çalışması güdülür. Örnek verecek olursak, facebook üzerinde farmville in çalışması gibi. Şu an açıklamadığım ama merak edeceğiniz diğer önemli mimari şablonlarını ise sıralıyorum.Multitier Architecture, Implicit Invocation, Blackboard system ,Naked Objects.

Bu kadar çok konuşup başınızı ağrıttıktan sonra yazımı burada tamamlamak istiyorum. Kısaca karmaşık işlerin çözümü basitten başlamaktan geçer. Bundan dolayıda mimari yazılımda gerekli olan çok önemli bir kavramdır.

 Sayfa: 2 | Toplam: 11 « 1  2  3  4  5 » ...  Last »