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); // 2Variabel 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.
Tantangan
MudahMari 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 classExhibityang mewakili pameran museum. Setiap pameran harus memiliki:- Variabel instance
name(String) untuk nama pameran - Variabel instance
visitorCount(int) yang dimulai dari0untuk melacak jumlah orang yang mengunjungi pameran ini - Variabel statis
totalVisitors(int) yang dimulai dari0untuk melacak total kunjungan ke semua pameran - Konstruktor yang menerima nama pameran
- Method
recordVisit()yang menambahvisitorCountpameran dantotalVisitorsmilik class - Method
displayStats()yang mencetak informasi pameran
- Variabel instance
main.dart: Impor class pameranmu dan buat dua pameran:- Pameran
'Dinosaur Bones' - Pameran
'Ancient Egypt'
displayStats()pada setiap pameran sesuai urutan pembuatannya, lalu cetak total pengunjung di semua pameran.- Pameran
Method displayStats() harus mencetak dengan format persis seperti ini:
[name]: [visitorCount] visitorsUntuk 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: 5Coba 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]
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
file Eksternallibrary dan ImporPengantar OOPClass dan ObjectKata kunci thismethodVariabel InstanceDasar-Dasar ConstructorRingkasan: Kalkulator Sederhana4Keamanan Null
Pengantar Keamanan NullBisa Null vs Tidak Bisa NullOperator ? dan !Kata Kunci late dan Keamanan NullOperator Penanganan NullKeamanan Null dalam classRangkuman: Sistem Profil Pengguna7class Abstrak & Antarmuka
class AbstrakMethod abstrakAntarmuka di DartAntarmuka ImplisitMengimplementasikan vs MemperluasBeberapa AntarmukaRingkasan: Kalkulator Bentuk10Koleksi dan Generik
Gambaran Umum list, set, dan MapKoleksi dengan Tipe AmanKelas GenerikMetode GenerikBatasan GenerikIterable dan IteratorUlasan: Penyimpanan Generik2Konstruktor dalam Dart
Konstruktor DefaultKonstruktor BernamaInitializer ListsKonstruktor KonstanKonstruktor FactoryKonstruktor RedirectingRangkuman, Pembuat Bentuk5Enkapsulasi
Member Publik vs PrivatKonvensi Prefiks _Privasi Tingkat libraryPendalaman Getter & SetterPenyembunyian InformasiRingkasan: Catatan Siswa8Mixin
Pengantar MixinMembuat MixinMenggunakan Beberapa MixinKata Kunci on pada MixinMixin vs. PewarisanMixin vs. InterfaceRangkuman: Sistem Hewan3Property Class
Anggota Instance vs StaticField Final dan ConstVariabel LateMethod dan Field StaticGetter dan SetterRangkuman: Pengelola Rekening Bank6Pewarisan
Pewarisan DasarKata Kunci superPenimpaan methodAnotasi @overrideKata Kunci class finalKonstruktor dan PewarisanRangkuman, Hierarki Karyawan9Polimorfisme
Dasar-Dasar PolimorfismePolimorfisme melalui AntarmukaPemeriksaan Tipe saat RuntimeOperator is & asKata Kunci KovarianRangkuman: Pemroses PembayaranLatihan sendiri: Compiler Dart online