Skip to content

1. Penjelasan

Pemrograman Berorientasi Objek (OOP) di Dart adalah paradigma pemrograman yang berbasis pada konsep objek. Dart, sebagai bahasa yang modern dan fleksibel, mendukung prinsip-prinsip utama OOP: inheritance (pewarisan), encapsulation (enkapsulasi), dan polymorphism (polimorfisme).

1. Konsep Dasar OOP di Dart

A. Class dan Object
- Class adalah cetak biru untuk membuat objek.
- Object adalah instance dari sebuah class.

Dart
class Person {
  String name;
  int age;

  // Constructor
  Person(this.name, this.age);

  // Method
  void introduce() {
    print("Hi, my name is $name and I am $age years old.");
  }
}

void main() {
  // Membuat objek
  var person = Person("Alice", 25);
  person.introduce();
}

B. Encapsulation
Menyembunyikan detail implementasi dan hanya menyediakan akses melalui properti atau metode. - Menggunakan access modifier: private dengan awalan _.

Dart
class BankAccount {
  String _accountNumber;
  double _balance;

  BankAccount(this._accountNumber, this._balance);

  // Getter
  double get balance => _balance;

  // Setter
  void deposit(double amount) {
    _balance += amount;
  }
}

void main() {
  var account = BankAccount("12345", 1000.0);
  account.deposit(500.0);
  print("Balance: ${account.balance}");
}

C. Inheritance
Mewarisi properti dan metode dari class lain.

Dart
class Animal {
  void eat() {
    print("This animal is eating.");
  }
}

class Dog extends Animal {
  void bark() {
    print("The dog is barking.");
  }
}

void main() {
  var dog = Dog();
  dog.eat();  // Method dari superclass
  dog.bark(); // Method dari subclass
}

D. Polymorphism Kemampuan untuk mengambil bentuk yang berbeda

Dart
class Animal {
  void makeSound() {
    print("Animal makes a sound.");
  }
}

class Dog extends Animal {
  @override
  void makeSound() {
    print("Dog barks.");
  }
}

class Cat extends Animal {
  @override
  void makeSound() {
    print("Cat meows.");
  }
}

void main() {
  Animal animal;

  animal = Dog();
  animal.makeSound();

  animal = Cat();
  animal.makeSound();
}

2. Features Lain di OOP Dart

MIXIN

Digunakan untuk berbagi metode atau properti antar class tanpa menggunakan inheritance.

Dart
mixin CanFly {
  void fly() {
    print("Flying...");
  }
}

class Bird with CanFly {}

void main() {
  var bird = Bird();
  bird.fly();
}