Menu
Coddy logo textTech

Null Güvenliğine Giriş

Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 23 / 110.

Programlamadaki en yaygın hata kaynaklarından biri, mevcut olmayan bir değeri kullanmaya çalışmaktır. Dart'ta bu özel "değer yokluğu" null ile gösterilir. Dart'ın null güvenliği özelliği, kodunuz henüz çalışmadan önce bu hataları yakalamanıza yardımcı olur.

Null güvenliği olmadan, herhangi bir değişken potansiyel olarak null olabilir ve bu da onu kullanmaya çalıştığınızda çalışma zamanı çökmelerine yol açabilir:

// Eski Dart'ta (null safety olmadan)
String name;  // Null olabilir!
print(name.length);  // name null ise çöker

Null güvenliği etkinken (Dart 2.12+), derleyici null değeri tutabilen değişkenler ile tutamayanlar arasındaki farkı ayırt eder. Varsayılan olarak, değişkenler non-nullable (null olamaz) şeklindedir - her zaman geçerli bir değer içermelidirler:

String name = 'Alice';  // Bir değeri olmalı
print(name.length);     // Güvenli - name asla null değildir

Derleyici, null olamayan (non-nullable) bir değişkenin null olabileceği durumlarda kodu derlemeyi reddedecektir. Bu, hata tespitini çalışma zamanından derleme zamanına kaydırarak programlarınızı daha güvenilir hale getirir. Gelecek derslerde, onlara gerçekten ihtiyaç duyduğunuzda null olabilir (nullable) türleri nasıl tanımlayacağınızı ve Dart'ın potansiyel olarak null değerlerle güvenli bir şekilde çalışmak için sunduğu operatörleri öğreneceksiniz.

challenge icon

Görev

Kolay

Null olamayan değişkenlerin önemini gösteren basit bir kişi kartı sistemi oluşturalım. Her kişinin geçerli ve kesin olarak mevcut bilgilere sahip olması gereken bir sistem oluşturacaksınız.

Kodunuzu iki dosyaya ayıracaksınız:

  • contact.dart: Bir kişinin iletişim bilgilerini temsil eden bir Contact sınıfı tanımlayın. Null safety ile çalıştığımız için her alanın geçerli bir değeri olmalıdır; eksik veriye izin verilmez! Sınıfınızda şunlar bulunmalıdır:
    • Kişinin adını tutan bir String firstName
    • Kişinin soyadını tutan bir String lastName
    • Kişinin e-posta adresini tutan bir String email
    • Kişinin telefon numarasındaki basamak sayısını tutan bir int phoneDigits
    • Dört değerin tamamını alan bir kurucu
    • Ad ve soyadı aralarında bir boşluk olacak şekilde birleştirerek döndüren bir fullName getter'ı
    • Kişinin bilgilerini yazdıran bir displayCard() metodu
  • main.dart: Kişi sınıfınızı içe aktarın ve tüm alanların değerlerinin bulunduğunu göstermek için iki kişi oluşturun:
    • Adı 'Emma', soyadı 'Wilson', e-postası 'emma@mail.com' ve telefon basamak sayısı 10 olan bir kişi oluşturun
    • Adı 'James', soyadı 'Brown', e-postası 'james@work.com' ve telefon basamak sayısı 11 olan bir kişi oluşturun
    • Yukarıda listelenen sırayla her kişi üzerinde displayCard() çağrısı yapın

displayCard() metodu tam olarak şu biçimde yazdırmalıdır:

--- Contact Card ---
Name: [fullName]
Email: [email]
Phone digits: [phoneDigits]

Her değişkenin gerçek bir değerle başlatılması gerektiğine dikkat edin; bu, null safety'nin iş başındaki hâlidir! Derleyici, fullName, email veya başka herhangi bir alana eriştiğinizde bunun her zaman geçerli veriler içermesini garanti eder.

Beklenen çıktı:

--- Contact Card ---
Name: Emma Wilson
Email: emma@mail.com
Phone digits: 10
--- Contact Card ---
Name: James Brown
Email: james@work.com
Phone digits: 11

Kendin dene

import 'contact.dart';

void main() {
  // TODO: İlk kişiyi şu bilgilerle oluşturun:
  // - ad: 'Emma'
  // - soyad: 'Wilson'
  // - e-posta: 'emma@mail.com'
  // - telefon basamakları: 10

  // TODO: İkinci kişiyi şu bilgilerle oluşturun:
  // - ad: 'James'
  // - soyad: 'Brown'
  // - e-posta: 'james@work.com'
  // - telefon basamakları: 11

  // TODO: Her kişi üzerinde sırasıyla displayCard() metodunu çağırın
}
quiz iconKendini test et

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

Kendi başına pratik yap: Online Dart derleyicisi