Menu
CoddyTech

Konstruktor Konstan

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

Constructor konstan membuat object konstan pada waktu kompilasi. Saat kamu membuat object dengan nilai yang sama menggunakan constructor const, Dart menggunakan kembali instance yang sama di memori sehingga meningkatkan performa.

Untuk membuat konstruktor konstan, tambahkan kata kunci const sebelum nama konstruktor, dan pastikan semua variabel instance adalah final:

class Color {
  final int red;
  final int green;
  final int blue;

  const Color(this.red, this.green, this.blue);
}

const white = Color(255, 255, 255);
const alsoWhite = Color(255, 255, 255);

print(identical(white, alsoWhite)); // true

white dan alsoWhite sama-sama menunjuk ke object yang persis sama di memori karena keduanya dibuat dengan nilai identik menggunakan konstruktor konstan.

Kamu juga bisa menggunakan constructor const tanpa kata kunci const, yang membuat instance biasa (nonkonstan):

var red = Color(255, 0, 0);       // Instans biasa
const blue = Color(0, 0, 255);    // Instans konstan

Konstruktor const umum digunakan untuk object konfigurasi yang tidak dapat diubah, nilai yang telah ditentukan seperti warna atau ukuran, dan di mana pun kamu ingin memastikan object tidak dapat diubah sekaligus mengoptimalkan penggunaan memori.

challenge icon

Tantangan

Mudah

Mari kita buat sistem konfigurasi untuk game sederhana yang menggunakan konstruktor const untuk menentukan pengaturan yang tidak dapat diubah dan dapat digunakan kembali.

Kamu akan membuat dua file untuk mengatur kodemu:

  • difficulty.dart: Tentukan class Difficulty yang mewakili pengaturan tingkat kesulitan game. Class-mu harus memiliki:
    • Tiga field final: name (String), enemyCount (int), dan playerLives (int)
    • Konstruktor const yang menginisialisasi ketiga field
    • Method display() yang mencetak informasi tingkat kesulitan
  • main.dart: Impor class tingkat kesulitanmu dan buat tiga preset tingkat kesulitan const:
    • easy dengan nama 'Easy', 5 musuh, dan 5 nyawa
    • medium dengan nama 'Medium', 10 musuh, dan 3 nyawa
    • hard dengan nama 'Hard', 20 musuh, dan 1 nyawa
    Buat ketiganya sebagai konstanta waktu kompilasi menggunakan kata kunci const. Lalu panggil display() pada setiap preset sesuai urutan di atas. Terakhir, periksa apakah dua object const Difficulty('Easy', 5, 5) identik menggunakan identical() dan cetak hasilnya.

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

[name]: [enemyCount] enemies, [playerLives] lives

Output yang diharapkan:

Easy: 5 enemies, 5 lives
Medium: 10 enemies, 3 lives
Hard: 20 enemies, 1 lives
true

Coba sendiri

import 'difficulty.dart';

void main() {
  // TODO: Buat tiga preset tingkat kesulitan konstan menggunakan kata kunci const:
  // - easy: nama 'Easy', 5 enemies, 5 lives
  // - medium: nama 'Medium', 10 enemies, 3 lives
  // - hard: nama 'Hard', 20 musuh, 1 nyawa
  
  // TODO: Panggil display() pada setiap tingkat kesulitan secara berurutan: easy, medium, hard
  
  // TODO: Periksa apakah dua object const Difficulty('Easy', 5, 5) identik
  // menggunakan identical() dan cetak hasilnya
}
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