Sobes.tech
Junior

Soyutlamanın özü nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Flutter'da soyutlama, genel olarak programlamada olduğu gibi, karmaşık uygulamaları gizlemeye ve etkileşim için basitleştirilmiş bir arayüz sağlamaya indirgenir. Bu, altta yatan detayları gizleyen ve kavramlar üzerinde çalışmaya izin veren yüksek seviyeli görünümler oluşturarak başarılır.

Ana fikirler:

  • Detayların gizlenmesi: Karmaşık mantık veya veri yapıları, basit bir arayüzün arkasına gizlenir.
  • Kullanımın basitleştirilmesi: Geliştirici, uygulama detaylarına girmeden soyut bir temsil ile etkileşime geçer.
  • Esnekliğin artırılması: İç uygulamada yapılan değişiklikler, arayüz değişmediği sürece, onu kullanan kodu etkilemez.
  • Yeniden kullanılabilirlik: Soyut bileşenler, uygulamanın farklı bölümlerinde kullanılabilir.

Flutter'daki örnekler:

  • Widgetlar: Widgetlar, kullanıcı arayüzü öğeleri üzerinde soyutlamalardır. Container, Row, Column ve diğerlerini kullanıyoruz, iç uygulama detaylarını bilmeden.
  • Asenkron programlama: Future ve Stream, asenkron işlemlerle çalışmayı soyutlar, akışlar ve olaylar ile ilgili detayları gizler.
  • Mimari desenler: BLoC, Provider veya Riverpod gibi desenlerin kullanımı, UI ve iş mantığını ayıran bir soyutlama biçimidir.

Soyutlama kullanan kod örneği:

// Veri kaynağı için soyut sınıf
abstract class DataSource {
  Future<String> fetchData();
}

// HTTP kullanan uygulama
class HttpDataSource implements DataSource {
  @override
  Future<String> fetchData() async {
    // HTTP isteği ile ilgili karmaşık mantık burada
    return "HTTP'den veriler";
  }
}

// Yerel depolama kullanan uygulama
class LocalDataSource implements DataSource {
  @override
  Future<String> fetchData() async {
    // Yerel depolama ile ilgili karmaşık mantık burada
    return "Yerel depolamadan veriler";
  }
}

// DataSource soyutlamasını kullanan sınıf
class Repository {
  final DataSource dataSource;

  Repository(this.dataSource);

  Future<String> getData() {
    return dataSource.fetchData();
  }
}

Bu örnekte, Repository sadece DataSource soyutlamasıyla etkileşir, verilerin nereden geldiğiyle ilgilenmez (HTTP, yerel depolama vb.). Bu, veri kaynağını kolayca değiştirmeye olanak tanır, Repository kodunu değiştirmeden.