Constructor Temelleri
Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 8 / 110.
Bir yapıcı (constructor), yeni bir nesne oluşturduğunuzda otomatik olarak çalışan özel bir metottur. Nesnenin örnek değişkenlerini tam oluşturulma anında başlatır.
İşte bir yapıcı (constructor) içeren sınıf örneği:
class Dog {
String name;
String breed;
Dog(String name, String breed) {
this.name = name;
this.breed = breed;
}
}Yapıcı metot (constructor) sınıf ile aynı isme sahiptir. Parametreler nesne oluşturulurken iletilir.
Kurucu metoda argümanlar ileterek nesneler oluşturun:
Dog rex = Dog('Rex', 'German Shepherd');
Dog buddy = Dog('Buddy', 'Golden Retriever');Yapıcı (constructor) tarafından ayarlanan değişkenlere erişin:
print(rex.name);
print(rex.breed);
print(buddy.name);
print(buddy.breed);Çıktı:
Rex
German Shepherd
Buddy
Golden RetrieverDart ayrıca, parametre listesinde doğrudan this.variableName kullanarak kısa yol yapıcı (constructor) sözdizimi sunar:
class Dog {
String name;
String breed;
// Kısa yol: parametreleri otomatik olarak örnek değişkenlerine atar
Dog(this.name, this.breed);
}Her iki sürüm de aynı sonucu verir. Kısa yazım, this.name = name ifadesini manuel olarak yazma ihtiyacını ortadan kaldıran popüler bir Dart özelliğidir.
Ayrıca varsayılan parametre değerleri de ekleyebilirsiniz:
class Cat {
String name;
int age;
Cat(this.name, [this.age = 1]); // age varsayılan olarak 1 olur
}
Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // age varsayılan olarak 1 olur
print('${fluffy.name} is ${fluffy.age}'); // Fluffy is 3
print('${whiskers.name} is ${whiskers.age}'); // Whiskers is 1Önemli Nokta: Yapıcılar (Constructors), her nesnenin oluşturulduğu anda verilerle düzgün bir şekilde başlatılmasını sağlayarak sizi daha sonra değişkenleri manuel olarak ayarlama zahmetinden kurtarır.
Görev
KolayBir kitap sistemi uygulamak için size PHP dosyaları (book.dart ve driver.dart) verilmiştir.
Görevleriniz:
book.dartdosyasındakiBooksınıfını;title,authorvepagesdeğişkenlerini başlatan bir yapıcı (constructor) ekleyerek tamamlayın — Dart kısa yazım sözdizimi olanBook(this.title, this.author, this.pages);kullanın.driver.dartdosyasında,'J.K. Rowling'tarafından yazılan,400sayfalık'Harry Potter'için birBooknesnesi oluşturun.
Her dosyadaki TODO yorumlarını takip edin.
Kopya kağıdı
Yapıcı (constructor), yeni bir nesne oluşturduğunuzda otomatik olarak çalışan özel bir metottur. Nesnenin örnek değişkenlerini (instance variables) oluşturulma anında başlatır.
Yapıcı, sınıfla aynı ada sahiptir:
class Dog {
String name;
String breed;
Dog(String name, String breed) {
this.name = name;
this.breed = breed;
}
}Yapıcıya argümanlar göndererek nesneler oluşturun:
Dog rex = Dog('Rex', 'German Shepherd');Dart, parametre listesinde doğrudan this.variableName kullanarak kısa bir yapıcı söz dizimi sunar:
class Dog {
String name;
String breed;
Dog(this.name, this.breed);
}İsteğe bağlı konumsal parametreleri (optional positional parameters) kullanarak varsayılan parametre değerleri ekleyebilirsiniz:
class Cat {
String name;
int age;
Cat(this.name, [this.age = 1]); // age varsayılan olarak 1 olur
}
Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // age varsayılan olarak 1 olurKendin dene
import 'book.dart';
void main() {
// TODO: Şu özelliklere sahip bir Book nesnesi oluşturun:
// title: 'Harry Potter', author: 'J.K. Rowling', pages: 400
Book myBook = ?;
print("'${myBook.title}' by ${myBook.author}, ${myBook.pages} pages");
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarKütüphaneler ve ImportlarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar KelimesiMetotlarÖrnek DeğişkenleriConstructor TemelleriÖzet - Basit Hesap Makinesi4Null Safety
Null Safety'ye GirişNullable ve Non-Nullable? ve ! OperatörleriLate Anahtar Kelimesi ve Null SafetyNull-Aware OperatörleriSınıflarda Null SafetyÖzet - Kullanıcı Profili Sistemi7Soyut Sınıflar ve Arayüzler
Soyut SınıflarSoyut MetotlarDart'ta ArayüzlerÖrtük ArayüzlerUygulama vs. GenişletmeÇoklu ArayüzlerÖzet - Şekil Hesaplayıcı10Koleksiyonlar ve Generic'ler
List, Set, Map Genel BakışTip Güvenli KoleksiyonlarGeneric SınıflarGeneric MetotlarGeneric KısıtlamalarIterable ve IteratorÖzet - Generic Depolama2Dart'ta Yapıcılar
Varsayılan Yapıcıİsimlendirilmiş Yapıcılarİlklendirme ListeleriSabit YapıcılarFabrika YapıcılarıYönlendiren YapıcılarÖzet - Şekil Oluşturucu5Kapsülleme
Public ve Private Üyeler_ Öneki KuralıKütüphane Düzeyinde GizlilikGetter ve Setter DetaylarıBilgi GizlemeÖzet - Öğrenci Kayıtları8Mixin'ler
Mixin'lere GirişMixin OluşturmaBirden Fazla Mixin KullanımıMixin'lerde on Anahtar KelimesiMixin vs KalıtımMixin vs ArayüzÖzet - Hayvan Sistemi11Özel Metotlar
toString() OverridehashCode ve == OverrideComparable Arayüzücall() MetodunoSuchMethod OverrideÖzet - Özel Koleksiyon14Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıObserver KalıbıStrategy Kalıbı17Final Meydan Okumaları
E-Öğrenme PlatformuBankacılık SistemiOyun Karakter SistemiAraç Kiralama Servisi3Sınıf Özellikleri
Instance ve Statik ÜyelerFinal ve Const AlanlarLate DeğişkenlerStatik Metotlar ve AlanlarGetters ve SettersÖzet - Banka Hesabı Yöneticisi6Kalıtım
Temel Kalıtımsuper Anahtar KelimesiMetot Ezme@override Anotasyonufinal Sınıf Anahtar KelimesiYapıcı Metotlar ve KalıtımÖzet - Çalışan Hiyerarşisi9Çok Biçimlilik
Çok Biçimlilik TemelleriInterface'ler ile Çok BiçimlilikÇalışma Zamanı Tip Kontrolüis ve as OperatörleriCovariant Anahtar KelimesiÖzet - Ödeme İşlemcisi12Asenkron OOP
Futures ve async/awaitStream TemelleriStream Controller'larAsenkron KurucularSınıf Metotlarında Asenkron KullanımıÖzet - Data Fetcher15Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit KalıbıRepository Kalıbı