Constructor dan Destructor dalam Bahasa Pemrograman C#

Constructor dan Destructor dalam Bahasa Pemrograman C#
Photo by Kari Shea / Unsplash

Dalam pemrograman berorientasi objek (OOP) di C#, constructor dan destructor memainkan peran penting dalam mengelola siklus hidup sebuah objek.

  • Constructor digunakan untuk menginisialisasi objek saat dibuat.
  • Destructor digunakan untuk membersihkan sumber daya saat objek tidak lagi diperlukan.

Artikel ini akan membahas apa itu constructor dan destructor dalam C#, bagaimana cara menggunakannya, serta contoh implementasi dalam berbagai skenario pemrograman.

1. Apa Itu Constructor?

Constructor adalah method khusus dalam sebuah class yang dipanggil secara otomatis ketika sebuah object dibuat. Constructor memiliki nama yang sama dengan class dan tidak memiliki return type.

Fungsi Constructor:

  • Menginisialisasi nilai properti dalam object.
  • Menjalankan kode tertentu saat object dibuat.
  • Menghindari nilai null pada atribut.

Sintaks Dasar Constructor dalam C#

class NamaClass {
    public NamaClass() {
        // Kode yang dieksekusi saat object dibuat
    }
}

2. Jenis-Jenis Constructor dalam C#

2.1 Default Constructor

Jika tidak ada constructor yang didefinisikan, C# secara otomatis menyediakan constructor default.

class Mobil {
    public string merek = "Tidak Diketahui";
    public Mobil() {
        Console.WriteLine("Object Mobil dibuat!");
    }
}

class Program {
    static void Main() {
        Mobil mobil1 = new Mobil();
        Console.WriteLine("Merek: " + mobil1.merek);
    }
}

Output:

Object Mobil dibuat!
Merek: Tidak Diketahui

2.2 Constructor dengan Parameter

Constructor dapat menerima parameter untuk memberikan nilai awal saat object dibuat.

class Mobil {
    public string merek;
    public string model;
    
    public Mobil(string merek, string model) {
        this.merek = merek;
        this.model = model;
    }
}

class Program {
    static void Main() {
        Mobil mobil1 = new Mobil("Toyota", "Avanza");
        Console.WriteLine("Mobil: " + mobil1.merek + " " + mobil1.model);
    }
}

Output:

Mobil: Toyota Avanza

Penjelasan:

  • this.merek = merek; → Digunakan untuk membedakan parameter dari atribut class.
  • Constructor dijalankan saat object Mobil dibuat.

2.3 Constructor Overloading

Kita bisa mendefinisikan beberapa constructor dengan jumlah parameter berbeda (overloading).

class Mobil {
    public string merek;
    public int tahun;
    
    public Mobil() {
        merek = "Tidak Diketahui";
        tahun = 0;
    }
    
    public Mobil(string merek, int tahun) {
        this.merek = merek;
        this.tahun = tahun;
    }
}

class Program {
    static void Main() {
        Mobil mobil1 = new Mobil();
        Mobil mobil2 = new Mobil("Honda", 2022);
        
        Console.WriteLine("Mobil1: " + mobil1.merek + " Tahun: " + mobil1.tahun);
        Console.WriteLine("Mobil2: " + mobil2.merek + " Tahun: " + mobil2.tahun);
    }
}

Output:

Mobil1: Tidak Diketahui Tahun: 0
Mobil2: Honda Tahun: 2022

Penjelasan:

  • Constructor tanpa parameter memberikan nilai default.
  • Constructor dengan parameter menerima nilai dari pemanggilnya.

3. Apa Itu Destructor?

Destructor adalah method khusus yang dipanggil ketika object akan dihapus dari memori. Destructor digunakan untuk membersihkan sumber daya yang tidak lagi digunakan, seperti koneksi database atau file yang terbuka.

Fitur Destructor:

  • Tidak memiliki parameter.
  • Tidak dapat di-overload.
  • Dipanggil secara otomatis oleh Garbage Collector.
  • Ditulis dengan simbol ~ sebelum nama class.

Sintaks Dasar Destructor dalam C#

class NamaClass {
    ~NamaClass() {
        // Kode yang dijalankan saat object dihapus
    }
}

4. Contoh Penggunaan Destructor dalam C#

using System;

class FileHandler {
    public FileHandler() {
        Console.WriteLine("File dibuka.");
    }
    
    ~FileHandler() {
        Console.WriteLine("File ditutup.");
    }
}

class Program {
    static void Main() {
        FileHandler file = new FileHandler();
    }
}

Output:

File dibuka.
File ditutup.

Penjelasan:

  • Constructor FileHandler() dijalankan saat object dibuat.
  • Destructor ~FileHandler() dijalankan saat object dihancurkan oleh Garbage Collector.

5. Perbedaan Constructor dan Destructor

Perbedaan Constructor Destructor
Tujuan Menginisialisasi object Membersihkan object sebelum dihapus
Parameter Bisa memiliki parameter Tidak memiliki parameter
Overloading Bisa di-overload Tidak bisa di-overload
Pemanggilan Dipanggil saat object dibuat Dipanggil saat object dihapus

6. Kapan Menggunakan Constructor dan Destructor?

Gunakan constructor jika:

  • Perlu memberikan nilai default saat object dibuat.
  • Perlu menjalankan kode khusus saat inisialisasi.
  • Perlu menghindari nilai null di atribut class.

Gunakan destructor jika:

  • Perlu menutup koneksi database atau file.
  • Perlu membersihkan sumber daya seperti alokasi memori.

7. Kesimpulan

  • Constructor digunakan untuk menginisialisasi object saat dibuat.
  • Destructor digunakan untuk membersihkan sumber daya sebelum object dihapus.
  • Constructor bisa memiliki parameter dan bisa di-overload, sedangkan destructor tidak.
  • Memahami konsep constructor dan destructor sangat penting dalam manajemen memori dan pengelolaan sumber daya dalam C#.

Dengan memahami Constructor dan Destructor dalam C#, Anda bisa mengembangkan program yang lebih efisien dan terstruktur!

Read more