Top Banner
YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1
46

YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

Dec 28, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

YZM 2108

Yazılım Mimarisi ve Tasarımı

Yrd. Doç. Dr. Deniz KILINÇ

Celal Bayar Üniversitesi

Hasan Ferdi Turgutlu Teknoloji Fakültesi

Yazılım Mühendisliği

1

Page 2: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

BÖLÜM - 3

Tasarım Prensipleri

2

Bu bölümde;

Tasarım Prensipleri

ile ilgili konular anlatılacaktır.

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 3: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

1. Ayrıştırma (Decomposition)

2. Kohezyon (Cohesion)

3. Tek Sorumluluk Prensibi (Single Responsibility)

4. Zayıf Bağlaşım Prensibi (Low Coupling)

5. Yeniden Kullanılabilirlik prensibi (Reusability)

6. Açık – Kapalı Prensibi (OCP)

7. Liskov Yerine Geçme Prensibi (LSP)

8. Bağımlılığı Ters Çevirme Prensibi (DIP)

3

Tasarım Prensipleri

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 4: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

4

5. Yeniden Kullanılabilirlik (Reusability)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Yeniden kullanılabilirlik nesne yönelimli

programlamanın en önemli özelliklerinden biridir

ve çoğu zaman, yanlış bir yaklaşımla sadece

kalıtımdan ibaret olduğu sanılır.

• Oysa kalıtım yeniden kullanılabilirliği sağlama

noktasında her zaman yeterli olmaz.

• Salt kalıtım yerine, kalıtım ile birlikte nesneler

arasında kompozisyon kurgulanmalıdır.

Page 5: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

5

5. Yeniden Kullanılabilirlik (Reusability) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Yandaki gibi bir raporlama sınıfı

yazıldığında, Rapor sınıfına

gereğinden fazla sorumluluk

yüklenmiştir. Bu sınıftan

türetilen sınıflar yeniden

kullanıma doğru bir örnek teşkil

etmemektedirler.

• Doğru olan yaklaşım Rapor

sınıfının içinde bu işlemleri

kodlamak yerine, veri tabanı ve

yazıcı işlemlerinin ayrı sınıflarda

yapılması ve bu sınıflarla bir

composition sağlanmasıdır.

Page 6: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

6

5. Yeniden Kullanılabilirlik (Reusability) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Doğru Tasarımı:

Page 7: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

7

Black Box ve White Box Kavramları

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• GoF doktrin’de yeniden kullanılabilirlik bu kavramlarla

ikiye ayrılmıştır:

– White Box sınıf türetmesine dayalıdır ve salt türetme bazı

tasarımsal sakıncalar doğurabilmektedir.

– Black Box ise nesne kompozisyonuna dayalıdır.

• Yani önceki örnekte ele alınan Rapor sınıfı gibi sarmalayıcı bir

sınıf, VeriTabanilslemleri ve YaziciIslemleri sınıflarına ait

nesneleri kullanarak, yani composition yaparak, "black box

reusability" sağlamaktadır.

Page 8: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

8

6. Açık/Kapalı Prensibi (OCP)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Değişim gerektirmeyen yazılımın ömrü bitmiştir.

• Yazılımlar, kullanıcı beklentileri değiştikçe değişime

uğramaktadır.

• Bu noktada yapılması gereken şey yazılım sisteminin

herhangi bir yerindeki değişimin başka yerlerde de

zincirleme değişim gerektirmeyecek şekilde

tasarlanmasıdır.

• Böylece ufak bir değişimde oluşabilecek kargaşa

engellenmiş olur. Değişim kargaşasını önlemek için

esnemez tasarımlardan uzak durulmalıdır.

Page 9: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

9

