- 1. Class dan Object
- 2. Constructor
- 3. Inheritance (Pewarisan)
- 4. Mixins
- 5. Enkapsulasi (Access Modifier)
- 6. Polymorphism
- 7. Abstract Class
- 8. Interface (Implicit)
- Ringkasan Konsep OOP di Dart
- Kesimpulan
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
superDigunakan 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.
-
Contoh Mixin
mixin Flyable { void fly() { print('Terbang...'); } } class Bird with Flyable {} // Bird bisa fly() void main() { var bird = Bird(); bird.fly(); // Output: Terbang... }
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).
-
Contoh Enkapsulasi
class BankAccount { String _accountNumber; // Private property BankAccount(this._accountNumber); // Getter untuk mengakses _accountNumber String get accountNumber => '****${_accountNumber.substring(4)}'; } void main() { var account = BankAccount('1234567890'); print(account.accountNumber); // Output: ****567890 // account._accountNumber // Error: Tidak bisa diakses dari luar }
6. Polymorphism
Polymorphism memungkinkan object berperilaku berbeda tergantung class-nya.
-
Contoh Polymorphism
class Animal { void makeSound() { print('Suara hewan...'); } } class Dog extends Animal { @override void makeSound() { print('Guk guk!'); } } void main() { Animal animal1 = Animal(); Animal animal2 = Dog(); // Polymorphism animal1.makeSound(); // Output: Suara hewan... animal2.makeSound(); // Output: Guk guk! }
7. Abstract Class
Abstract class tidak bisa diinstansiasi langsung, tetapi bisa digunakan sebagai blueprint untuk class lain.
-
Contoh Abstract Class
abstract class Shape { void draw(); // Abstract method (tanpa implementasi) } class Circle extends Shape { @override void draw() { print('Menggambar lingkaran...'); } } void main() { var circle = Circle(); circle.draw(); // Output: Menggambar lingkaran... }
8. Interface (Implicit)
Dart tidak memiliki keyword interface seperti Java, tetapi semua class bisa berperan sebagai interface.
-
Contoh Interface
class Flyable { void fly() => print('Terbang...'); } class Airplane implements Flyable { @override void fly() { print('Pesawat terbang...'); } }
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).
Artikel ini dibaca sebanyak 1.933 kali
{ setTimeout(() => { showShimmer = false; }, 300); })"
:class="{'opacity-0': !loaded, 'opacity-100': loaded}"
class="lazy w-full h-auto rounded-xl border border-white dark:border-neutral-700/80 transition-opacity duration-500"
loading="lazy"
/>
SAWERIA
Memuat komentar...