Azərbaycanca AzərbaycancaDeutsch Deutsch日本語 日本語Lietuvos Lietuvosසිංහල සිංහලTürkçe TürkçeУкраїнська УкраїнськаUnited State United State
Destek
www.wikipedia.tr-tr.nina.az
  • Vikipedi

SOLID nesne yönelimli programlama ve yazılım tasarımı için önerilen beş temel prensibin baş harflerinden oluşan bir kısa

SOLID

SOLID
www.wikipedia.tr-tr.nina.azhttps://www.wikipedia.tr-tr.nina.az
TikTok Jeton Satışı

SOLID, nesne yönelimli programlama ve yazılım tasarımı için önerilen beş temel prensibin baş harflerinden oluşan bir kısaltmadır. Bu prensipler, yazılımın daha anlaşılır, esnek, sürdürülebilir ve bakımı kolay olmasını sağlamayı amaçlar. SOLID prensipleri, Amerikalı yazılım mühendisi ve eğitmen Robert C. Martin tarafından ilk olarak 2000 yılında yayımlanan "Tasarım İlkeleri ve Tasarım Modelleri" (Design Principles and Design Patterns) makalesinde tanıtılmıştır.

image
SOLID Yazılım İlkeleri

"SOLID" kısaltması, 2004 yılı civarında Michael Feathers tarafından, Robert C. Martin’in ilkelerini sistematik biçimde adlandırmak üzere önerilmiştir.

Bu ilkeler özellikle çevik yazılım geliştirme (agile development) ve uyarlanabilir yazılım metodolojilerinde temel felsefe olarak benimsenmiştir.

S-O-L-I-D Kısaltması

SOLID ilkeleri şunlardır:

  • S - Tek sorumluluk ilkesi (Single Responsibility Principle)
  • O - Açıklık-kapalılık ilkesi (Open/Closed Principle)
  • L - Liskov'un Yerine Geçme İlkesi (Liskov Substitution Principle)
  • I - Arayüz ayrımı ilkesi (Interface Segregation Principle)
  • D - Bağımlılığın tersine çevrilmesi ilkesi (Dependency Inversion Principle)

SOLID İlkeleri

Tek sorumluluk ilkesi (Single Responsibility Principle - SRP)

Bir sınıfın değişmesi için yalnızca bir nedeni olmalıdır. Her sınıf veya modül yalnızca tek bir sorumluluğa sahip olmalıdır.

  • Tek sorumluluk ilkesine uymayan sorunlu kod örneği:

Hem veri kaydeden hem de raporlayan tek bir sınıf.

class Rapor { void VeritabaninaKaydet() { /* ... */ } void RaporOlustur() { /* ... */ } } 
  • Tek sorumluluk ilkesini uygulayan kod örneği:

Her sınıfın sadece bir sorumluluğu var.

class RaporOlusturucu { void RaporOlustur() { /* ... */ } } class RaporKaydedici { void VeritabaninaKaydet() { /* ... */ } } 

Açıklık-kapalılık ilkesi (Open/Closed Principle - OCP)

Yazılım varlıkları (arayüzler(soyutlama/interface), sınıflar, modüller, fonksiyonlar vb.) genişletmeye açık, ancak değişikliğe kapalı olmalıdır. Yani mevcut kodu değiştirmek yerine yeni işlevsellik eklemek için kodun genişletilmesi gerekir.

abstract class Sekil { public abstract double Alan(); } class Dikdortgen : Sekil { public override double Alan() { /* ... */ } } class Daire : Sekil { public override double Alan() { /* ... */ } } 

Liskov'un yerine geçme ilkesi (Liskov Substitution Principle - LSP)

Alt sınıflardan oluşturulan nesneler, üst sınıfın nesneleri ile yer değiştirdiklerinde aynı davranışı sergilemelidir. Barbara Liskov tarafından 1987'de tanımlanan bu ilke, türetilmiş sınıfların, temel sınıfların yerine sorunsuzca kullanılabilmesini sağlar.