6. Açık/Kapalı Prensibi (OCP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Sistemler gelişime açık, ancak değişime kapalı olmalıdır.

Bertnard Meyer

• Bu prensibe göre, sistemlerdeki değişimleri kodları

değiştirerek gerçekleştirmek yerine yeni kod blokları

eklenerek yapılması öngörülmektedir.

Page 10: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

10

6. Açık/Kapalı Prensibi (OCP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Yandaki UML ile gösterilen

Dortgen ve Cember sınıfları

Sekil sınıfından türetilmiştir. Bu

sınıflar Ciz sınıfı ile

composition yapmaktadır.

• Ciz sınıfı verilen parametreye

bağlı olarak şekli çizecek

fonksiyonu çalıştıracaktır.

• Böyle bir tasarım esnemezdir ve

dolayısıyla kırılgandır.

• Sekil sınıfından yeni bir şekil

sınıfı türetildiğinde Ciz sınıfında

da değişmesi gerekecektir.

Page 11: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

Celal Bayar Üniversitesi 11

6. Açık/Kapalı Prensibi (OCP) (devam...)

Sekil.java Dortgen.java

Cember.java

Page 12: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

Celal Bayar Üniversitesi 12

6. Açık/Kapalı

Prensibi (OCP)(devam...)

Ciz.java

Page 13: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

13

6. Açık/Kapalı Prensibi (OCP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Doğru tasarım Sekil sınıfının soyut sınıf ya da ara yüz şeklinde

tanımlanarak yapılabilir. Bu sınıftan türetilen sınıflar da kendi

ihtiyaçlarına göre implemente edilmelidir.

Page 14: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

Celal Bayar Üniversitesi 14

6. Açık/Kapalı Prensibi (OCP) (devam...)

Sekil.java Dortgen.java

Cember.java

Page 15: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

Celal Bayar Üniversitesi 15

6. Açık/Kapalı Prensibi (OCP) (devam...)

Ciz.java

Page 16: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

16

7. Liskov Yerine Geçme Prensibi (LSP)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Barbara Liskov tarafından formüle edilen ve

Açık-Kapalı prensibi ile yakından ilgili olan bu

prensip, türemiş sınıf nesnelerinin taban sınıf

nesnesi yerine geçmesini öngörür.

• Daha açık bir ifadeyle, taban sınıf türündeki

nesne üzerinde operasyon yapacak şekilde

geliştirilmiş bir fonksiyon, bu sınıftan türeyen

farklı sınıflara ait nesneler üzerinde de aynı

operasyonu yapabilmelidir.

Page 17: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

17

7. Liskov Yerine Geçme Prensibi (LSP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Bu prensip türemiş sınıf türündeki nesnelerin

taban sınıfa ait nesnelere atanması halinde

gerçekleşen otomatik tür dönüşümünden

(upcast) faydalanır.

Page 18: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

18

7. Liskov Yerine Geçme Prensibi (LSP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Örnek:

• Veritabanından bağımsız bir veri katmanı yazılmak

istenmiştir.

• Bu yapı yeni veri tabanları için yeni sınıf eklenebilirliği

gerekmemesiyle hem Açık-Kapalı prensibine, hem de

DBHelper türünden aldığı parametreden dolay Liskov

prensibiyle uygundur.

Page 19: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

19

7. Liskov Yerine Geçme Prensibi (LSP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Örnek: DBHelper tasarımı

Page 20: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

20

7. Liskov Yerine Geçme Prensibi (LSP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Örnek: DBHelper.java

Page 21: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

21

7. Liskov Yerine Geçme Prensibi (LSP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Örnek: SQLHelper.java

Page 22: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

22

7. Liskov Yerine Geçme Prensibi (LSP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Örnek: OracleHelper.java

Page 23: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

23

7. Liskov Yerine Geçme Prensibi (LSP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Örnek: Program.java

Page 24: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

24

7. Liskov Yerine Geçme Prensibi (LSP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Örnek: Program çıktısı

Page 25: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

25

8. Bağımlılığı Ters Çevirme Prensibi (DIP)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Bağımlılığı Ters Çevirme prensibi (Dependency

Inversion Principle) yüksek seviyeli sınıfların,

aşağı seviyeli sınıflarla doğrudan bir

bağımlılığının olmamasını öngörmektedir.

• Bağımlılığın artmaması için

– yüksek seviyeli sınıflar ile

– düşük seviyeli sınıfların arasına

bir ara yüz ya da soyut sınıf sokulması

gerekmektedir.

Page 26: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

26

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Düşük seviyeli sınıflar, uygulamadaki temel

işlevleri yerine getirirler.

– Örn.: Stok takip uygulamasında kota bilgilerini

alan Finder sınıfı ya da sayfada bu bilgileri

göstermeye yarayan Renderer sınıfı gibi

sınıflardır.

• Öte yandan bu sınıfları kullanarak çalışan Stock

sınıfı ise yüksek seviyeli bir sınıftır. Yüksek

seviyeli sınıflar aşağı seviyeli sınıfları anlamlı

kılarlar.

Page 27: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

27

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının KÖTÜ tasarımı:

Page 28: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

28

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının KÖTÜ tasarımı:

Finder.java

Page 29: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

29

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının KÖTÜ tasarımı:

Renderer.java

Page 30: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

30

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının KÖTÜ tasarımı:

Stock.java

Page 31: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

31

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının KÖTÜ tasarımı:

Page 32: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

32

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının İYİ tasarımı:

Page 33: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

33

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının İYİ tasarımı:

Page 34: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

34

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının İYİ tasarımı:

IFinder.java

Page 35: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

35

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının İYİ tasarımı:

Page 36: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

36

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının İYİ tasarımı:

wsFinder.java

Page 37: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

37

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının İYİ tasarımı:

DBFinder.java

Page 38: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

38

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının İYİ tasarımı:

Page 39: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

39

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının İYİ tasarımı:

IRenderer.java

Page 40: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

40

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının İYİ tasarımı:

Page 41: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

41

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının İYİ tasarımı:

WebRender.java

Page 42: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

42

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının İYİ tasarımı:

ConsoleRender.java

Page 43: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

43

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının İYİ tasarımı:

Page 44: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

44

Bağımlılığı Ters Çevirme Prensibi (DIP) (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Stock sınıfının İYİ tasarımı:

Stock.java

Page 45: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

Yararlanılan Kaynaklar

45

• 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

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 46: YZM 2108 Yazılım Mimarisi ve Tasarımı...16 7. Liskov Yerine Geçme Prensibi (LSP) Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı •Barbara Liskov tarafındanformüleedilen

46

İYİ ÇALIŞMALAR…

Yrd. Doç. Dr. Deniz KILINÇ

[email protected]

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı