Menu
CoddyTech

Konstruktor Bernama

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 11 dari 110.

Constructor bernama memungkinkan kamu membuat beberapa constructor untuk sebuah class, masing-masing dengan nama deskriptif yang menjelaskan tujuannya. Ini sangat berguna saat kamu memerlukan berbagai cara untuk menginisialisasi sebuah object.

Sintaks menggunakan nama class yang diikuti titik dan nama konstruktor:

class Point {
  int x;
  int y;

  // Konstruktor biasa
  Point(this.x, this.y);

  // Konstruktor bernama untuk titik asal
  Point.origin() : x = 0, y = 0;

  // Konstruktor bernama dari satu nilai
  Point.diagonal(int value) : x = value, y = value;
}

Setiap konstruktor bernama menyediakan cara yang jelas dan mudah dibaca untuk membuat object:

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)

Konstruktor bernama membuat kodemu lebih ekspresif. Daripada menebak arti Point(0, 0), Point.origin() langsung menyampaikan maksudnya. Pola ini umum dalam library Dart dan membantu membuat kode yang mendokumentasikan dirinya sendiri.

challenge icon

Tantangan

Mudah

Mari buat konverter suhu yang menunjukkan keunggulan konstruktor bernama. Kamu akan membuat class Temperature yang dapat diinisialisasi dengan beberapa cara, bergantung pada satuan awalnya.

Kamu akan mengatur kodemu dalam dua file:

  • temperature.dart: Definisikan class Temperature dengan variabel instance double celsius. Class-mu harus menyediakan tiga cara untuk membuat suhu:
    • Konstruktor biasa Temperature(this.celsius) yang menerima nilai Celsius secara langsung
    • Konstruktor bernama Temperature.fromFahrenheit yang menerima nilai Fahrenheit dan mengonversinya ke Celsius menggunakan rumus: (fahrenheit - 32) * 5 / 9
    • Konstruktor bernama Temperature.freezing() yang membuat suhu pada titik beku (0 derajat Celsius)
    Tambahkan method display() yang mencetak: [celsius]C
  • main.dart: Impor class suhu dan buat tiga object suhu:
    • Satu menggunakan konstruktor biasa dengan 25.0
    • Satu menggunakan fromFahrenheit dengan 98.6
    • Satu menggunakan freezing()
    Panggil display() pada setiap suhu sesuai urutan di atas.

Format output yang diharapkan:

25.0C
37.0C
0.0C

Coba sendiri

import 'temperature.dart';

void main() {
  // TODO: Buat Temperature menggunakan konstruktor biasa dengan 25.0
  
  // TODO: Buat Temperature menggunakan fromFahrenheit dengan 98.6
  
  // TODO: Buat Temperature menggunakan freezing()
  
  // TODO: Panggil display() pada setiap suhu secara berurutan
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Dart online