KONSTRUKTOR DAN DESTRUKTOR


KONSTRUKTOR
Konstruktor adalah fungsi khusus anggota kelas yang otomatis dijalankan pada saat penciptaan objek (mendeklarasikan instance). Konstruktor ditandai dengan namanya, yaitu sama dengan nama kelas. Konstruktor tidak mempunyai tipe hasil (return value). Biasanya konstruktor dipakai untuk inisialisasi anggota data dan melakukan operasi lain seperti membuka file dan melakukan alokasi memori secara dinamis. Meskipun konstruktor tidak harus ada dalam kelas, tetapi jika diperlukan konstruktor dapat lebih dari satu. 
Konstruktor adalah fungsi anggota yang mempunyai nama yang sama dengan nama kelas.  Kegunaannya :
  • Mengalokasikan ruang bagi sebuah objek
  • Memberikan nilai awal terhadap anggota data suatu objek
  • Membentuk tugas-tugas umum lainnya  
Adapaun jenis-jenis kontruktor adalah sebagai berikut:
  1. Konstruktor default : tidak dapat menerima argumen, anggota data diberi nilai awal tertentu.
  2. Konstruktor penyalinan dengan parameter : anggota data diberi nilai awal berasal dari parameter.
  3. Konstruktor penyalinan objek lain : parameter berupa objek lain, anggota data diberi nilai awal dari objek lain.
Contoh penulisan konstruktor :

#include
class jumlah
{
   public:
    int jumlah1;
      int jumlah2;
      ~jumlah();
}; 
jumlah objek1,objek2;
void main()
{
   cout<<”Didalam main() \n”;
   cout<<”objek1.jumlah1 adalah “<<
   cout<<”objek1.jumlah2 adalah “<<
   cout<<”objek2.jumlah1 adalah “<<
   cout<<”objek2.jumlah2 adalah “<<
jumlah::~jumlah()
{
   cout<<”Didalam jumlah() \n”;


DESTRUKTOR
Destruktor adalah pasangan konstruktor. Pada saat program membuat objek maka secara otomatis kontruktor akan dijalankan, yang biasanya dimaksudkan untuk memberi nilai awal variable private. Sejalan dengan itu, C++ menyediakan fungsi destruktor (penghancur atau pelenyap) yang secara otomatis akan dijalankan pada saat berakhirnya objek. Setiap kelas mempunyai tepat satu destuktor. jika kita tidak mendeklarasikan sebuah destruktor dalam sebuah kelas, maka destruktor akan diciptakan sendiri oeh compiler C++. Fungsi destruktor itu sendiri adalah untuk mendealokasikan memori dinamis yang diciptakan kontruktor. Nama destruktor sama dengan nama kelas ditambah awalan karakter tilde (~). Walaupun compiler C++ akan secara otomatis mendeklarasikan sebuah destruktor, akan tetapi sangat disarankan untuk mendeklarasikan sendiri sebuah destruktor. Karena dengan mendeklarasikan sendiri destruktor maka kita mempunyai kontrol penuh terhadap apa yang dilakukan destruktor dari kelas yang kita buat.
Destruktor adalah fungsi anggota yang mempunyai nama yang sama dengan nama kelas ditambah symbol tilde (~) didepannya. 
Contoh  penulisan dalam Destruktor :
#include
Class Tpersegi
{
   int *lebar, *panjang;
   public:
      Tpersegi (int, int);
      ~Tpersegi();
      int Luas() {return (*lebar * *panjang);}
};
Tpersegi::Tpersegi(int a, int b)
{
   lebar=new int;
   panjang=new int;
   *lebar = a;
   *panjang = b;
}
Tpersegi::~Tpersegi()
{
   delete lebar;
   delete panjang;
}
int main()
{
   Tpersegi pers(3,4), persg(5,6);
   cout<<”Luas pers= “<<
   cout<<”Luas persg = “<<
   return 0;
}

KESIMPULAN
Dari uraian diatas dapat kita simpulkan bahwa:
Konstruktor :
-          Nama kontruktor sama dengan nama kelas
-          Kontruktor tidak mempunyai nilai balik
-          Kontruktor harus diletakkan di bagian public
-          Kontruktor dijalankan dengan sendirinya pada saat objek diciptakan, bahkan kontruktor dijalankan sebelum fungsi main() dijalankan.

Destruktor:
-          Nama destruktor  sama dengan nama kelas ditambahkan tanda tilde (~) di depannya.
-          Destruktor tidak mempunyai nilai balik.
-          Destruktor harus diletakkan di bagian public.
-          Destruktor dijalankan dengan sendirinya pada saat objek akan sirna.

Contoh Lain konstruktor dan destruktor :
#include "stdafx.h"
#include "iostream.h"
#include "stdlib.h"

class hitung
{
public:
    double alas,tinggi,luas,sisi,jari,kel;
    void segitiga()
    {    cout<<"** Luas Segitiga **"<
        cout<<"Masukkan Alas   = ";cin>>alas;
        cout<<"Masukkan Tinggi = ";cin>>tinggi;
        luas=(alas*tinggi)/2;
        cout<<"Luas Segitiga   = "<<
    }
    void persegi()
    {    cout<<"** Luas Persegi **"<
        cout<<"Masukkan Panjang Sisi = ";cin>>sisi;
        luas=sisi*sisi;
        cout<<"Luas Persegi          = "<<
    }
    void llingkaran()
    {    cout<<"** Luas Lingkaran **"<
        cout<<"Masukkan Panjang Jari = ";cin>>jari;
        luas=3.14*jari*jari;
        cout<<"Luas Lingkaran        = "<<
    }
    void ppanjang()
    {    cout<<"** Luas Persegi Panjang **"<
        cout<<"Masukkan Alas          = ";cin>>alas;
        cout<<"Masukkan Tinggi        = ";cin>>tinggi;
        luas=alas*tinggi;
        cout<<"Luas Persegi Panjang   = "<<
    }
    void kellingkaran()
    {   
        cout<<"** Keliling Lingkaran **"<
        cout<<"Masukkan Panjang Jari   = ";cin>>jari;
        kel=2*3.14*jari;
        cout<<"Keliling Lingkaran      = "<<
    }
};

void main()
{    hitung htg;
    char tanya;
    tanya = 'y';
    int pilih;
    do {
        system ("cls");
    cout<<"== KALKULATOR LINDA =="<
    cout<<"---------------------------"<
    cout<<"1. Mencari Luas Segitiga"<
    cout<<"2. Mencari Luas Persegi"<
    cout<<"3. Mencari Luas Lingkaran"<
    cout<<"4. Mencari Luas Persegi Panjang"<
    cout<<"5. Mencari Keliling Lingkaran"<
    cout<<"---------------------------"<
    cout<<"Masukkan pilihan Anda = ";cin>>pilih;
    if (pilih==1)
    {    htg.segitiga();} else
    if (pilih==2)
    {    htg.persegi();} else
    if (pilih==3)
    {    htg.llingkaran();} else
    if (pilih==4)
    {    htg.ppanjang();} else
    if (pilih==5)
    {    htg.kellingkaran();}
    cout<<"---------------------------"<
    cout<<"Apakah Anda Ingin Mengulanginya ..? "; cin>>tanya;
    } while (tanya == 'y');
}


4 komentar:

  1. sy belum paham apa kepentingan dibuatnya konstruktor. Apakah tiap kali membuat program dgn konsep OOP kita perlu membuat konstruktor di dalamnya?

    BalasHapus