CodeBlanks Logo Icon CodeBlanks

Proje tasarımı

Uzman finali mini uygulamasının iskeletini tasarlarsın.

Proje tasarımı

Uzman finalınde küçük bir native matematik servisi kuracağız. Amaç, FFI, kod üretimi (codegen) ve mimari desenlerini gerçek bir mini uygulamada birleştirmek.

Bu derste projenin iskeletini tasarlayacağız: bir MathService soyut sınıfı ve bir int add(int a, int b) sözleşme metodu. Sonraki derslerde FFI bağlaması, kod üretimi, repository ve DI katmanlarını ekleyeceğiz.

Her dersin başlangıç kodu bir önceki dersin çözümünü içerecek; böylece projeyi adım adım büyüteceksin. Son derste tüm parçalar bir MathApp kabuğunda birleşecek.

Servis sözleşmesi

MathService, projenin çekirdek sözleşmesidir. int add(int a, int b) metodu iki tam sayıyı toplar. Bu soyut sınıf, hem FFI tabanlı hem sahte (mock) uygulamalar için ortak arayüzdür.

Soyut sınıf kullanmanın avantajı: main somut sınıfa değil arayüze bağımlı olur. Sonraki derslerde NativeMathService (FFI) ve testlerde sahte servis aynı arayüzü uygulayacak.

Bu ayrım, dependency inversion ilkesine uyar: üst katman (main) alt katmana (somut servis) değil, arayüze bağımlıdır. Değişiklik tek bir yere yayılır.

Uygulama MathService iskeletini kur

Bir abstract class MathService tanımla: int add(int a, int b); soyut metodu. main içinde print('servis hazır'); ekle.

Başlangıç kodu

main.dart
void main() {
  // MathService soyut sınıfını tanımla (add metodu)
  // main içinde servis hazır yazdır
}

Örnek çözüm

main.dart
abstract class MathService {
  int add(int a, int b);
}

void main() {
  print('servis hazır');
}

Beklenen çıktı

servis hazır

Soru ve cevaplar

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

1 Bu projenin amacı ne?

  • Yalnızca veritabanı açmak
  • Yalnızca arayüz çizmek
  • Yalnızca test yazmak
  • FFI, codegen ve mimariyi birleştirmek Doğru cevap

Açıklama: proje üç uzman konusunu gerçek bir uygulamada birleştirir.

2 Soyut sınıf anahtarı

Soru
____ class MathService {
  int add(int a, int b);
}
Cevap
abstract class MathService {
  int add(int a, int b);
}

Açıklama: abstract class ile bir sözleşme tanımlanır.

3 Sözleşme parçalarını eşleştir

Kavram Anlamı
MathService Soyut servis
add(int, int) Toplama sözleşmesi
main Giriş noktası
abstract Soyutlama anahtarı

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