Menu
CoddyTech

Initializer Lists

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

Daftar inisialisasi adalah kode yang muncul setelah titik dua dalam konstruktor, sebelum isi konstruktor. Kode ini dijalankan sebelum isi konstruktor dieksekusi dan digunakan untuk menginisialisasi variabel instance.

Kamu sudah melihat daftar inisialisasi di pelajaran sebelumnya:

Point.origin() : x = 0, y = 0;

Bagian setelah titik dua (x = 0, y = 0) adalah daftar inisialisasi. Beberapa inisialisasi dipisahkan dengan koma.

Daftar inisialisasi penting saat bekerja dengan variabel final, yang harus diatur sebelum isi konstruktor dijalankan:

class Circle {
  final double radius;
  final double area;

  Circle(double r)
      : radius = r,
        area = 3.14159 * r * r;
}

Circle c = Circle(5);
print(c.radius); // 5.0
print(c.area);   // 78.53975

Daftar inisialisasi juga dapat melakukan perhitungan atau transformasi pada parameter konstruktor sebelum menetapkan nilainya. Ini berguna saat kamu perlu mendapatkan nilai turunan atau memvalidasi data selama pembuatan object.

Kamu dapat menggabungkan sintaks singkat this. dengan daftar inisialisasi:

class Rectangle {
  final double width;
  final double height;
  final double area;

  Rectangle(this.width, this.height)
      : area = width * height;
}

Rectangle rect = Rectangle(4, 5);
print(rect.area); // 20.0

Di sini, width dan height ditetapkan melalui bentuk singkat, sedangkan area dihitung dalam daftar inisialisasi menggunakan nilai-nilai tersebut.

challenge icon

Tantangan

Mudah

Mari buat kalkulator dimensi box yang menggunakan daftar inisialisasi untuk menghitung nilai turunan saat object dibuat.

Kamu akan mengatur kodemu dalam dua file:

  • box.dart: Definisikan class Box yang merepresentasikan box 3D dengan dimensi dan property yang dihitung secara otomatis. Class-mu harus memiliki:
    • Tiga field final double: length, width, dan height
    • Dua field final double hasil perhitungan: volume dan surfaceArea
    • Sebuah konstruktor yang menerima length, width, dan height menggunakan singkatan this., serta menggunakan daftar inisialisasi untuk menghitung volume (length × width × height) dan surfaceArea (2 × (length×width + width×height + height×length))
    • Sebuah method display() yang mencetak informasi box
  • main.dart: Impor class box-mu dan buat dua box:
    • Box dengan dimensi 3.0, 4.0, 5.0
    • Box dengan dimensi 2.0, 2.0, 2.0
    Panggil display() pada setiap box sesuai urutan yang tercantum.

Method display() harus mencetak dengan format persis seperti ini:

Box: [length]x[width]x[height] | Volume: [volume] | Surface: [surfaceArea]

Output yang diharapkan:

Box: 3.0x4.0x5.0 | Volume: 60.0 | Surface: 94.0
Box: 2.0x2.0x2.0 | Volume: 8.0 | Surface: 24.0

Coba sendiri

import 'box.dart';

void main() {
  // TODO: Buat kotak dengan dimensi 3.0, 4.0, 5.0
  
  // TODO: Buat kotak dengan dimensi 2.0, 2.0, 2.0
  
  // TODO: Panggil display() pada setiap kotak 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