50
Bilgiyi Paylaşım Günleri YZM2108 Ders Uygulamaları Tuğrul Can Şöllü

CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Embed Size (px)

Citation preview

Page 1: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Bilgiyi Paylaşım Günleri

YZM2108 Ders Uygulamaları

Tuğrul Can Şöllü

Page 2: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 2

Yazılım Ürünü Nedir?

•Müşterinin gereksinim ve isteklerini karşılayan, bir ya da daha fazla Programdan,Veriden,Destekleyici materyalden ve Hizmetlerden oluşan bir varlıktır.

Page 3: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 3

Yazılım Tasarımı Nedir?

Yazılım tasarımı, müşterinin gereksinim ve isteklerini karşılayan yazılım

ürününün doğasını ve bileşimini belirleme etkinliğidir.

• Yazılım tasarımında soyutlama önemli bir yere sahiptir. • Soyutlama kısaca nesnelerin veya

durumların bazı özelliklerinin görmezden gelinmesidir. • Soyutlama karmaşık problemlerin

çözümünü kolaylaştırır.

Page 4: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 4

Yazılım Tasarımı Nedir?

Bir sistemin tasarımının yapılabilmesi için problemler ve çözümleri modellenir.

• Modelleme temel tasarım aracıdır.

Page 5: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 5

Tasarım Kalıpları Nedir?

Tasarım kalıpları sıklıkla karşılaşılan sorunlar için sunulan standartlaştırılmış

genel çözümlerdir.

Tarihçe - I• Christopher Alexander

isminde bir mimar, inşaat çalışmalarında sıklıkla karşılaşılan sorunların çözümü için tasarım kalıpları terimini kullandı.

Page 6: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 6

Tasarım Kalıpları Nedir? (devam...)

Tarihçe - II

• Sonrasında bu yöntemi Alexander’in arkadaşları olan Ward Cunningham ve Kent Beck yazılım sorunları için uyarladılar.

• Bu yöntem popüler hale geldi, sonrasında Erich Gamma, Richard Helm, Ralph Johnson ve John Vlissides tasarım kalıpları için kapsamlı bir kitap çıkardılar. Bu dörtlü ayrıca Gang of Four (GoF) olarak da biliniyorlar.

• Çıkardıkları kitap yanda gösterilen Design Patterns: Elements of Reusable Object – Oriented Software’dir.

Page 7: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 7

Tasarım Kalıpları Nedir? (devam...)

Gang of Four Tasarım Kalıpları

Önceki slaytta bahsedilen bu dörtlü, kitaplarında 23 ayrı tasarım kalıbını 3 farklı kategoride incelediler:

1. Creational (5 Adet) : Nesneleri nasıl yaratalım ?

2. Stuctural (7 Adet) : Nesneleri birbiri ile nasıl ilişkilendirelim ?

3. Behavioral (11 Adet) : Nesneler çalışma zamanında nasıl davransınlar ?

Page 8: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 8

Tasarım Kalıpları Nedir? (devam...)

Tasarım Kalıpları Nasıl Kullanılır1. Problemler ufak parçalara bölünür, önceden karşılaşılmış olanlar belirlenir.2. «Önceki problem nasıl çözüldü?» şeklinde düşünülüp, kullanılan çözüm genellenir. 3. Genellenen çözüm yöntemi o anki probleme adapte edilir.

Page 9: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 9

Tasarım Kalıpları Nedir? (devam...)

Tasarım Kalıplarının Kullanılmasının Faydaları:

1. Kullanılan kalıpların katalogları yapılabilinir.

2. Standartlaştırılabilirler, böylece diğer kullanıcıların daha kolay karar vermelerini sağlarlar.

3. Ortak bir kelime haznesi (jargon) sağlarlar.

4. Birbirleriyle ilişkilendirilebilirler.

5. Tecrübelerin aktarılmasını sağlarlar. Tekerleği tekrardan icat edilmesine gerek kalmaz.

Page 10: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 10

