48
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ı

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

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

• 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

• 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

• 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• 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

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

• 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

• 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

• 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

• 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

48

İYİ ÇALIŞMALAR…

Yrd. Doç. Dr. Volkan TUNALI

[email protected]

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