yazılım mimarisi ve tasarımı...yazılım mimarisi ve tasarımı yrd. doç. dr. volkan tunali...
TRANSCRIPT
![Page 1: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/1.jpg)
YZM 2118
Yazılım Mimarisi ve Tasarımı
Yrd. Doç. Dr. Volkan TUNALI
Celal Bayar Üniversitesi
Hasan Ferdi Turgutlu Teknoloji Fakültesi
Yazılım Mühendisliği
1 YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 2: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/2.jpg)
BÖLÜM – 10.1
Tasarım Kalıpları
2
Bu bölümde;
Anti-Patternler (Anti Kalıplar)
Factory Tasarım Kalıbı
AbstractFactory Tasarım Kalıbı
ile ilgili konular anlatılacaktır.
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 3: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/3.jpg)
• Yazılımsal bir problemi, bilinen ve doğru çözüm
olarak kabul edilmiş bir kalıbı kullanmadan ve
özgün bir yöntemle çözmek anlamında
kullanılmaktadır.
• İlk bakışta mükemmel gibi görünen bu çözümler
sonradan sıkıntılar doğurmaktadırlar.
3
Anti-Pattern
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 4: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/4.jpg)
• Anti-Pattern’ lerin en tehlikeli tarafı ürün
geliştirme süreçlerinde ve vakalarda en uygun
çözüm yolu olarak düşünülmeleridir.
• Anti-Pattern kavramlarını bilmek, yazılım
geliştirme sürecinde karşılaşılabilecek ciddi
problemleri önceden tahmin edebilmeyi sağlar
ve tedbir almayı kolaylaştırır.
4
Anti-Pattern (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 5: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/5.jpg)
• Anti-patternlerin kullanılması yanlıştır.
• Kısa vadede hızlı bir çözüm olarak gözükseler
de genelde yazılım mimarisinde sıkıntılara yol
açmaktadırlar.
• Türkiye’de maalesef anti-pattern’ler fazlaca
kullanılmaktadır.
• Örneğin; spagetti kod yazımı ya da kodları
kopyala-yapıştır yöntemiyle yazmak, anti
pattern olgusuna örnektir.
5
Anti-Pattern (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 6: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/6.jpg)
1. Magic Pushbutton
– Herhangi bir soyutlama yapılmaksızın görsel
nesnelerin arkasında kodlamanın yapılmasıdır.
Buna ayrıca butonclick programcılığı denmektedir.
– Bu desen GUI(Graphical User Interface) tipindeki
uygulamalarda daha fazla ortaya çıkar. Arayüz tarafı
ile iş mantıkları genellikle buton gibi bir kontroller
arkasına gömülür.
6
Anti-Pattern Örnekleri
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 7: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/7.jpg)
2. Spagetti Coding
– Bakım ve değişikliğin yapılamayacak kadar
karışık yazılmış kodlama türüne bu ad
verilmektedir.
– Nesne yönelimli olmayan dillerde daha sık
rastlanır.
– Metotlar daha çok süreç odaklı yazılır hatta
süreç adları olarak isimlendirilir.
– Nesneler arasında neredeyse hiç ilişki yoktur.
7
Anti-Pattern Örnekleri (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 8: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/8.jpg)
2. Spagetti Coding
– Çoğu metot parametre almaz ve global
seviyedeki sınıf değişkenlerini oluşturmakta
kullanılır.
– Kodun yeniden kullanılabilirliği zordur.
– OOP temel özellikleri(kalıtım, çok biçimlilik,
soyutlama) kullanılmaz.
8
Anti-Pattern Örnekleri (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 9: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/9.jpg)
2. Spagetti Coding
9
Anti-Pattern Örnekleri (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 10: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/10.jpg)
3. Lasagna Coding
– Gereğinden fazla sayıda katmana sahip uygulama
geliştirilmesine denmektedir (Aşırı çok katmanlı
uygulama).
– Çok katman, çok sayıda irili ufaklı class,
anlaşılması ve değiştirilmesi zor bir yazılım.
10
Anti-Pattern Örnekleri (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 11: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/11.jpg)
4. Kopyala -Yapıştır Programlama
– Daha generic bir çözüm üretmek yerine var olan
kodları koplayarak geliştirme yolunu tercih
etmektir.
– Çoğunlukla bir çözüm için yazılımın her hangi bir
yerinde uygulanan bir kod parçasının, ihtiyaç
olunan başka bir yerde aynen kopyalanarak
kullanılmaya devam etmesi olarak tanımlanır.
– Bu anti-pattern kod tekrarlarına neden olmaktadır.
11
Anti-Pattern Örnekleri (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 12: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/12.jpg)
4. Kopyala -Yapıştır Programlama
• Doğal sonucu olarak bir değişiklik olması halinde
kodun çoğaltıldığı yerlere gidilmesi de gerekecektir.
• Güncellemeler için fazla maliyetli eforlar sarf
edilebilir.
• Hatalar gözden kaçabilir ve uygulamanın yanlış
çalışma riski giderek artabilir.
• Söz konusu parçaları soyutlayıp, nesne yönelimli dil
temellerine uygun olacak şekilde ayrıştırmak
önemlidir.
12
Anti-Pattern Örnekleri (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 13: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/13.jpg)
4. Kopyala -Yapıştır Programlama
13
Anti-Pattern Örnekleri (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 14: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/14.jpg)
5. God Object (Tanrısal Nesne)
– Gereğinden çok şey bilen ve yapabilen sınıflara
denmektedir.
– Bu sınıflar çok fazla veriye sahiptir ve uygulamanın
ana sınıfı gibi algılanabilmektedir. Bu kötü bir
tasarımdır.
– Bu durumda tüm iş yükünü üstlenen sınıfların
bakımı, genişletilmesi, iş mantıklarının kolayca
okunur olarak içerisinde yer alması oldukça zorlaşır.
– Karmaşıklığın yanında, belleğe yüklenmesi zaman
alan nesneler ortaya çıkar.
14
Anti-Pattern Örnekleri (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 15: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/15.jpg)
6. Golden Hammer (Altın Çekiç)
– Bir tasarımın mükemmel bir çözüm olduğuna inanıp
her sorunu aynı yöntemle çözmeye çalışmaktır.
"Elinde çekiç olan birine tüm sorunlar çivi gibi
görünür.“
– Oysaki bazı problemler aynı yöntemler ve
yaklaşımlar ile çözümlenemeyebilir.
– Bu durum çözümü arayan kişilerin daha önce başarılı
şekilde uyguladıkları yaklaşımları sahiplenmesinden
kaynaklanır.
15
Anti-Pattern Örnekleri (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 16: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/16.jpg)
6. Golden Hammer (Altın Çekiç)
– Örneğin tüm yazılımların SOA (Service Oriented
Architecture) mimari bütünü içerisinde ele alınması
gerektiğini düşünmek bu duruma örnek olarak
verilebilir. En sık görülen Anti-Pattern’ler arasında
yer alır.
– Söz konusu durumun oluşmasının nedenlerinden
birisi, teknolojik gelişmelerden ekiplerin haberdar
olmamasıdır.
16
Anti-Pattern Örnekleri (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 17: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/17.jpg)
7. Reinventing the Square Wheel (Tekerleği
yeniden keşfetmek)
– Var olan bir çözüm yerine ondan daha kötü olan özel
bir çözüm üretme hatasına düşmektir.
– Bazı yazılım problemlerinin çözümünde kullanılacak
olan yollar zaten standart ve bellidir. Üstelik bu
çözümler için standart hale gelmiş mimari
yaklaşımlar, ürünler ve alt yapılar (Frameworks)
mevcuttur. Problemin bu tip yardımcılar ile
çözülemeyeceğini düşünüp sıfırdan bir çözüm
üretilmeye başlandığı hal tekerleğin yeniden keşfi
olarak düşünülür.
17
Anti-Pattern Örnekleri (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 18: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/18.jpg)
GoF (Gang of Four) Sistematiği
18 YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 19: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/19.jpg)
1. Creational (Nesne yaratılışına ait) Kalıplar
1. Abstract factory
2. Builder
3. Factory method
4. Prototype
5. Singleton
2. Structural (Yapısal) Kalıplar
1. Adapter
2. Bridge
3. Decorator
4. Facade
5. Proxy
19
GoF Sistematiği
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 20: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/20.jpg)
3. Behavioral (Davranışsal) Kalıplar
1. Chain of responsibility
2. Command
3. Interpreter
4. Iterator
5. Mediator
6. Memento
7. Observer
8. State
9. Strategy
10. Visitor
20
GoF Sistematiği (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 21: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/21.jpg)
Creational (Nesne Yaratılışına Ait)
Kalıplar
21 YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 22: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/22.jpg)
• Bu kalıplar nesneye yönelik
programlanın en yaygın
görevlerinden biri olan yazılım
sistemindeki nesnelerin yaratılması
hakkında yol göstermektedir.
22
Creational Kalıplar
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 23: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/23.jpg)
Factory Method
(Fabrika Tasarım Kalıbı)
23 YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 24: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/24.jpg)
• Günlük hayatta bazı varlıklar ya da nesnelerin
yaratılışları basittir ve bu tür nesneleri kendimiz bile
yaratabiliriz. Örneğin basit bir zil veya pusulayı evde
kendi kendinize yapabilirsiniz.
• Oysa bazı varlıklar veya nesneler ise oldukça karmaşık
süreçlerden geçilerek yaratılmaktadır.
• Sözgelişi evde pusula yapar gibi bir televizyon
yaratamazsınız.
• Ya da evde kendi kendinize para basamazsınız. Bu tür
nesneleri özel fabrikalar -üretimin detaylarını
tüketiciden gizleyerek- üretmekte ve tüketiciler de
fabrikaların ürettiği bu nesneleri kullanmaktadırlar.
24
Factory Method
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 25: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/25.jpg)
• Nesne yönelimli programlama açısından da
benzer bir durum söz konusudur.
• Bazı nesneler doğrudan kullanıcısı tarafından
yaratılabilmektedir. Bunun anlamı; sınıfın
başlangıç fonksiyonunu (new operatörü)
kullanarak nesnenin yaratılmasıdır.
• Ancak bazı nesnelerin (Product) kullanıcı
(Client) olarak erişebileceğimiz başlangıç
fonksiyonları bulunmamaktadır.
25
Factory Method (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 26: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/26.jpg)
• Client olan nesne Factory nesnesini kullanarak
ihtiyacı olan Product nesnesini elde eder.
• İstenen tipte yeni nesne oluşturma sürecinin Factory
sınıfına aktarılması ile birlikte nesne üretme ve
initialize etme süreci client’tan soyutlanmış olur,
• Bu sayede client; uygulama içerisinde tamamen
kendi rolüne odaklanmış olur, çünkü yeni nesnenin
nasıl oluşturulacağına dair detaylardan
soyutlanmış olur, bunları bilmek zorunda değildir.
26
Factory Method (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 27: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/27.jpg)
• Factory Pattern genel olarak:
– İstenen tipte nesne oluşturma sürecini Client’ın bu
konuda detay bilgi sahibi olmadan
gerçekleştirilmesini sağlar.
– Yeni oluşturulan nesneye bir interface ile referans
edilerek ulaşılmasını sağlar.
27
Factory Method (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 28: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/28.jpg)
FactoryMethod sınıf diyagramı
28
Factory Method (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 29: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/29.jpg)
Product
– Factory tarafından yaratılan nesnelerin arayüzü
ConcreteProduct
– Product arayüzünü implemente eden sınıf. Bu sınıfın nesneleri
ConcreteCreator tarafından yaratılır.
Creator
– Factory metodunu/metotlarını (factoryMethod) tanımlayan
arayüz
ConcreteCreator
– Creator sınıfını genişleten ve factoryMethod için bir
implementasyon sağlayan sınıf
29
Factory Method (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 30: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/30.jpg)
ISekil arayüzünü ve bu arayüzü implemente eden somut
sınıfları (Kare, Cember, Dikdortgen) yaratınız.
Sonrasında factory sınıfı olan SekilFactory sınıfını
yaratınız.
Program sınıfında SekilFactory sınıfından bir Sekil nesnesi
elde edebilecek şekilde SekilFactory sınıfını tanımlayınız.
Program sınıfında gereken nesnenin tipini (Cember, Kare,
Dikdortgen) bilgi olarak geçebilecektir.
30
Örnek: SekilFactory
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 31: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/31.jpg)
31
Örnek: SekilFactory (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 32: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/32.jpg)
1. İlk olarak ISekil arayüzünü yaratırız.
ISekil.java
32
Örnek: SekilFactory (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 33: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/33.jpg)
2. Sonrasında ISekil arayüzünü implemente eden
somut sınıfları yaratırız.
Kare.java
33
Örnek: SekilFactory (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 34: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/34.jpg)
2. Sonrasında ISekil arayüzünü implemente eden
somut sınıfları yaratırız.
Cember.java
34
Örnek: SekilFactory (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 35: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/35.jpg)
2. Sonrasında ISekil arayüzünü implemente eden
somut sınıfları yaratırız.
Dikdortgen.java
35
Örnek: SekilFactory (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 36: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/36.jpg)
3. Geçirilen bilgiye göre ISekil
arayüzünü implemente eden sınıfların
nesnelerini yaratan SekilFactory
sınıfını vet getSekil(ESekilTur
sekilTur) metotunu oluşturunuz.
36
Örnek: SekilFactory (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 37: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/37.jpg)
SekilFactory.java
37
Örnek: SekilFactory (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
ESekilTur.java
![Page 38: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/38.jpg)
4. Şeklin tipi gibi bir bilgiyi geçirerek
somut sınıflardan nesne elde etmek
için SekilFactory sınıfını kullanırız.
38
Örnek: SekilFactory (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 39: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/39.jpg)
Program.java
39
Örnek: SekilFactory (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 40: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/40.jpg)
Factory tasarım kalıbında, istemciye normal
oluşturma mantığına maruz bırakmadan
nesne oluşturulmasına olanak sağlanır ve
yeni yaratılan nesneye ortak bir arayüz
kullanarak erişilebilir.
40
Factory Method (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 41: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/41.jpg)
41
Örnek2: ProductFactory
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 42: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/42.jpg)
1. IProduct ara yüzünü yaratınız.
42
Örnek2: ProductFactory (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
IProduct.java
![Page 43: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/43.jpg)
2. ProductOne
somut sınıfını
yaratınız.
43
Örnek2: ProductFactory (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
ProductOne.java
![Page 44: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/44.jpg)
2. ProductTwo
somut sınıfını
yaratınız.
44
Örnek2: ProductFactory (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
ProductTwo.java
![Page 45: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/45.jpg)
3. ProductFactory sınıfını yaratınız.
45
Örnek2: ProductFactory (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
ProductFactory.java
![Page 46: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/46.jpg)
4. Client sınıfını yaratınız.
46
Örnek2: ProductFactory (devam...)
YZM 2118 Yazılım Mimarisi ve Tasarımı
Client.java
![Page 47: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/47.jpg)
Yararlanılan Kaynaklar
47
• Aykut Taşdelen, C++, Java ve C# ile UML ve Dizayn
Paternleri, Pusula Yayıncılık, İstanbul, 2014
• Eric Freeman, Head First Design Patterns, O'Reilly
Media,2004
• Stephen Stelting & Olav Maassen, Applied Java™
Patterns, Prentice Hall PTR ,2001
• http://www.AlgoritmaveProgramlama.com
• http://www.tutorialspoint.com/
• http://www.buraksenyurt.com/post/AntiPatterns-Ders-
Notlarc4b1m.aspx
YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 48: Yazılım Mimarisi ve Tasarımı...Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Volkan TUNALI Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği](https://reader030.vdocuments.net/reader030/viewer/2022040208/5e264d2dfdf719475630464b/html5/thumbnails/48.jpg)
48
İYİ ÇALIŞMALAR…
Yrd. Doç. Dr. Volkan TUNALI
YZM 2118 Yazılım Mimarisi ve Tasarımı