# SOLID (Tek Sorumluluk, Açık–Kapalı, Liskov Yerine Geçme, Arayüz Ayrımı, Bağımlılığın Tersine Çevrilmesi)

Adres: https://softwaredictionary.org/tr/terimler/solid
Kategori: Yazılım Mimarisi
Son güncelleme: 2026-09-29

Kısaca: SOLID, geliştiricilerin daha anlaşılır, genişletilebilir, test edilebilir ve bakımı kolay kod yazmasına yardım eden beş nesne yönelimli tasarım ilkesidir.

## SOLID ilkeleri nelerdir?

SOLID, yazılım mühendisi Robert C. Martin'in 2000'lerin başında yaygınlaştırdığı, sınıf ve modül tasarımına dair beş yönergenin kısaltmasıdır. Her harf bir ilkeyi temsil eder ve birlikte kodun esnek kalmasını, yani yeni özellikler eklenirken mevcut olanların bozulmamasını amaçlar. En çok nesne yönelimli programlamada konuşulur, ancak fikirler birçok kod türüne uygulanabilir.

S, Tek Sorumluluk İlkesi'dir (Single Responsibility): bir sınıfın değişmesi için yalnızca tek bir neden olmalıdır. O, Açık–Kapalı İlkesi'dir (Open–Closed): kod genişletmeye açık, değiştirmeye kapalı olmalıdır; yani yeni davranışı çalışan kodu düzenleyerek değil, yeni kod yazarak eklersiniz. L, Liskov Yerine Geçme İlkesi'dir (Liskov Substitution): bir alt sınıf, üst sınıfının beklendiği her yerde çalışabilmelidir.

I, Arayüz Ayrımı İlkesi'dir (Interface Segregation): sınıfları ihtiyaç duymadıkları metotları uygulamaya zorlayan tek bir büyük arayüz yerine, birkaç küçük ve odaklı arayüz daha iyidir. D, Bağımlılığın Tersine Çevrilmesi İlkesi'dir (Dependency Inversion): üst düzey kod, belirli bir veritabanı sınıfı gibi somut ayrıntılara değil, arayüz gibi soyutlamalara bağımlı olmalıdır.

İyi düzenlenmiş bir alet çantası güzel bir benzetmedir: her alet tek bir işi yapar, yeni aletler eskilerine dokunmadan eklenebilir ve doğru ölçüdeki her tornavida aynı vidaya uyar. SOLID ilkeleri katı yasalar değil, yönergelerdir; fazla sıkı uygulanırsa çok sayıda küçücük sınıf ve gereksiz soyutlama katmanı ortaya çıkabilir.

## Önemli noktalar

- S: Tek Sorumluluk, değişmek için tek bir neden.
- O: Açık–Kapalı, mevcut kodu düzenlemeden davranışı genişletmek.
- L: Liskov Yerine Geçme, alt sınıflar üst sınıflarının yerine güvenle geçebilmeli.
- I: Arayüz Ayrımı, küçük ve odaklı arayüzleri tercih etmek.
- D: Bağımlılığın Tersine Çevrilmesi, somut sınıflara değil soyutlamalara bağımlı olmak.

## Örnek: TypeScript'te Bağımlılığın Tersine Çevrilmesi

```typescript
// Depend on an interface, not on a concrete class
interface Notifier {
  send(message: string): void;
}

class EmailNotifier implements Notifier {
  send(message: string) { console.log("Email:", message); }
}

class OrderService {
  constructor(private notifier: Notifier) {} // any Notifier works here
  placeOrder() { this.notifier.send("Order placed"); }
}

new OrderService(new EmailNotifier()).placeOrder();
```

## Sık sorulan sorular

**SOLID neyin kısaltmasıdır?**

SOLID; Tek Sorumluluk (Single Responsibility), Açık–Kapalı (Open–Closed), Liskov Yerine Geçme (Liskov Substitution), Arayüz Ayrımı (Interface Segregation) ve Bağımlılığın Tersine Çevrilmesi (Dependency Inversion) ilkelerinin baş harflerinden oluşur.

**Tek Sorumluluk İlkesi nedir?**

Tek Sorumluluk İlkesi, bir sınıf ya da modülün değişmesi için yalnızca tek bir neden olması gerektiğini, yani sistemin davranışının yalnızca bir bölümünden sorumlu olduğunu söyler. Örneğin hem fatura hesaplayan hem de e-posta gönderen bir sınıf genellikle ikiye bölünmelidir.

**SOLID ilkeleri nesne yönelimli programlama dışında da geçerli mi?**

Evet. Küçük ve odaklı birimler ile soyutlamalara bağımlılık gibi altta yatan fikirler, ifade biçimi nesne yönelimli tasarımdan gelse de fonksiyonel ve modüler kodda da yararlıdır.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
