Menu
CoddyTech

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);  // 2

Perhatikan 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.

challenge icon

Tantangan

Mudah

Mari 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 class StringUtils yang berfungsi sebagai helper utilitas. Class-mu harus memiliki:
    • static const String defaultSeparator yang diatur ke '-'
    • static int operationCount yang dimulai dari 0 untuk melacak jumlah operasi yang telah dilakukan
    • Method static reverse(String text) yang menambah nilai operationCount dan mengembalikan string yang dibalik
    • Method static join(String first, String second) yang menambah nilai operationCount dan mengembalikan dua string yang digabungkan dengan defaultSeparator
    • Method static countVowels(String text) yang menambah nilai operationCount dan 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 cetak Vowels: [count]
    • Cetak statistik menggunakan getStats()

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: 3

Coba 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()
}
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