CodeBlanks Logo Icon CodeBlanks

SOLID

SOLID prensiplerini öğrenirsin.

SOLID

SOLID, beş tasarım ilkesidir: Single Responsibility (tek sorumluluk), Open/Closed (açık/kapalı), Liskov (değiştirme), Interface Segregation (arayüz ayrıştırma), Dependency Inversion (bağımlılık tersine).

Single Responsibility: her sınıf tek bir iş yapar. Report veriyi taşır, ReportPrinter çıktı üretir. Bir değişiklik tek sınıfı etkiler.

Dependency Inversion: üst katman alt katmana değil, arayüze bağımlı olur. OrderService somut StripePayment'e değil PaymentService arayüzüne bağımlıdır.

Open/Closed ilkesi

Open/Closed: sınıflar genişletmeye açık, değiştirmeye kapalıdır. Yeni davranış mevcut kodu değiştirilmeden, yeni bir alt sınıf veya arayüz uygulamasıyla eklenir.

Örnek: PaymentService arayüzüne CryptoPayment eklemek, OrderService'i değiştirmez. Sınıf kapalı kalır; sistem açık kalır.

Bu ilke, kalıtım ve polimorfizmi kullanır. Somut sınıflar yerine arayüzler tanımlarsın; yeni davranış yeni bir sınıfla gelir.

Uygulama Report ve ReportPrinter tanımla

Bir Report sınıfı tanımla: final String title; final String content; Report(this.title, this.content);. Bir ReportPrinter sınıfı tanımla: String format(Report r) => '${r.title}: ${r.content}';. main içinde final report = Report('Aylık', 'Satışlar arttı'); yarat; final printer = ReportPrinter(); yarat ve print(printer.format(report)); ekle.

Başlangıç kodu

main.dart
void main() {
  // Report sınıfını tanımla (title, content alanları)
  // ReportPrinter sınıfını tanımla (format metodu)
  // bir report ve bir printer yarat; format ile yazdır
}

Örnek çözüm

main.dart
class Report {
  final String title;
  final String content;
  Report(this.title, this.content);
}

class ReportPrinter {
  String format(Report r) => '${r.title}: ${r.content}';
}

void main() {
  final report = Report('Aylık', 'Satışlar arttı');
  final printer = ReportPrinter();
  print(printer.format(report));
}

Beklenen çıktı

Aylık: Satışlar arttı

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Liskov değiştirme

Soru
class SavingsAccount ____ Account { }
Cevap
class SavingsAccount extends Account { }

Açıklama: alt sınıf extends ile üst sınıfın yerine geçer (Liskov).

2 SOLID ilkelerini eşleştir

Kavram Anlamı
S Tek sorumluluk
O Açık/kapalı
L Liskov değiştirme
I Arayüz ayrıştırma
D Bağımlılık tersine

3 Single Responsibility Principle ne der?

  • Her sınıf bir arayüz uygulamalı
  • Her sınıf genişletilebilir olmalı
  • Her sınıf kapalı olmalı
  • Her sınıf tek bir iş yapmalı Doğru cevap

Açıklama: her sınıf tek bir sorumluluğa sahip olmalıdır.

Uzman bölümündeki tüm dersler