18 Mart 2014 Salı

Design Patterns (Tasarım Şablonları) nedir?

Merhaba arkadaşlar,

Bugünden itibaren Nesne Tabanlı Programlamada işleri yarı yarıya kolaylaştıran, daha önceden karşılaşılan problemler üzerinde kafa yorularak taslak haline getirilmiş yapılar olan Tasarım Şablonları (Design Patterns) yazı dizisine başlıyoruz. Hepimize hayırlı olsun :)

Design Patterns Nedir?
Yukarıda da bahsettiğim gibi Design Patterns sıklıkla karşılaşılan problemlere genel çözümler bulmak için oluşturulmuş yapılardır ve tecrübelere dayanır. Bu yüzden sağlam bir yapı oluşturmak için kullanılması tavsiye edilir.

Oluşturmak istediğimiz hemen her dizayn için bir design pattern bulabiliriz veya birkaç patterni birleştirerek problemimize daha uygun yapılar elde edebiliriz. Yapmamız gereken şey sadece hangi şablon ya da şablonların problemimize daha uygun olduğuna karar vermek olacaktır.

Tasarım şablonlarının kullanımında Nesne Tabanlı Programlamanın birçok özelliği kullanılır bu yüzden tasarım şablonlarını daha rahat kavramak için coupling ve cohesion, inheritence, interface, polymorphism gibi konulara hakim olmanız önerilir.

Tasarım şablonları birkaç alt başlık altında incelenir. Bunlar;

Creational ; objelerin oluşturulması ile ilgili tasarımlar,

Structural ; yazılımın genel yapısını kolaylaştıran tasarımlar,

Behavioral ; objelerin birbirleri ile ilişkilerini ve davranışlarını düzenleyen tasarımlar.

Toplamda yaklaşık 25 tasarım şablonu bulunmaktadır. En çok kullanılanlar ve benim bahsedeceklerim şimdilik aşağıdakiler;

1- Strategy pattern (Behavioral)

2-Observer Pattern (Behavioral)
3- Decorator Pattern (Structural)
4-Factory Pattern (Creational)

5-Singleton Pattern (Creational)
6-Command (Behavioral)
7-Adapter (Structural)
8-Facade (Structural)
9-Template (Behavioral)
10-Iterator(Behavioral)

11-Composite (Structural)

12-State (Behavioral)
13-Compound (Patternlerin birlikte kullanılması)

Design Patterns konusuna geçmeden önce ileride çok kullanacağımız ve bu konuyu daha rahat anlamamızı sağlayacak bir yapıdan bahsetmek gerek diye düşündüm ve UML'den biraz bahsetmek istedim.

UML nedir?

UML (Unified Modeling Language), objelerin tasarımı aşamasında kullanılan bir dildir. Objeleri şekillerle ifade ederek object oriented dizaynımızı daha rahat oluşturmamıza ve oluşturduğumuz yapıların başkaları tarafından kolayca anlaşılmasına olanak sağlar. Bir classın UML ile gösterimi aşağıdaki gibidir;

kedi

En başta class adı, daha sonra sınıfa ait değişkenler, son olarak da classın metodları gösterilir. UML'de kullanılan " - " simgesi değişkenin private olduğunu, "+" simgesi public olduğunu, "#" ise protected olduğunu gösterir. Değişkenler için önce değişkenin ismi, ":" simgesi ve daha sonra değişkenin tipi belirtilir. Metodlarda ise, metod adı, parantez içinde metodun parametreleri (parametrenin adı : parametre tipi) şeklinde belirtilir.

Sonuç olarak, bir Uml diyagramına baktığımızda, bu classın kodlarını istediğimiz dilde yazabiliriz. Hatta Uml'den koda dönüştüren araçlar da mevcuttur.

Bu şekildeki UML'i aşağıda linkini verdiğim aracı kullanarak oluşturdum.

http://staruml.sourceforge.net/en/

Bir sonraki yazıda Strategy Pattern'i anlatmaya çalışacağım. Herkese kolay gelsin...

Hiç yorum yok:

Yorum Gönder