Dart
Özet - Sınıflar
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.
Örnek çözümü göster
// 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);
}
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.
Örnek çözümü göster
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);
}
Kendini test et
-
Hangi constructor önbelleğe uygun?
Cevabı göster
factory — factory, var olan örneği döndürebildiği için önbellek desenine uyar.
Sıradaki ders: extends