Menu
Coddy logo textTech

İsimlendirilmiş Yapıcılar

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

Adlandırılmış yapıcılar, bir sınıf için her biri amacını netleştiren açıklayıcı bir isme sahip olan birden fazla yapıcı oluşturmanıza olanak tanır. Bu, bir nesneyi başlatmak için farklı yollara ihtiyaç duyduğunuzda özellikle yararlıdır.

Söz dizimi, sınıf adının ardından bir nokta ve kurucu adının kullanılması şeklindedir:

class Point {
  int x;
  int y;

  // Normal kurucu
  Point(this.x, this.y);

  // Başlangıç noktası için isimlendirilmiş kurucu
  Point.origin() : x = 0, y = 0;

  // Tek bir değerden isimlendirilmiş kurucu
  Point.diagonal(int value) : x = value, y = value;
}

Her bir isimlendirilmiş kurucu (named constructor), nesne oluşturmak için net ve okunabilir bir yol sunar:

Point p1 = Point(3, 5);
Point p2 = Point.origin();
Point p3 = Point.diagonal(10);

print('p1: (${p1.x}, ${p1.y})'); // p1: (3, 5)
print('p2: (${p2.x}, ${p2.y})'); // p2: (0, 0)
print('p3: (${p3.x}, ${p3.y})'); // p3: (10, 10)

İsimlendirilmiş kurucular kodunuzu daha açıklayıcı hale getirir. Point(0, 0) ifadesinin ne anlama geldiğini tahmin etmek yerine, Point.origin() niyeti anında iletir. Bu desen Dart kütüphanelerinde yaygındır ve kendi kendini belgeleyen kodlar oluşturmaya yardımcı olur.

challenge icon

Görev

Kolay

Adlandırılmış kurucuların (named constructors) gücünü gösteren bir sıcaklık dönüştürücü oluşturalım. Başladığınız birime bağlı olarak farklı şekillerde başlatılabilen bir Temperature sınıfı oluşturacaksınız.

Kodunuzu iki dosya halinde düzenleyeceksiniz:

  • temperature.dart: Bir double celsius örnek değişkenine sahip bir Temperature sınıfı tanımlayın. Sınıfınız bir sıcaklık oluşturmak için üç yol sunmalıdır:
    • Doğrudan bir Celsius değeri alan normal bir kurucu Temperature(this.celsius)
    • Bir Fahrenheit değeri kabul eden ve bunu (fahrenheit - 32) * 5 / 9 formülünü kullanarak Celsius'a dönüştüren adlandırılmış bir kurucu Temperature.fromFahrenheit
    • Donma noktasında (0 santigrat derece) bir sıcaklık oluşturan adlandırılmış bir kurucu Temperature.freezing()
    Şunu yazdıran bir display() metodu ekleyin: [celsius]C
  • main.dart: Sıcaklık sınıfınızı içe aktarın ve üç sıcaklık nesnesi oluşturun:
    • 25.0 değeri ile normal kurucuyu kullanan bir nesne
    • 98.6 değeri ile fromFahrenheit kurucusunu kullanan bir nesne
    • freezing() kurucusunu kullanan bir nesne
    Yukarıda listelenen sırayla her bir sıcaklık nesnesi üzerinde display() metodunu çağırın.

Beklenen çıktı formatı:

25.0C
37.0C
0.0C

Kopya kağıdı

İsimlendirilmiş kurucular (named constructors), bir sınıf için amaçlarını netleştiren açıklayıcı isimlerle birden fazla kurucu oluşturmanıza olanak tanır.

Sözdizimi, sınıf adının ardından bir nokta ve kurucu adının gelmesiyle oluşur:

class Point {
  int x;
  int y;

  // Normal kurucu
  Point(this.x, this.y);

  // Başlangıç noktası için isimlendirilmiş kurucu
  Point.origin() : x = 0, y = 0;

  // Tek bir değerden isimlendirilmiş kurucu
  Point.diagonal(int value) : x = value, y = value;
}

İsimlendirilmiş kurucuların kullanımı:

Point p1 = Point(3, 5);
Point p2 = Point.origin();
Point p3 = Point.diagonal(10);

print('p1: (${p1.x}, ${p1.y})'); // p1: (3, 5)
print('p2: (${p2.x}, ${p2.y})'); // p2: (0, 0)
print('p3: (${p3.x}, ${p3.y})'); // p3: (10, 10)

İsimlendirilmiş kurucular, niyeti açıkça belirterek kodun daha ifade edici ve kendi kendini belgeleyen bir yapıda olmasını sağlar.

Kendin dene

import 'temperature.dart';

void main() {
  // TODO: 25.0 ile normal yapıcıyı (constructor) kullanarak bir Temperature oluşturun
  
  // TODO: 98.6 ile fromFahrenheit kullanarak bir Temperature oluşturun
  
  // TODO: freezing() kullanarak bir Temperature oluşturun
  
  // TODO: Her bir sıcaklık üzerinde sırasıyla display() 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