Aşağıdaki örnekte Devekuşu, Kuş yerine geçemediği için LSP ihlal edilmiş olur.

class Kus { public virtual void Uc() { /* ... */ } } class DeveKusu : Kus { public override void Uc() { throw new Exception("Deve kuşu uçamaz!"); } } 

Arayüz ayrımı ilkesi (Interface Segregation Principle - ISP)

İstemciler, kullanmadığı arayüzlere(interface) bağımlı olmamalıdır veya bağımlı olmaya zorlanmamalıdır. Büyük ve genel arayüzler yerine, daha küçük ve özelleşmiş arayüzler oluşturulmalıdır.

interface IYazici { void Yazdir(); } interface ITarayici { void Tara(); } class CokFonksiyonluYazici : IYazici, ITarayici { /* ... */ } class BasitYazici : IYazici { /* ... */ } 

Bağımlılıkların tersine çevrilmesi ilkesi (Dependency Inversion Principle - DIP)

Bu ilke temel olarak 2 ilkeye dayanır.

1- Üst seviye modüller, alt seviye modüllere bağlı olmamalıdır.

2- Üst seviye modüller arayüzler veya soyutlamalara bağımlı olmalıdır.

interface IMesajGonderici { void Gonder(string mesaj); } class EpostaGonderici : IMesajGonderici { public void Gonder(string mesaj) { /* ... */ } } class Bildirim { private IMesajGonderici gonderici; public Bildirim(IMesajGonderici gonderici) { this.gonderici = gonderici; } public void Bildir(string mesaj) { gonderici.Gonder(mesaj); } } 

Önemi ve Etkileri

SOLID prensipleri yazılım geliştirme sürecinde aşağıdaki katkıları sağlar:

  • Kodun yeniden kullanılabilirliğini artırır
  • Sistemin bakımını ve genişletilmesini kolaylaştırır
  • Daha test edilebilir ve modüler sistemler sağlar
  • destekler

Ayrıca bakınız

  • Nesne yönelimli programlama
  • Tasarım desenleri (Design Patterns)
  • (Clean Kod)
  • Kalıtım

Kaynakça

  1. ^ "ArticleS.UncleBob.PrinciplesOfOod". butunclebob.com. 25 Ekim 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Mayıs 2025. 
  2. ^ Martin, Robert C. (2000). "Design Principles and Design Patterns" (PDF). 6 Eylül 2015 tarihinde kaynağından (PDF) arşivlendi. 
  3. ^ "Getting a SOLID start. - Clean Coder". web.archive.org. 17 Eylül 2013. 17 Eylül 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Mayıs 2025. 
  4. ^ Confreaks (24 Mart 2015), GORUCO 2009 - SOLID Object-Oriented Design by Sandi Metz, 29 Şubat 2020 tarihinde kaynağından arşivlendi, erişim tarihi: 2 Mayıs 2025 
  5. ^ Martin, Robert C. (12 Eylül 2017). Clean Architecture: A Craftsman's Guide to Software Structure and Design. Prentice Hall. ISBN . 
  6. ^ Sandi Metz (May 2009). "SOLID Object-Oriented Design". YouTube. 29 Şubat 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 13 Ağustos 2019. 
  7. ^ Agile Software Development, Principles, Patterns, and Practices. Prentice Hall. 2003. s. 95. ISBN . 6 Kasım 2021 tarihinde kaynağından arşivlendi |arşiv-url= kullanmak için |url= gerekiyor ().  |erişim-tarihi= kullanmak için |url= gerekiyor ()
  8. ^ "Open/Closed Principle" (PDF). 5 Eylül 2015 tarihinde kaynağından (PDF) arşivlendi. 
  9. ^ "Liskov Substitution Principle" (PDF). 5 Eylül 2015 tarihinde kaynağından (PDF) arşivlendi. 
  10. ^ "Interface Segregation Principle" (PDF). 1996. 5 Eylül 2015 tarihinde kaynağından (PDF) arşivlendi. 
  11. ^ "Dependency Inversion Principle" (PDF). 5 Eylül 2015 tarihinde kaynağından (PDF) arşivlendi. 
  12. ^ Martin, Robert C. (12 Eylül 2017). Clean Architecture: A Craftsman's Guide to Software Structure and Design (İngilizce). Prentice Hall. ISBN . 

wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar

SOLID nesne yonelimli programlama ve yazilim tasarimi icin onerilen bes temel prensibin bas harflerinden olusan bir kisaltmadir Bu prensipler yazilimin daha anlasilir esnek surdurulebilir ve bakimi kolay olmasini saglamayi amaclar SOLID prensipleri Amerikali yazilim muhendisi ve egitmen Robert C Martin tarafindan ilk olarak 2000 yilinda yayimlanan Tasarim Ilkeleri ve Tasarim Modelleri Design Principles and Design Patterns makalesinde tanitilmistir SOLID Yazilim Ilkeleri SOLID kisaltmasi 2004 yili civarinda Michael Feathers tarafindan Robert C Martin in ilkelerini sistematik bicimde adlandirmak uzere onerilmistir Bu ilkeler ozellikle cevik yazilim gelistirme agile development ve uyarlanabilir yazilim metodolojilerinde temel felsefe olarak benimsenmistir S O L I D KisaltmasiSOLID ilkeleri sunlardir S Tek sorumluluk ilkesi Single Responsibility Principle O Aciklik kapalilik ilkesi Open Closed Principle L Liskov un Yerine Gecme Ilkesi Liskov Substitution Principle I Arayuz ayrimi ilkesi Interface Segregation Principle D Bagimliligin tersine cevrilmesi ilkesi Dependency Inversion Principle SOLID IlkeleriTek sorumluluk ilkesi Single Responsibility Principle SRP Bir sinifin degismesi icin yalnizca bir nedeni olmalidir Her sinif veya modul yalnizca tek bir sorumluluga sahip olmalidir Tek sorumluluk ilkesine uymayan sorunlu kod ornegi Hem veri kaydeden hem de raporlayan tek bir sinif class Rapor void VeritabaninaKaydet void RaporOlustur Tek sorumluluk ilkesini uygulayan kod ornegi Her sinifin sadece bir sorumlulugu var class RaporOlusturucu void RaporOlustur class RaporKaydedici void VeritabaninaKaydet Aciklik kapalilik ilkesi Open Closed Principle OCP Yazilim varliklari arayuzler soyutlama interface siniflar moduller fonksiyonlar vb genisletmeye acik ancak degisiklige kapali olmalidir Yani mevcut kodu degistirmek yerine yeni islevsellik eklemek icin kodun genisletilmesi gerekir abstract class Sekil public abstract double Alan class Dikdortgen Sekil public override double Alan class Daire Sekil public override double Alan Liskov un yerine gecme ilkesi Liskov Substitution Principle LSP Alt siniflardan olusturulan nesneler ust sinifin nesneleri ile yer degistirdiklerinde ayni davranisi sergilemelidir Barbara Liskov tarafindan 1987 de tanimlanan bu ilke turetilmis siniflarin temel siniflarin yerine sorunsuzca kullanilabilmesini saglar Asagidaki ornekte Devekusu Kus yerine gecemedigi icin LSP ihlal edilmis olur class Kus public virtual void Uc class DeveKusu Kus public override void Uc throw new Exception Deve kusu ucamaz Arayuz ayrimi ilkesi Interface Segregation Principle ISP Istemciler kullanmadigi arayuzlere interface bagimli olmamalidir veya bagimli olmaya zorlanmamalidir Buyuk ve genel arayuzler yerine daha kucuk ve ozellesmis arayuzler olusturulmalidir interface IYazici void Yazdir interface ITarayici void Tara class CokFonksiyonluYazici IYazici ITarayici class BasitYazici IYazici Bagimliliklarin tersine cevrilmesi ilkesi Dependency Inversion Principle DIP Bu ilke temel olarak 2 ilkeye dayanir 1 Ust seviye moduller alt seviye modullere bagli olmamalidir 2 Ust seviye moduller arayuzler veya soyutlamalara bagimli olmalidir interface IMesajGonderici void Gonder string mesaj class EpostaGonderici IMesajGonderici public void Gonder string mesaj class Bildirim private IMesajGonderici gonderici public Bildirim IMesajGonderici gonderici this gonderici gonderici public void Bildir string mesaj gonderici Gonder mesaj Onemi ve EtkileriSOLID prensipleri yazilim gelistirme surecinde asagidaki katkilari saglar Kodun yeniden kullanilabilirligini artirir Sistemin bakimini ve genisletilmesini kolaylastirir Daha test edilebilir ve moduler sistemler saglar desteklerAyrica bakinizNesne yonelimli programlama Tasarim desenleri Design Patterns Clean Kod KalitimKaynakca ArticleS UncleBob PrinciplesOfOod butunclebob com 25 Ekim 2016 tarihinde kaynagindan arsivlendi Erisim tarihi 2 Mayis 2025 Martin Robert C 2000 Design Principles and Design Patterns PDF 6 Eylul 2015 tarihinde kaynagindan PDF arsivlendi Getting a SOLID start Clean Coder web archive org 17 Eylul 2013 17 Eylul 2013 tarihinde kaynagindan arsivlendi Erisim tarihi 2 Mayis 2025 Confreaks 24 Mart 2015 GORUCO 2009 SOLID Object Oriented Design by Sandi Metz 29 Subat 2020 tarihinde kaynagindan arsivlendi erisim tarihi 2 Mayis 2025 Martin Robert C 12 Eylul 2017 Clean Architecture A Craftsman s Guide to Software Structure and Design Prentice Hall ISBN 978 0 13 449432 6 Sandi Metz May 2009 SOLID Object Oriented Design YouTube 29 Subat 2020 tarihinde kaynagindan arsivlendi Erisim tarihi 13 Agustos 2019 Agile Software Development Principles Patterns and Practices Prentice Hall 2003 s 95 ISBN 978 0135974445 6 Kasim 2021 tarihinde kaynagindan arsivlendi arsiv url kullanmak icin url gerekiyor yardim erisim tarihi kullanmak icin url gerekiyor yardim Open Closed Principle PDF 5 Eylul 2015 tarihinde kaynagindan PDF arsivlendi Liskov Substitution Principle PDF 5 Eylul 2015 tarihinde kaynagindan PDF arsivlendi Interface Segregation Principle PDF 1996 5 Eylul 2015 tarihinde kaynagindan PDF arsivlendi Dependency Inversion Principle PDF 5 Eylul 2015 tarihinde kaynagindan PDF arsivlendi Martin Robert C 12 Eylul 2017 Clean Architecture A Craftsman s Guide to Software Structure and Design Ingilizce Prentice Hall ISBN 978 0 13 449432 6

Yayın tarihi: Temmuz 04, 2025, 09:15 am
En çok okunan
  • Aralık 09, 2025

    Criollolar

  • Aralık 07, 2025

    Clark Blaise

  • Aralık 06, 2025

    Clara (anlam ayrımı)

  • Aralık 12, 2025

    Claire Chazal

  • Aralık 22, 2025

    Circuit Bremgarten

Günlük
  • Tiger II

  • Ağır tank

  • Hesaplamalı elektromanyetizma

  • Elektromanyetik spektrum

  • Işık

  • Frekans tepkisi

  • 23 Aralık

  • Arjantin

  • Miraz Bezar

  • Sargon (Akad kralı)

NiNa.Az - Stüdyo

  • Vikipedi

Bültene üye ol

Mail listemize abone olarak bizden her zaman en son haberleri alacaksınız.
Temasta ol
Bize Ulaşın
DMCA Sitemap Feeds
© 2019 nina.az - Her hakkı saklıdır.
Telif hakkı: Dadaş Mammedov
Üst