C#nedir?com
 
YAZAR HAKKINDA
Tanıl Ergin
Tanıl Ergin
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
21 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: benzer genelde kalibin kaliplar kaliplari nesneye oldugu olmustur. ortaya problemler saglayan sistem tasarim tekrar yazilim Yazılım Müh. Tanıl Ergin
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : Yazılım Müh.
Yayınlanma Tarihi : 8.9.2004
Okunma Sayısı : 24938
Yorum Sayısı : 1     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 21.4.2021
Turhal Temizer
Mac OS/X Removing CUDA 21.4.2021
Burak Selim Şenyurt
Tie Fighter Değil, Project Tye! 21.4.2021
Burak Selim Şenyurt
Stackoverflow Sevgi Anketinde Yıllardır Bir Numara Çıkan Programlama Dili Rust Kimdir? 21.4.2021
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Tasarım Kalıpları - 1
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Tasarım kalıpları.. Yazılım sistemlerinin gizli kalmış kahramanları..

"Program yazmak", benim tercih ettiğim tabiriyle "yazılım geliştirmek", günümzdeki en karmaşık işlerden birisidir. Genelde bir sürü matematik sorusu çözmeye benzeyen bu süreç, çoğumuzun yakından ilgili olduğu bir iştir.

Yazılım geliştirme sırasında, herkesin en çok yaptığı iş, önümüze çıkan problemlere karşı çözümler getirmektir. Fakat bu iş bu kadar basit midir? Önerilen çözümün iyi bir çözüm olup olmadığını nasıl anlayabiliriz? Çözüm çok karmaşık bir sistem yaratmamalıdır, ileriye dönük geliştirmelerde bizlere kolaylık sağlamalıdır, esnek olmalıdır, parçalarının kolay değiştirilir olması gerekir... gibi bir çok kriter bu soruya cevap olarak verilebilir.

Nesneye yönelik programlamada, genelikle aynı tarz problemler karşımıza çıkar ve "Ben bunu daha önce çözmemiş miydim?" gibi bir soru aklınıza gelir. Çünkü genelde karşılaşılan sorunlar, "Bu sistemdeki raporlama bölümüne word belgesinin yanına bir de excel raporları ekleyemez miyiz?" ya da "Sistemin X parçası artık çok eski kaldı, bu parçayı yeni bir teknoloji kullandığımız Y parçası ile değiştirmek istiyoruz, ne dersin?" gibi sorunlardır. Klasik bir nesneye yönelik yaklaşımla, dikkatli inceledğimizde aslında bu tarz "değişikliklerin" daha önce başka sistemlerde de yapıldığını görebiliriz. Bu durumda, niye önceki deneyimlerimizden yararlanıp işimizi kolaylaştırmıyoruz?

Yukarıda yazdığım soruyu, yazılımcılar kendilerine yıllardır sormuşlardır. Cevap, bizi tasarım kalıplarına "design patterns" getirmektedir. Peki nedir bu tasarım kalıpları?

Tasarım kalıpları, nesneye yönelik programlamanın en çok üzerinde durduğu iki kavram üzerine kurulmuştur: Tekrar kullanılabilirlik ve ortak bir terminoloji. Genel olarak, karşımıza tekrar ve tekrar çıkan problemler için ortak bir çözüm sağlayan ve problemin temeline bir çözüm sağlayan yöntemlere tasarım kalıpları denir.

Örneğin "kapı"ları düşünün. Kapıların amaçları bellidir. Hepsi aynı işlevi sağlamaktadır. Fakat görünümleri, yapıldıkları maddeleri, renkleri, kilitleri,... Hemen hemen herşeyi farklı olmasına rağmen yaptıkları iş aynıdır. Bize sundukları çözüm aynıdır. İşte tasarım kalıpları da aynı bunun gibidir. Bize yazılım konusunda ortak bir çözüm sağlayan yapılardır.

Tasarım kalıpları, benzer problemlere benzer tasarım çözümleri getirerek tasarım işini kolaylaştırır.