Kötü Tasarım Belirtileri

• Yazılımın çalışıyor olması ve beklenileni vermesi, arka tarafta iyi ya da kötü bir tasarım olduğunu anlamamıza yardımcı olmaz. • Kalite: Tanımı kişiden kişiye değişir, genel

olarak beklenileni karşılaması kaliteyi gösterir. Örneğin bir yazılım ürününü düşünün;• Patron: «5 lira yatırayım bu ürüne 7,5 lira verirse

kalitelidir.»• Veznedar: «Hızlı ve takılmadan çalışıyorsa

kalitelidir.»• Geliştirici: «Kodlama standartlarına uyulmuş, iyi

belgelendirilmiş ve düzgün tasarlanmışsa kalitelidir.»

Page 11: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 11

Kötü Tasarım Belirtileri (devam...)

• Yazılım Kalitesi: Açıkca tanımlanmış işlev ve gereksinimlere

uyan (Geliştirici)Kullanıcının isteklerine yanıt veren,

(Veznedar)Yazılım geliştirme standartlarına sadık,

(Geliştirici)Yüksek güvenilirlikli, (Veznedar, Patron)Teslim sonrası destek verebilen (Geliştirici,

Veznedar)

Page 12: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 12

Kötü Tasarım Belirtileri (devam...)

Peki bu yazılım kalitesi iyi hoş, fakat nasıl sağlanır? 1. Hataları Ayıklayarak

1. Doğrulama ve Geçerleme (Verification&Validation)- Doğru işi mi yapıyorum?- İşi doğru yaptım mı ?

2. Hataları Önleyerek1. Kalite Güvence(Q&A)2. Test Güdümlü Geliştirme(TDD)

Hata önleme, hata ayıklamadan daha önemli niye?

Page 13: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 13

Kötü Tasarım Belirtileri (devam...)

Yazılım Kalitesini 3 şey belirler:1. Çalışma Özellikleri

- Bu yazılım çalışırken sahip olması gereken özellikler

2. Gelişme Özellikleri- Bu yazılım geliştirilirken sahip olması gereken özellikler

3. Uyumluluk Özellikleri- Yazılım geliştirildikten sonra sahip olması gereken özellikler

Page 14: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 14

Kötü Tasarım Belirtileri (devam...)

1.Çalışma Özellikleri1. Doğruluk: İstekler doğru ve hassas

karşılanmalı2. Güvenilirlik: İşlevsel kesinti olmamalı3. Verimlilik: Donanımı iyi kullanmalı4. Korunaklılık: Yetkilendirme ile yetkisiz

kişilerin yanlış işlemler yapması önlenmeli5. Kullanılabilirlik: Kullanıcı kolayca alışıp

kullanabilmeli

Page 15: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 15

Kötü Tasarım Belirtileri (devam...)

2. Gelişme Özellikleri1. Bakım yapılabilirlik: Bakım yapan kişiye

tertipli bir kod ve iyi belgelendirilmiş sistem bırakılmalı

2. Esneklik: Sistem öyle tasarlansın ki sonra yapılacak değişiklikler sisteme zarar vermesin

3. Test Edilebilirlik: Test edilebilen kodlar yazılmalı

Page 16: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 16

Kötü Tasarım Belirtileri (devam...)

3. Uyumluluk Özellikleri1. Taşınabilirlik: Donanım ya da yazılım

ortamına bağlı olmasın2. Tekrar Kullanılabilirlik: Copy-paste’e ihtiyaç

duyulmasın, en ufak birime kadar ayrışıp bu biirmler tekrardan kullanılsın

3. Uyumluluk: Geliştirdiğiniz sistem önceki sistemin bulunduğu ortamdaki sistemlerle uyumlu olmalı

Page 17: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 17

Kötü Tasarım Belirtileri (devam...)

• Yazılım kalitesi, geri bildirimler ve kod kalitesinin incelenmesi ile ölçülür. • Kötü Tasarımlar 3 önemli özelliğe sahiptir:

