(Fabrika Şablonu) Factory Pattern. Tasarım şablonlarının Creational (Yaratıcı) Sınıflandırmasına aittir. Fabrika(Factory) Şablonu



Benzer belgeler
Üst Düzey Programlama

İçindekiler. Okuma lisansı info acar, için verilmiştir. Çoğaltılması ve dağıtılması yasaktır.

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

Üst Düzey Programlama

Facade (Cephe) Tasarım Şablonu KurumsalJava.com

YZM 2108 Yazılım Mimarisi ve Tasarımı

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

SUBE KODU / ADI : 0000 / REF. NO : 0 KREDININ TURU : 0000 / TARİH : ŞABLON TABLO : 001 / SABIT ESIT TAKSITLI ÖDEME SAYFA : 1 \ 5

SUBE KODU / ADI : 0000 / REF. NO : 0 KREDININ TURU : 0000 / TARİH : ŞABLON TABLO : 001 / SABIT ESIT TAKSITLI ÖDEME SAYFA : 1 \ 5

BTP 209 SİSTEM ANALİZİ VE TASARIMI

VERİ TABANI UYGULAMALARI

DESTEK DOKÜMANI KAYIT NUMARALAMA ŞABLONLARI

Süreç Yönetimi. Logo

YZM211 YAZILIM TASARIMI

Bu deney çalışmasında kombinasyonel lojik devrelerden decoder incelenecektir.

Belge, ABYSIS içinde kullanılan, kayıt, fiş, fatura, hesap kartı gibi bir tanımı veya bir işlemi ifade eden kayıt veya evraklardır.

TASARIM KALIPLARI TASARIM DESENLERİ TASARIM ÖRÜNTÜLERİ TASARIM ŞABLONLARI

DESTEK DOKÜMANI SATINALMA SĐPARĐŞ PLANLAMASI

Araştırma Problemleri: Problem İfadeleri, Araştırma Soruları ve Hipotezler

Üst Düzey Programlama

Öğretim planındaki AKTS Ulusal Kredi

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

YAZILIM MODELLEME VE TASARIM

19 Şubat 2016 Cuma

Sap Co Kullanıcı Kitabı

KARİYER PLANLAMA Amaç ve Fayda Yayın Tarihi Kategori Ürün Grubu Modül Versiyon Önkoşulu Yükleme ve Gereken Dosyalar Yükleme Sonrası

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com

Loose Coupling (LC) Esnek Bağ Tasarım Prensibi KurumsalJava.com

.. MESLEKĠ VE TEKNĠK ANADOLU LĠSESĠ EĞĠTĠM - ÖĞRETĠM YILI

SUBE KODU / ADI : 0000 / REF. NO : 0 KREDININ TURU : 0000 / TARİH : ŞABLON TABLO : 001 / SABIT ESIT TAKSITLI ÖDEME SAYFA : 1 \ 5

SUBE KODU / ADI : 0000 / REF. NO : 0 KREDININ TURU : 0000 / TARİH : ŞABLON TABLO : 001 / SABIT ESIT TAKSITLI ÖDEME SAYFA : 1 \ 5

SUBE KODU / ADI : 0000 / REF. NO : 0 KREDININ TURU : 0474 / TARİH : ŞABLON TABLO : 001 / SABIT ESIT TAKSITLI ÖDEME SAYFA : 01 \ 05

SUBE KODU / ADI : 0000 / REF. NO : 0 KREDININ TURU : 0474 / TARİH : ŞABLON TABLO : 001 / SABIT ESIT TAKSITLI ÖDEME SAYFA : 01 \ 05

SUBE KODU / ADI : 0000 / REF. NO : 0 KREDININ TURU : 0474 / TARİH : ŞABLON TABLO : 001 / SABIT ESIT TAKSITLI ÖDEME SAYFA : 01 \ 05

Bilgisayarda Programlama. Temel Kavramlar

.com. Özcan Acar 2009 Kurumsal Java.com

Analiz Raporu. Projenin amacının, konusunun, işlevinin ne olacağı, hangi yazılımlar kullanılacak gibi parametrelerin belirlenmesi.

YENİ NESİL ÖKC İLE ON-LİNE İŞLEMLER (Hugin / Profilo)

5. Tablo İşlemleri. Bu bölümü bitirdiğinizde,

COLLECTOR Özellikleri Teknik Özellikler Ürün Özellik Seti... 4

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

SE311 YAZILIM YAPIMI BÖLÜM 3 YAPIM TASARIMI. Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi

Sunum İçeriği. Programlamaya Giriş

Bilgisayar İşletim Sistemleri BLG 312

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

NESNEYE YÖNELİK PROGRAMLAMA

