Constructor adalah fungsi khusus yang dipanggil otomatis saat membuat objek baru. Method adalah fungsi yang terdefinisi di dalam class dan menggambarkan perilaku objek.
class Orang {
String nama;
int umur;
// Constructor dengan initializer list (this.nama)
Orang(this.nama, this.umur);
void perkenalan() {
print('Halo, nama saya $nama berumur $umur tahun.');
}
}
void main() {
Orang o = Orang('Budi', 25);
o.perkenalan(); // Halo, nama saya Budi berumur 25 tahun.
}
Dart mendukung beberapa constructor dengan nama berbeda:
class Titik {
double x;
double y;
// Constructor utama
Titik(this.x, this.y);
// Named constructor — buat titik di posisi asal
Titik.asal() : x = 0, y = 0;
// Named constructor — dari Map
Titik.dariMap(Map<String, double> map)
: x = map['x'] ?? 0,
y = map['y'] ?? 0;
@override
String toString() => 'Titik($x, $y)';
}
void main() {
Titik t1 = Titik(3, 4);
Titik t2 = Titik.asal();
Titik t3 = Titik.dariMap({'x': 1.5, 'y': 2.5});
print(t1); // Titik(3.0, 4.0)
print(t2); // Titik(0.0, 0.0)
print(t3); // Titik(1.5, 2.5)
}
class Produk {
String nama;
double harga;
int stok;
String? deskripsi;
Produk({
required this.nama,
required this.harga,
this.stok = 0,
this.deskripsi,
});
void tampilkan() {
print('$nama - Rp$harga (Stok: $stok)');
if (deskripsi != null) print(' $deskripsi');
}
}
void main() {
Produk p1 = Produk(nama: 'Laptop', harga: 15000000, stok: 5);
Produk p2 = Produk(
nama: 'Mouse',
harga: 200000,
stok: 20,
deskripsi: 'Mouse wireless ergonomis',
);
p1.tampilkan();
p2.tampilkan();
}
class KalkBMI {
String nama;
double beratKg;
double tinggiM;
KalkBMI(this.nama, this.beratKg, this.tinggiM);
double hitungBMI() {
return beratKg / (tinggiM * tinggiM);
}
String kategoriBMI() {
double bmi = hitungBMI();
if (bmi < 18.5) return 'Kurus';
if (bmi < 25.0) return 'Normal';
if (bmi < 30.0) return 'Gemuk';
return 'Obesitas';
}
void laporan() {
double bmi = hitungBMI();
print('=== Laporan BMI $nama ===');
print('Berat : ${beratKg}kg');
print('Tinggi: ${tinggiM * 100}cm');
print('BMI : ${bmi.toStringAsFixed(1)}');
print('Status: ${kategoriBMI()}');
}
}
void main() {
KalkBMI k = KalkBMI('Budi', 70, 1.75);
k.laporan();
}
Setiap class di Dart mewarisi metode toString() dari Object. Kita bisa menggantinya agar lebih informatif:
class Mahasiswa {
String nim;
String nama;
double ipk;
Mahasiswa(this.nim, this.nama, this.ipk);
@override
String toString() {
return 'Mahasiswa{nim: $nim, nama: $nama, ipk: $ipk}';
}
}
void main() {
Mahasiswa m = Mahasiswa('12345', 'Budi', 3.75);
print(m); // Mahasiswa{nim: 12345, nama: Budi, ipk: 3.75}
List<Mahasiswa> daftar = [
Mahasiswa('001', 'Ani', 3.80),
Mahasiswa('002', 'Citra', 3.65),
];
print(daftar);
}
| Konsep | Keterangan |
|---|---|
| Class | Cetak biru untuk membuat objek |
| Object | Instansi dari sebuah class |
| Constructor | Fungsi khusus saat membuat objek |
| Named Constructor | Constructor dengan nama berbeda |
| Method | Fungsi yang dimiliki objek |
this |
Merujuk ke objek saat ini |
@override |
Menandai method yang menimpa method induk |
toString() |
Representasi String dari objek |
💡 Tips: OOP bukan sekadar teknik, tapi cara berpikir tentang masalah. Mulailah dengan mengidentifikasi entitas dalam masalahmu — Mahasiswa, Produk, Pesanan — lalu tentukan data apa yang dimiliki dan aksi apa yang bisa dilakukan. Inilah fondasi untuk memahami Flutter widget yang semuanya berbasis class! 🎓
Kursus
Dart Dasar
Kategori
OOP Dasar
Durasi Pelajaran
20 menit