TMR 15 : Course Dart OOP (Object-Oriented Programming)

Pengenalan OOP

OOP DART


Object-Oriented Programming (OOP) adalah paradigma pemrograman populer yang berbasis pada konsep objek. Dalam OOP, terdapat beberapa istilah penting yang perlu dipahami, yaitu:

  • Class: Cetakan atau blueprint untuk membuat objek.
  • Object: Instance dari sebuah class.
  • Properties: Variabel yang menyimpan data dalam class.
  • Method: Fungsi yang berada di dalam class dan bertindak sebagai aksi yang bisa dilakukan oleh objek.
  • Constructor: Method spesial yang pertama kali dijalankan ketika objek dibuat.


-    Manipulasi Properties

Properti dalam objek bisa dimanipulasi tergantung pada apakah mereka dideklarasikan sebagai final. Jika final, maka nilai properti tidak bisa diubah, jika tidak, maka bisa diubah seperti variabel biasa.

Contoh Kode: Manipulasi Properties

class Car {
  String brand = "Unknown";
  final int wheel = 4;
  String? color;
}

void main() {
  Car car = Car();
  car.brand = "Toyota";
  car.color = "Blue";

  print(car.brand);
  print(car.color);
  print(car.wheel); // Tidak bisa diubah karena final
}


-    Method dalam OOP

Method adalah fungsi yang berada dalam class dan dapat menerima parameter serta mengembalikan nilai.

Contoh Kode: Method

class Car {
  String brand = "Unknown";
  final int wheel = 4;
  String? color;

  void honk() {
    print("Beep beep!");
  }
}

void main() {
  Car car = Car();
  car.honk();
}


-    Constructor dalam OOP

Constructor adalah method khusus yang otomatis dipanggil saat objek dibuat. Constructor dapat memiliki parameter untuk menginisialisasi properti.

Contoh Kode: Constructor

class Car {
  String brand;
  String color;
  final int wheel = 4;

  Car(this.brand, this.color);
}

void main() {
  Car car = Car("Toyota", "Blue");
  print(car.brand);
  print(car.color);
}


-    Inheritance (Pewarisan)

Inheritance memungkinkan sebuah class mewarisi properti dan method dari class lain. Class yang diwarisi disebut parent class, sedangkan class yang mewarisi disebut child class.

Contoh Kode: Inheritance

class Vehicle {
  String brand = "Unknown";
  String? color;
  int wheel;

  Vehicle(this.wheel);
}

class Car extends Vehicle {
  Car() : super(4);
}

class Motorcycle extends Vehicle {
  Motorcycle() : super(2);
}


-    Method Overriding

Method overriding memungkinkan subclass mendefinisikan ulang method yang sudah ada di parent class.

Contoh Kode: Method Overriding

class Vehicle {
  void honk() {
    print("Beep from vehicle");
  }
}

class Car extends Vehicle {
  @override
  void honk() {
    print("Beep from car");
  }
}

void main() {
  Car car = Car();
  car.honk();
}


-    Factory Constructor

Factory constructor digunakan untuk mengontrol bagaimana objek dibuat, biasanya untuk memastikan hanya satu instance yang dibuat.

Contoh Kode: Factory Constructor

class Person {
  static final Person _instance = Person._internal();

  factory Person() {
    return _instance;
  }

  Person._internal();
}

void main() {
  Person person1 = Person();
  Person person2 = Person();

  print(person1 == person2); // Output: true
}


-    Cascade Notation

Cascade notation memungkinkan kita melakukan beberapa operasi pada objek secara berurutan tanpa harus menuliskannya berulang kali.

Contoh Kode: Cascade Notation

void main() {
  Car car = Car()
    ..brand = "Toyota"
    ..color = "Blue";
}

class Car {
  String brand = "Unknown";
  String? color;
}

Komentar