C++ Dersi: Nesne Tabanlı Programlama

3. Bölüm Soyut Sınıflar (Abstract Classes) Java ile Nesne Merkezli ve Fonksiyonel Programlama Akın Kaldıroğlu

DESTEK DOKÜMANI. Masraf merkezi: Personelin tek bir masraf merkezine bağlı olması durumunda kullanılır.

Yrd. Doç. Dr. Caner ÖZCAN

Sisteme giriş yapıldığında ana sayfa üzerinde işlem menüleri, Hızlı erişim butonları ve mail gönderim istatistikleri yer alır.

Microsoft SQL Server Sorgulama

DOKUZ EYLÜL ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ DEKANLIĞI DERS/MODÜL/BLOK TANITIM FORMU. Dersin Kodu: MMM 2500

NESNE TABANLI PROGRAMLAMA Temel Kavramlar

SANCAR KAYALAR İŞYERİ EĞİTİMİ SUNUMU

5. PROGRAMLA DİLLERİ. 5.1 Giriş

Ders 8 Konu Özeti ve Problemler

Decorator Tasarım Şablonu

Css Stillerinin Nesneyi Etkileme Yolları Ve Sırası, Diez, Nokta, Yıldız, Class Css De Neyi İfade Eder.

YZM311 YAZILIM YAPIMI BÖLÜM 4 TASARIM KALIPLARI. Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi

C Dersleri Bölüm 3 : Program akışı

MVP ve Mediator ile Loose Coupled, Modüler UI Geliştirme

SINIF YAPISI ve NESNE YÖNELİMLİ PROGRAMLAMA NESNE YÖNELİMLİ PROGRAMLAMA

Klavyeden Basit Giriş/Çıkış İşlemleri

Aktarımı Çalıştırmak/Geri Almak 146 Alan Seçenekleri 148 Veri Tabanı Şeması 150 Veri Tabanı ile İlgili Bazı Rake Görevleri 162 Modeller 164

Yazılım Örüntüleri (SE 461) Ders Detayları

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Hedef Davranışlar. Eğitim Programının birinci boyutudur. Öğrencilere kazandırılması planlanan niteliklerdir (davranışlar).

SAYISAL VLSI SİSTEM TASARIM AKIŞI

Peyzaj Mimarlığı çalışmalarında bitkisel materyalinin kullanımında, tasarım ilkeleri ile birlikte bitkilerin denrolojik özelliklerinin

Sihirbaz Kullanarak Sorgu Oluştur : Sihirbaz sorguyu hazırlayan kişiye sorular sorar ve yanıtlarına göre sorgu oluşturur.

KALİTE YÖNETİM SİSTEMLERİ YAZILIMI

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Hızlı Başlangıç Kılavuzu

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

FİKRİ VE SINAÎ MÜLKİYET HAKLARI. Dr. Deniz ŞENYAY ÖNCEL

EĞİTİM ÖĞRETİM MÜNEVVER ÖZTÜRK ORTAOKULU II. DÖNEM BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ DERS NOTLARI

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

ÜSİMP 2013 Altıncı Ulusal Kongresi, Mayıs 2013, Düzce Üniversitesi

YAZILIM MODELLEME VE TASARIM

Dersin Yürütülmesi Hakkında

Hazırlayan Tarih İmza Özge Bakülüer. Gözden Geçiren Tarih İmza Devrim Erdönmez. Onaylayan Tarih İmza İDARE

TURKCELL HİZMETLERİ. Kullanım Bilgileri. LOGO Kasım 2014

P-touch Transfer Manager Kullanmı

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

ELEKTRONİK İMZADA GÜVENLİK VE STANDARTLAR

SAĞLIK KURULU ÖZÜRLÜ SAĞLIK KURULU RAPORU

E - YENİLİKLER BÜLTENİ

Genel Programlama II

SİNOP ÜNİVERSİTESİ KÜTÜPHANESİ DERME GELİŞTİRME POLİTİKASI

Q-P 110A Kullanım Kılavuzu

BM-311 Bilgisayar Mimarisi

CENG 302 Yazılım Mühendisliği Yazılım Mimarisi - Devam. Alper UĞUR

E - YENİLİKLER BÜLTENİ

DESTEK DOKÜMANI. Tablolu Malzeme Sınıfları

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Dizaynda Word Desteği

Veritabanı Yönetim Sistemleri I HAFTA 1

Transkript:

1 Aşağıda açıklanan iki şablon (Factory patten and Abstract Factory pattern) Creational Tasarım şablonu sınıfındadır. Structural Tasarım şablonu sınıflandırmasındaki Bridge Şablonu olması mümkün değildir. Çünkü structural (yapısal) sınıflandırmadaki şablonların amacı sınıflar, sınıf ilişkileri ve sınıf yapılarının hiyerarşilerini değiştirmektir; örneğini yaratarak döndürmek değildir. (Fabrika Şablonu) Factory Pattern Tasarım şablonlarının Creational (Yaratıcı) Sınıflandırmasına aittir Fabrika(Factory) Şablonu Fabrika sınıfı yaratıcıdır; yani bir sınıf tipinin örneğini oluşturur ve döndürür. Soyut bir sınıfın örneğini bir implementasyon sınıfı olarak gerçeklemek için kodun bir kapsüllemesini (encapsulation) oluşturur. Fabrika (factory), bir sınıf için gerekli olan (creational) yaratıcı herhangi bir operasyonu başlatabilir, veriyi çekebilir, düzenleyebilir, durum başlatabilir (oluşturma) ve icra edebilir. Fabrika şablonu fazla sayıda yaratılacak lojiğin olduğu örneklerde uygundur; çünkü gerektiğinde pek çok yerdeki mantıkal yapının değiştirilmesi yerine, herşey fabrika sınıfına taşındığında sadece fabrika sınıfındaki değişiklik yeterli olacaktır. Verilen fabrika şablonu örnekleri kodlamadaki 2 farklı probleme alternatif çözümdür. 1 Design Patterns, Christopher G. Lasater,2010

Problem 1: Ortak bir temel sınıf ile implementasyon sınıflarının farklı yerlerde tanımlanması ve özellikle yaratıcı (creational) lojik işleyişler arasında bir uniform bir düzenin olmaması. Çözüm : Tabanı oluşturan kod ile fonksiyonel bildiriler arasında yaratma işlemlerindeki karar verme süreçlerinde (örneğin hangi tip Suit sınıfı )kapsülleme (encapsulation) oluşturmaktır; Problem 2: Sınıf tipleri sabit, değiştirilmez (immutable) mantıksal kod olarak verildiğinde fabrika sınıfından döndürülmek istenen yeni tiplerle genişletme için, fabrika sınıfında değişiklikler gerektirecektir Çözüm a: (alttaki şekil) SuitFactory içerisinde mantıksal işlevi tek bir yere kapsüllemek aynı lojik için çoklu kodlar yazılmasına olanak sağlar; burada birden fazla mantıksal yapı vardır ve yaratıcı (creational) proses gerçekleştirmektedir. Öyleyse fabrika sınıfı ölçeklenebilir ve kod eklenmesi ile fabrika sınıfının koşul mantığındaki değişiklikler de derlenmelidir. Böylece fabrika sınıfı farklı tiplerin olduğu sınıflar arasında doğrudan değişiklik yapamayacaktır. Soyut sınıfın kendisi Suit sınıfının soyutlamasındaki polimorfik özellikleri kullanarak kendi implementasyon sınıfına arayüz olacaktır.

Çözüm b: (Alttaki sınıf) Fabrika sınıfının soyutlamalarını implementasyonun gerçekleşeceği uygun sınıf tiplerine yöneltmek için miras kullanılması da mümkündür. Abstract Factory Pattern Tasarım şablonlarının Creational (Yaratıcı) Sınıflandırmasına aittir. Fabrika(Factory) şablonunun genişletilmişidir; yukarıda açıklanan Fabrika şablonunda diğer sınıflar uniform olarak yaratılırken, Abstract Factory şablonunda benzer metotlarla ve değişebilen erişim noktaları ile fabrikalara (fabrika sınıflarına) izin veren bir yol sağlanır. Soyut bir fabrika kullanarak implementasyon sınıf tipleri (bunlar fabrikadır) tanımlanabilir; böylece diğer tüm fabrika implementasyonları temel sınıfa bağlanır. Özetle Abstract Factory bir sınıf için farklı şeyler yapan çoklu fabrika sınıfları olduğunda kullanılır. Amaç bu fabrika sınıfları arasındaki uniform yapıyı sağlamaktır. Her birinin birbirinden farklı yaratıcı (creational) mantığının olduğu ve her birinin aynı sınıf tipini belirttiği iki fabrika sınıfı olsun. Bu iki fabrika sınıfı bir örneği oluşturulurken (yaratılırken) değişim göstereceklerdir. Farklı fabrika sınıfları bir Abstract Factory sınıfında birleşirler. Bu sınıflar aynı sınıf tipini döndürmek üzere, değişimli olarak kullanılabilir. Kodları yeniden yazmadan bir fabrika sınıf tipi çağrılarak o fabrika sınıfı çağrılmış olur.

Yukarıdaki her üç şekil de Abstrac Factory örneğidir.