Tasarım kalıpları ilk olarak, 1990’ların başlarında ortaya çıkmıştır. Bir grup yazlım geliştirici, mimaride kullanılmakta olan kalıpları inceleyerek bunların yazılım sistemlerinde de benzer şekilde kullanılıp kullanılamayacağını araştırmışlardır. Bu noktada karşılaştıkları 2 soru olmuştur. Bu sorular şunlardır:

1) Yazılımlarda tekrar ve tekrar ortaya çıkan problemler var mıdır? Bu problemler benzer mantıklarla çözülebiliyorlar mıdır?

2) Bazı kalıplar tanımlandıktan sonra, bu kalıplar temel alınarak özel sorunlara tasarım çözümleri getirilebilir mi?

Cevap, evet olmuştur. Gerçekten de yazılım sistemlerinin karşılaştıkları problemlerin tasarımları genelde benzer olmaktadır. Mesela eski bir çalışan sistem ile çalışabilecek uyumlulukta yeni bir sistem tasarlamak, varolan bir sistemin hepsini değil de bir kısmını kullanarak yeni bir sistem yaratmak, yaratılan modüllerin bir veri yapısının durumuna göre yapacakları işleri ayarlamak, ... gibi genel anlamda tasarım sorunlarına ortak çözümler sunulabilmektedir. Bu soruya evet cevabı verildikten sonra yapılmaya başlanan iş ortak tasarım kalıpları tasarlamak olmuştur.

90’larda birçok insan kalıplarla uğraşmaya başlasa da, "Gangs of Four" adıyla anınan Gamma, Helm, Johnson, Vlissides’in yazmış olduğu "Design Patterns: Elements of Reusable Object-Oriented Software " kitabı bu konuda çok büyük bir başarı yakalamıştır. Kitap halen bir çok üniversitede ders kitabı olarak da okutulmaktadır. Aslında bu "dörtlü"nün yapmış olduğu iş, yeni kalıplar -sorunlara yeni çözümler getirmek- yaratmak değil, varolan çözümleri inceleyerek, ortak noktalarını alarak kalıpları yaratmaktan çok ortaya çıkarmak, tanımlamak olmuştur.

Tasarım Kalıpları’nın Dünyadaki Genel Tanımlanma Biçimi

İsim: Her kalıbın genel olarak tek bir adı vardır ve bu ad başka bir kalıpta kullanılamaz
Amaç: Kalıbın amacı
Problem: Kalıbın çözdüğü problem
Çözüm: Kalıp probleme nasıl bir çözüm yaklaşımı getirmektedir?
Birimler: Kalıpta kullanılan birimler.(UML gösterimi ile birlikte)
Gerçekleştirim: Kalıbın kodları

Bu yıllardan sonra, tasarım kalıplarına birçok eklenti yapılmıştır ve internette bir çok tasarım kalıbı bulunmaktadır.

Peki, tasarım kalıplarını öğrenmek için neler yapmak gerekir?

Öncelikle, tasarım kalıpları hakkında kafanızda genel bir fikir olması gerekmektedir. Tasarım kalıplarının belirlenmiş tasarımlar olduğunu ve birçok probleme ortak bir çözüm sağladığını bilmelisiniz. Bunun yanında, tasarım kalıpları öğrenmeden önce temel düzeyde nesneye yönelik programlama ve UML gösterimini bilmelisiniz. Daha sonra tasarım kalıpları hakkında çalışmaya başlayabilrisiniz.

Yazılımlarda kalıpları uygulamaya başladıktan sonra ne kadar başarılı tasarımlar yaptığınızı ve tasarım işinin ne kadar kolaylaştığını siz de göreceksiniz.

Bu yazımızda genel olarak tasarım kalıplarının ne olduğunu anlatmaya çalıştık. Bundan sonraki yazılarımızda en çok kullanılan kalıplar hakkında size bilgi vereceğiz.

Makale:
Tasarım Kalıpları - 1 Yazılım Mühendisliği Tanıl Ergin
  • Yazılan Yorumlar
  • Yorum Yaz
EYL
8
2004
Elinize saglik..önemli bir konu ve güzel bir yazi dizisi olacagi kanaatindeyim.
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor