Method dan Field Static
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 20 dari 110.
Sekarang setelah kamu memahami perbedaan antara member instance dan static, mari pelajari cara menggunakan method dan field static secara efektif. Member static cocok untuk fungsionalitas yang merupakan bagian dari konsep class itu sendiri, bukan dari object individual.
Field statis menyimpan data yang digunakan bersama oleh semua instance. Penggunaan umumnya mencakup penghitung, nilai konfigurasi, atau data cache:
class MathHelper {
static const double pi = 3.14159;
static int calculationCount = 0;
static double circleArea(double radius) {
calculationCount++;
return pi * radius * radius;
}
}
print(MathHelper.circleArea(5)); // 78.53975
print(MathHelper.circleArea(3)); // 28.27431
print(MathHelper.calculationCount); // 2Perhatikan bahwa kamu memanggil method statis langsung pada nama class, bukan pada instance. Class MathHelper berfungsi sebagai utility, kamu tidak perlu membuat object MathHelper.
Aturan penting: static method tidak dapat mengakses anggota instance secara langsung. Static method tidak memiliki akses ke this karena tidak terikat pada object tertentu:
class Counter {
int value = 0; // Field instance
static int total = 0; // Field static
void increment() {
value++; // OK, method instance mengakses field instance
total++; // OK, method instance dapat mengakses field static
}
static void reset() {
total = 0; // OK, method static mengakses field static
// value = 0; // Error! Tidak dapat mengakses field instance
}
}Gunakan member statis saat fungsionalitasnya tidak bergantung pada state object, seperti fungsi utilitas, pelacakan factory, atau konstanta bersama.
Tantangan
MudahMari buat class utilitas untuk operasi string yang menunjukkan cara kerja method dan field static secara bersama-sama untuk menyediakan fungsi yang berguna tanpa perlu membuat object.
Kamu akan membuat dua file untuk mengatur kodemu:
string_utils.dart: Definisikan classStringUtilsyang berfungsi sebagai helper utilitas. Class-mu harus memiliki:static const String defaultSeparatoryang diatur ke'-'static int operationCountyang dimulai dari0untuk melacak jumlah operasi yang telah dilakukan- Method static
reverse(String text)yang menambah nilaioperationCountdan mengembalikan string yang dibalik - Method static
join(String first, String second)yang menambah nilaioperationCountdan mengembalikan dua string yang digabungkan dengandefaultSeparator - Method static
countVowels(String text)yang menambah nilaioperationCountdan mengembalikan jumlah huruf vokal (a, e, i, o, u, tanpa membedakan huruf besar dan kecil) - Method static
getStats()yang mengembalikan string berisi jumlah keseluruhan operasi yang telah dilakukan
main.dart: Impor class utilitasmu dan gunakan method static-nya:- Panggil
reverse()dengan'hello'dan cetak hasilnya - Panggil
join()dengan'dart'dan'lang', lalu cetak hasilnya - Panggil
countVowels()dengan'Programming'dan cetakVowels: [count] - Cetak statistik menggunakan
getStats()
- Panggil
Ingat, panggil semua method langsung pada nama class karena method tersebut static. Kamu tidak akan membuat object StringUtils.
Method getStats() harus mengembalikan teks dengan format berikut:
Operations performed: [operationCount]Output yang diharapkan:
olleh
dart-lang
Vowels: 3
Operations performed: 3Coba sendiri
import 'string_utils.dart';
void main() {
// TODO: Panggil reverse() dengan 'hello' dan cetak hasilnya
// TODO: Panggil join() dengan 'dart' dan 'lang', lalu cetak hasilnya
// TODO: Panggil countVowels() dengan 'Programming' dan cetak "Vowels: [count]"
// TODO: Cetak statistik menggunakan getStats()
}
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