Özet - Sınıflar
- Dart kursu
- Orta seviye
- Ders 6/116
- 5 dk
named, const ve factory constructor'ları birleştirerek bir Point sınıfı yazarsın.
Özet - Sınıflar
Bu grupta dört yapıcı türünü gördün: default, named, const ve factory. Hepsini bir Point sınıfında birleştireceğiz.
Bir Point sınıfı hem const Point(this.x, this.y) default constructor'ı, hem const Point.origin() : x = 0, y = 0 named constructor'ı, hem de factory Point.fromList(list) factory constructor'ı içerebilir. Her biri farklı bir başlatma senaryosu sunar; sınıf tek, başlatma yolları çoktur. Son adımda üçünü birden yazıp çağıracağız.
Uygulama Point'e named + const ekle
Point sınıfını tanımla; final double x ve final double y alanlarını ekle. const Point(this.x, this.y) default constructor'ını yaz. const Point.origin() : x = 0, y = 0 named constructor'ını ekle. main içinde const p = Point.origin(); ile örnek oluştur ve print(p.x) ile print(p.y) çağrılarını yap.
Başlangıç kodu
// Point sınıfını tanımla
// final x ve y alanları, const Point ve const Point.origin() ekle
void main() {
// const p = Point.origin() örneğini oluştur ve p.x ile p.y yazdır
}Örnek çözüm
// Point sınıfını tanımla
class Point {
final double x;
final double y;
const Point(this.x, this.y);
const Point.origin() : x = 0, y = 0;
}
void main() {
const p = Point.origin();
print(p.x);
print(p.y);
}Beklenen çıktı
0.0 0.0
Point'e factory ekle
Üçüncü adımda Point sınıfına bir factory constructor ekleyeceğiz. Bu factory, bir listeden örnek üretsin: factory Point.fromList(List<double> list) { return Point(list[0], list[1]); }.
Bu sayede kullanıcı hem Point(3, 4) ile doğrudan, hem Point.origin() ile sıfır noktası, hem Point.fromList([3, 4]) ile liste üzerinden örnek oluşturabilir. Üç yapıcı türü de aynı sınıfta yan yana durur ve her biri farklı bir kullanım senaryosuna hizmet eder. Factory'nin gövdesinde return zorunludur.
Uygulama Point'e fromList factory'sini ekle
Var olan Point sınıfını koru (final x, final y, const Point ve const Point.origin). Sınıfa factory Point.fromList(List<double> list) { return Point(list[0], list[1]); } factory constructor'ını ekle. main içinde var q = Point.fromList([3, 4]); ile örnek oluştur ve print(q.x) ile print(q.y) çağrılarını yap.
Başlangıç kodu
class Point {
final double x;
final double y;
const Point(this.x, this.y);
const Point.origin() : x = 0, y = 0;
// factory Point.fromList ekle
}
void main() {
// Point.fromList([3, 4]) örneğini oluştur ve q.x ile q.y yazdır
}Örnek çözüm
class Point {
final double x;
final double y;
const Point(this.x, this.y);
const Point.origin() : x = 0, y = 0;
factory Point.fromList(List<double> list) {
return Point(list[0], list[1]);
}
}
void main() {
var q = Point.fromList([3, 4]);
print(q.x);
print(q.y);
}Beklenen çıktı
3.0 4.0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hangi constructor önbelleğe uygun?
- default
- factory Doğru cevap
- const
- named
Açıklama: factory, var olan örneği döndürebildiği için önbellek desenine uyar.