1. Esnemezler: Sistem, bir yerindeki herhangi bir değişikliğe çok direnç gösterir.

2. Kırılgandır: Değişiklik sonrası sistem zarar görür. Hatta çöker(Katastrofi).

3. İmmobilite: Taşınabilir değildirler. Tekrardan kullanılamazlar.

Page 18: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Yazılım Tasarım Prensipleri

18Bilgiyi Paylaşım Günleri – YZM 2108

Page 19: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Yazılım Tasarım Prensipleri

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 19

Ayrıştırma (Decomposition) Kohezyon(Cohesion) Zayıf Bağlaşım Prensibi (Low Coupling Principle) SOLID nedir?

1. Single Responsibilty Principle

2. Open – Closed Principle

3. Liskov Substitution Principle

4. Interface Segregation Principle

5. Dependency Inversion Principle

Page 20: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Ayrıştırma (Decomposition)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 20

• Karmaşık yazılım sistemlerinde karışıklığın azalması için alt birimlere bölünmesi olayıdır. İlgili varlıklar (alt birimler) tespit edilir ve nesne olarak ifade edilirler. • Sistemi alt birimlere bölme işlemine ayıca

Böl ve Fethet (Divide and Conquer) da denmektedir. • «Bu sistem nasıl çalışacak?» sorusu

yerine «Bu sistemde hangi nesneler olmalı?» sorusunun cevabı düşünülür.

Page 21: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Ayrıştırma (Decomposition) (devam...)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 21

Fonksiyonel Ayrıştırma - I• Karmaşık bir süreç ele alınır, daha sade

ve küçük birimlere bölünür. • Bir ATM’den işlem yapmayı düşünelim.

Atm kullanarak işlem yapmak istediğinizde izleyeceğiniz adımlar

1. İlgili bankanın ATM’sini bul ve önüne git,2. Kartını slota yerleştir,3. PIN’i gir, sonrasında istediğin işleme(para

yatırma & çekme) devam et.

Page 22: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Ayrıştırma (Decomposition) (devam...)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 22

Fonksiyonel Ayrıştırma - II• Bu süreci programlama esnasında da

aynı şekilde parçalara ayırabilirsiniz. ATM’deki yazılım o anda;

1. Kartın bilgilerini okur,2. PIN doğrulmasını gerçekleştirir,3. Seçilen işleme aktarır.

Bu adımlar daha da detaylandırılabilir.

Page 23: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Ayrıştırma (Decomposition) (devam...)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 23

Fonksiyonel Ayrıştırma - III• Sistemin en ufak parçasına kadar

ayrıştırıldığında, bu parçaların nasıl kodlanacağı düşünülebilinir. • Sonrasında bu parçalar bir araya

getirilerek tüm sistem oluşturulur.

Page 24: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Kohezyon (Cohesion)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 24

• Nesneler kendi verilerine ve davranışlarına sahiptir.

Örneğin: X kişisi kendi verileri olarak:• Boy,• Kilo,• Yaş, vs.

kendi davranışları ise: • Okuyabilme, • Yazabilme, • Kod Yazabilme olabilir.

Page 25: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Kohezyon (Cohesion) (devam...)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 25

• Nesneler barındırdıkları üyeler ve metotlar arasında mantıksal kopukluk olmamalıdır.• Mantıksal uzaklık kohezyon olarak da

adlandırılmaktadır. • Örneğin bir Ressam nesnesi düşünelim.

Bu nesnenin yüksek seviyeli müzik bilgisine sahip olması beklenmez. Bu bilginin olmasını beklemek Ressam’ın niteliğini çarpıtacağı gibi, kendi alanına yoğunlaşmasını da engelleyebilir.

Page 26: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Kohezyon (Cohesion) (devam...)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 26

• Ya da bir futbol oyuncusunu düşünelim. Bu oyuncu nesnesinin aynı zamanda Eskrim sporu ile ilgili bilgileri bilmesi beklenemez. Mantıksal kopukluk olur. • Bu örneklerdeki gibi, bir sınıfın

