Pemrograman Berorientasi Objek (OOP) adalah paradigma pemrograman yang menggunakan konsep class dan object untuk mengorganisasi kode secara modular dan reusable. Dart adalah bahasa yang sepenuhnya mendukung OOP.
Berikut penjelasan lengkap tentang OOP di Dart:
1. Class dan Object
Class adalah blueprint untuk membuat object. Class mendefinisikan property (variabel) dan method (fungsi).
-
Contoh Deklarasi Class
class Person {
// Property (variabel dalam class)
String name;
int age;
// Constructor (method khusus untuk inisialisasi object)
Person(this.name, this.age);
// Method (fungsi dalam class)
void greet() {
print('Halo, nama saya $name, usia $age tahun.');
}
}
-
Membuat Object (Instance)
void main() {
var person1 = Person('Alice', 25); // Membuat object
person1.greet(); // Output: Halo, nama saya Alice, usia 25 tahun.
}
2. Constructor
Constructor adalah method khusus yang dipanggil saat membuat object. Dart mendukung beberapa jenis constructor:
-
Default Constructor
class Car {
String brand;
String model;
// Constructor biasa
Car(this.brand, this.model);
}
-
Named Constructor
Digunakan untuk membuat constructor dengan nama berbeda.
class Car {
String brand;
String model;
Car(this.brand, this.model);
// Named constructor
Car.electric(String model) {
this.brand = 'Tesla';
this.model = model;
}
}
// Penggunaan
var tesla = Car.electric('Model 3');
-
Constructor dengan Initializer List
Untuk inisialisasi sebelum constructor dijalankan.
class Point {
final int x;
final int y;
Point(int x, int y)
: x = x,
y = y {
print('Point created at ($x, $y)');
}
}
3. Inheritance (Pewarisan)
Inheritance memungkinkan class child mewarisi property/method dari class parent.
-
Contoh Inheritance
class Animal {
void eat() {
print('Makan...');
}
}
class Cat extends Animal {
void meow() {
print('Meow!');
}
}
void main() {
var cat = Cat();
cat.eat(); // Dari parent class (Animal)
cat.meow(); // Dari child class (Cat)
}
-
Keyword super
Digunakan untuk mengakses method/property dari parent class.
class Dog extends Animal {
@override
void eat() {
super.eat(); // Memanggil method eat() dari Animal
print('Dog is eating...');
}
}
4. Mixins
Mixins adalah cara untuk menambahkan fungsionalitas ke class tanpa inheritance.
5. Enkapsulasi (Access Modifier)
Dart tidak memiliki keyword private
, public
, atau protected
seperti di Java. Namun, kita bisa menggunakan underscore (_
) untuk membuat property/method private (hanya bisa diakses dalam file yang sama).
6. Polymorphism
Polymorphism memungkinkan object berperilaku berbeda tergantung class-nya.
7. Abstract Class
Abstract class tidak bisa diinstansiasi langsung, tetapi bisa digunakan sebagai blueprint untuk class lain.
8. Interface (Implicit)
Dart tidak memiliki keyword interface
seperti Java, tetapi semua class bisa berperan sebagai interface.
Ringkasan Konsep OOP di Dart
Konsep |
Penjelasan |
Contoh Dart |
Class/Object |
Blueprint dan instance-nya |
class Person {} , var p = Person() |
Constructor |
Method untuk inisialisasi object |
Person(this.name, this.age) |
Inheritance |
Child class mewarisi parent class |
class Child extends Parent |
Mixins |
Menambahkan fungsionalitas tanpa waris |
class A with B, C |
Polymorphism |
Object bisa berperilaku berbeda |
Animal a = Dog(); a.makeSound() |
Abstract |
Class tidak bisa diinstansiasi langsung |
abstract class Shape |
Interface |
Semua class bisa jadi interface |
class A implements B |
Kesimpulan
Dengan belajar OOP di dart kita bisa membuat sebuah program yang lebih kompleks dan lebih mudah dalam mengorganisasi kode karena kode di buat modularitas.
Setelah kita mengenal OOP, pada artikel selanjutnya kita akan membahas Async Programming (Future & Stream).