Menu
CoddyTech

Anggota Instance vs Static

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

Dalam class Dart, member (variabel dan method) dapat dimiliki oleh object individual atau oleh class itu sendiri. Memahami perbedaan ini sangat penting untuk mengatur kodemu secara efektif.

Member instance dimiliki oleh setiap object yang kamu buat. Setiap object memiliki salinan variabel instance sendiri, dan method instance bekerja dengan data object tersebut:

class Dog {
  String name;  // Variabel instance
  
  Dog(this.name);
  
  void bark() {  // Method instance
    print('$name says woof!');
  }
}

Dog dog1 = Dog('Buddy');
Dog dog2 = Dog('Max');

dog1.bark();  // Buddy berkata guk!
dog2.bark();  // Max berkata guk!

Setiap object Dog memiliki name sendiri. Mengubah nama seekor anjing tidak memengaruhi anjing lainnya.

Member statis adalah milik class itu sendiri, bukan milik object tertentu. Member ini digunakan bersama oleh semua instance dan diakses menggunakan nama class:

class Dog {
  String name;
  static int totalDogs = 0;  // Variabel statis
  
  Dog(this.name) {
    totalDogs++;
  }
}

Dog dog1 = Dog('Buddy');
Dog dog2 = Dog('Max');

print(Dog.totalDogs);  // 2

Variabel totalDogs digunakan bersama, hanya ada satu salinan terlepas dari berapa banyak object Dog yang ada. Kamu mengaksesnya melalui nama class Dog.totalDogs, bukan melalui instance.

challenge icon

Tantangan

Mudah

Mari buat sistem penghitung pengunjung untuk museum yang melacak kunjungan ke setiap pameran dan statistik museum secara keseluruhan.

Kamu akan mengatur kodemu dalam dua file:

  • exhibit.dart: Definisikan class Exhibit yang mewakili pameran museum. Setiap pameran harus memiliki:
    • Variabel instance name (String) untuk nama pameran
    • Variabel instance visitorCount (int) yang dimulai dari 0 untuk melacak jumlah orang yang mengunjungi pameran ini
    • Variabel statis totalVisitors (int) yang dimulai dari 0 untuk melacak total kunjungan ke semua pameran
    • Konstruktor yang menerima nama pameran
    • Method recordVisit() yang menambah visitorCount pameran dan totalVisitors milik class
    • Method displayStats() yang mencetak informasi pameran
  • main.dart: Impor class pameranmu dan buat dua pameran:
    • Pameran 'Dinosaur Bones'
    • Pameran 'Ancient Egypt'
    Catat 3 kunjungan ke pameran Dinosaur Bones, lalu catat 2 kunjungan ke pameran Ancient Egypt. Setelah semua kunjungan dicatat, panggil displayStats() pada setiap pameran sesuai urutan pembuatannya, lalu cetak total pengunjung di semua pameran.

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

[name]: [visitorCount] visitors

Untuk baris total pengunjung, cetak:

Total museum visitors: [totalVisitors]

Akses variabel statis menggunakan nama class Exhibit.totalVisitors.

Output yang diharapkan:

Dinosaur Bones: 3 visitors
Ancient Egypt: 2 visitors
Total museum visitors: 5

Coba sendiri

import 'exhibit.dart';

void main() {
  // TODO: Buat pameran 'Dinosaur Bones'
  
  // TODO: Buat pameran 'Ancient Egypt'
  
  // TODO: Catat 3 kunjungan ke pameran Dinosaur Bones
  
  // TODO: Catat 2 kunjungan ke pameran Ancient Egypt
  
  // TODO: Panggil displayStats() pada setiap pameran secara berurutan
  
  // TODO: Cetak jumlah seluruh pengunjung museum menggunakan Exhibit.totalVisitors
  // Format: Total museum visitors: [totalVisitors]
}
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