içerisindeki tüm fieldları ve metotları (verileri ve davranışları) arasında mantıksal yakınlık bulumalıdır. Bu mantıksal yakınlığa kohezyon denir.

Page 27: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Kohezyon (Cohesion) (devam...)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 27

• Başka bir örnek daha vermek gerekirse bir futbolcu nesnesi düşünelim. • Sizce bir futbolcuyu kaliteli oyuncu yapan

şeyler nelerdir? • Bunların arasında topa vurma teknikleri, koşu

teknikleri gibi bilgileri bulundurması gereklidir. Yani futbolda kullanılan temel bilgilere sahip olmalıdır. • Bu durumda futbolcunun ilgisiz

teknikler yerine kendi tekniklerini ve bilgilerine sahip olması onun kohezyonunun yüksek olmasını sağlar.

Page 28: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Kohezyon (Cohesion) (devam...)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 28

• Nesnelerin kohezyonları yüksek olursa nesneler tek amaca odaklı olurlar. • Bu durum sistemin esnekliğini ve bakım

yapılabilirliğini arttırır. • Yüksek kohezyon nesneyi yeniden

kullanılabilir kılar.

Page 29: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Zayıf Bağlaşım Prensibi

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 29

• Nesneler birbirleri ile ilgili bilgiyi tutmamalıdır. Nesneler arasındaki ilişki arayüz seviyesinde olmalıdır. • Nesnelerin birbirleri arasındaki bağlılığın

ölçütü coupling’dir.

Page 30: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Zayıf Bağlaşım Prensibi (devam...)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 30

• Sınıflar kendi içerisinde tutarlı, diğer sınıflarla ilişiksiz olmalıdır.

Page 31: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Zayıf Bağlaşım Prensibi (devam...)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 31

Page 32: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Zayıf Bağlaşım Prensibi (devam...)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 32

• Kaliteli futbolcu nedir? • Oyuncu kendi yapabileceklerini çok iyi bilmelidir.

Bir diğer deyişle kendini çok iyi tanımalıdır. Buna kohezyonu yüksek olmalı da diyebiliriz.

• Peki, oyundaki performansı takım arkadaşlarına bağlı ise bu futbolcu kaliteli midir? • Eğer birlikte iyi oynadığı takım arkadaşı oyun

dışında kaldığında bu oyuncu iyi oynayamıyorsa bu futbolcu kaliteli midir? • Bu futbolcunun performansı bir takım arkadaşına

bağımlı ise o oyundan çıktığında iyi performans gösteremez.

Page 33: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Zayıf Bağlaşım Prensibi (devam...)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 33

• Kaliteli futbolcu kendi yapabileceklerini çok iyi bilmeli (yüksek kohezyon), bir takım arkadaşına bağımlı olmamalıdır (low coupling). • Takım arkadaşından bağımsız olması, o

oyuncunun farklı takımlarda da aynı performansı gösterebileceği (reusability) anlamına gelir.

Page 34: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Zayıf Bağlaşım Prensibi (devam...)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 34

•Nesneler kendi verisini ve yapabileceklerini çok iyi bilmeli ve diğer nesnelerden bağımsız olmalıdır.

Coupling Türleri - I

1. Nil Coupling: Nesneler arasında hiç bağlılık yok.

2. Export Coupling: Nesneler birbirleriyle arayüzle bağlı. (İDEAL SEVİYEDE)

3. Overt Coupling: Bir sınıf izinler dahilinde idğer sınıfın üyelerini kullanabilmesi.

4. Covert Coupling: Bir sınıfın diğer sınıflarla friend anahtar kelimesi ile bağlı olması (C++)

Page 35: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Zayıf Bağlaşım Prensibi (devam...)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 35

Coupling Türleri - II

