Proje tasarımı
- Dart kursu
- Uzman
- Ders 43/47
- 6 dk
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
void main() {
// MathService soyut sınıfını tanımla (add metodu)
// main içinde servis hazır yazdır
}Örnek çözüm
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ı
____ class MathService {
int add(int a, int b);
}
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ı |