🎯 📗 Bagian 1 (Fundamental & Dasar) • Modul 06 100% Standar Industri & Vokasi

OOP Dasar: Class, Object & Constructor

Modul pembelajaran OOP Dasar: Class, Object & Constructor.

⚡ Pemrograman DART

08. OOP Dasar: Class, Object & Constructor

1. Konsep Dasar Class & Object

Class adalah cetak biru (blueprint) yang mendefinisikan atribut (properties) dan perilaku (methods). Object adalah instance nyata yang dibentuk dari class tersebut.

class Server {
  // Properties
  String hostname;
  String ipAddress;
  int ramGb;
  bool isOnline;

  // Generative Constructor dengan Initializing Formals (this.prop)
  Server({
    required this.hostname,
    required this.ipAddress,
    this.ramGb = 16,
    this.isOnline = false,
  });

  // Method
  void nyalakan() {
    isOnline = true;
    print("Server $hostname ($ipAddress) BERHASIL dinyalakan!");
  }
}

void main() {
  // Membuat Object Instance
  var srv1 = Server(hostname: "web-prod-01", ipAddress: "10.0.0.15", ramGb: 32);
  srv1.nyalakan();
}

2. Named Constructor & Factory Constructor

Dart mendukung Named Constructor untuk membuat beberapa variasi pembuatan objek dalam satu kelas:

class Siswa {
  String nama;
  String kelas;
  int nilai;

  Siswa(this.nama, this.kelas, this.nilai);

  // Named Constructor dari data Map (JSON)
  Siswa.fromJson(Map<String, dynamic> json)
      : nama = json['nama'],
        kelas = json['kelas'],
        nilai = json['nilai'];
}

3. Enkapsulasi (Private Properties _), Getter & Setter

Di Dart, variabel atau method yang diawali dengan tanda garis bawah (_) bersifat Private pada level library/file.

class AkunBank {
  final String nomorRekening;
  double _saldo = 0.0; // Private property

  AkunBank(this.nomorRekening, double saldoAwal) {
    _saldo = saldoAwal;
  }

  // Getter
  double get saldo => _saldo;

  // Setter dengan validasi
  set saldo(double nilaiBaru) {
    if (nilaiBaru >= 0) {
      _saldo = nilaiBaru;
    } else {
      print("Error: Saldo tidak boleh bernilai negatif!");
    }
  }
}