5. Surreptitous Coupling: Bir sınıfın tüm içsel detaylarını başka sınıflar biliyor. Bu çok tehlikelidir. Bu seviyedeki coupling Nesneye Yönelik Programlama mantığına da aykırıdır. Sınıfların kullanımı geçersiz kalır. Bunun yerine yapısal programlama ile kodlamak daha iyi olabilir.

Page 36: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Örnek1: Yolcu Nesnesi

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 36

• Bir Yolcu sınıfı tasarlayalım. Sınıfın üye değişkenleri sonraki slayttaki UML’de belirtildi. Bu sınıfın void YolculugaBasla() metodundan aşağıdaki ifadeyi ekrana yazsın:

[YolcuAdi] [YolcuSoyadi] [aracTipi] ile [gidilecekYer] istikametinde yola çıktı.Örnek Çıktı

Page 37: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Örnek1: Yolcu Nesnesi

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 37

KÖTÜ TASARIMI

Page 38: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Örnek1: Yolcu Nesnesi

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 38

Yolcu.java

TAS

AR

IMI

Page 39: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Örnek1: Yolcu Nesnesi

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 39

Otomobil.java

Motorsiklet.java

TAS

AR

IMI

Page 40: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Örnek1: Yolcu Nesnesi

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 40

Tasarımı düzeltmek için uygulanması gereken adımlar:1. Yolcu ile Otomobil ve Motorsiklet

sınıflarının nesnesel ve sınıfsal bağlarını kopart.

2. Yolcu içerisinde IArac interface ile bağ kur.

3. Otomobil ve Motorsiklet, IArac arayüzünü implemente etsin.

Page 41: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Örnek1: Yolcu Nesnesi

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 41

DOĞRU TASARIM

Page 42: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Örnek1: Yolcu Nesnesi

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 42

DOĞRU TASARIMIArac.java

Otomobil.java

Page 43: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Örnek1: Yolcu Nesnesi

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 43

DOĞRU TASARIMYolcu.java

Page 44: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Örnek1: Yolcu Nesnesi

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 44

Not: Her iki tasarım ile aynı sonucu gösterebildik. Tasarımının doğru olanın farkı sonradan eklenecek bir nesnenin sisteme zarar vermeyecek olmasıdır. Sistem esnektir.

Page 45: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Single Responsibility Principle

45Bilgiyi Paylaşım Günleri – YZM 2108

Page 46: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Single Responsibility Principle

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 46

Page 47: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Single Responsibility Principle

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 47

• Bu prensibe göre her sınıfın tek bir görevi olmalıdır. Kohezyon tanımı bu prensibin açıklandığı makalede ilk olarak yapılmıştır. • SRP’ye göre sınıflar tek bir amaç

doğrultusunda yazılmalı ve değiştirilmelidir. Birden fazla amaç var ise ayrıştırmaya daha da devam edilebileceği anlamına gelir.

Page 48: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Örnek2: Dikdortgen Sınıfı

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 48

• Aşağıda UML’i verilen Dikdortgen sınıfını oluşturalım ve kodlayalım.

Page 49: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Örnek2: Dikdortgen Sınıfı (devam...)

15.04.2023 Bilgiyi Paylaşım Günleri – YZM 2108 49

• Dikdortgen sınıfını tek sorumluluk prensibine göre tekrardan oluşturunuz. Coupling’i arayüz seviyesinde tutunuz.

Page 50: CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları

Kaynakça

50

• Aykut Taşdelen, C++, Java ve C# ile UML ve Dizayn Paternleri, Pusula Yayıncılık, İstanbul, 2014

• Microsoft Patterns & Practices Team, Microsoft® Application Architecture Guide (Patterns & Practices), Microsoft Press - Second Edition, 2009

• http://www.tutorialspoint.com• http://www.javaturk.org• http://www.stackoverflow.com• http://www.minepla.net/Bu konular ile ilgili daha kapsamlı sunumlar için: http://algoritmaveprogramlama.com/algoritma-dersleri/yazilim-mimarisi-ve-tasarimi/

Bilgiyi Paylaşım Günleri – YZM 2108