Kamis, 30 Januari 2014

OPERATOR OVERLOADING DAN EXCEPTION HANDLING


Jarang sekali sebuah program dibuat dapat berjalan dengan sukses pada saat pertama sekali dijalankan. Kesalahan sering terjadi pada saat perancangan atau perograman. Kesalahan tersebut dikategorikan  menjadi tiga bagian, yaitu :
·      Syntax errors – mengakibatkan kesalahan kompilasi.
·      Semantic errors – program menghasilkan keluaran yang tidak sesuai dengan harapan.
·      Runtime errors – kebanyakan mengakibatkan terminasi program secara tidak normal atau bahkan sistem crash.
Berikut ini merupakan contoh runtime error.
·      Pembagian bilangan dengan nol.
·      Akses elemen yang berada di luar indeks array.
·      Menggunakan nilai negatif untuk ukuran array.

     Setiap program dalam berada dapat suatu kondisi yang tidak normal – Error Conditions. Program yang ‘baik’ harus dapat menangani kondisi ini. Exception merupakan suatu keadaan yng disebabkan oleh runtime error dalam program. Memungkinkan kesalahan ditangani tanpa harus ‘mengotori’ program (dengan rutin yang menangani kesalahan). Memungkinkan pemisahan penanganan kesalahan dengan program utama (main business logic).
Suatu fungsi dapat memberi tanda suatu kesalahan dengan melempar suatu exception – throws. Fungsi pemanggil dapat menyerahkan kendali ke exception handler dengan menangkap (catching) exception – try, catch. Berikut ini merupakan blok try – catch.
try{
instruksi yang berpotensi menghasilkan exception
}
catch (tipe_exception e){
instruksi untuk menangani exception
{

          Seperti bahasa tingkat tinggi yang lain, C++ memiliki beberapa operator +, -, \, *, <<, >>, &, [], =, dll. Operator ini telah didefinisikan (pre – defined) dan digunakan untuk tipe tertentu. Misal : operator ‘+’ hanya dapat digunakan untuk tipe dasar seperti integer, float, dll. Kadang – kadang diperlukan untuk meredefinisi operator ini untuk digunakan untuk tipe bentukan. Misalnya Kelas Complex a dan b, apakah bisa dilakukan a + b ? Manipulasi bilangan kompleks lebih mudah apabila dapat memperlakukannya seperti pada tipe dasar. Sehingga dapat dilakukan, hal – hal seperti
·      Complex a (2, 4);
·      Complex b (4, 5);
·      . . .
·      Complex c = a + b;
Bukannya
·      Complex a (2, 4);
·      Complex b (4, 5);
·      . . .
·      Complex c = a.tambah (b);

Operator yang digunakan pada kelas dalam C++ dinyatakan daam pemanggilan fungsi. Jenis operator ada dua yaitu operatoruner dan operatorbiner. Operator uner hanya membutuhkan satu argument, misalnya ++, --, ~. Operator biner membutuhkan dua argument, misalnya +, -, /, *.
Operator dalam C++ diimplementasikan dengan pemanggilan fungsi.  User dapat meredefinisi arti suatu operator pada suatu operator pada suatu kelas dengan melakukan redefinisi method yang berkaitan dengan operator tersebut. Tidak semua operator bisa di – overload. Ada batasan – batasan yang bisa dilakukan dalam operator overloading.

contoh program : Kalkulator Sederhana
#include
#include
#include

main()
{
              int pilihan;
              double a, b, hasil, pembagian;

              cout<<"-------MENU KALKULATOR-------";
              cout<<"\n 1. PENJUMLAHAN";
              cout<<"\n 2. PENGURANGAN";
              cout<<"\n 3. PERKALIAN";
              cout<<"\n 4. PEMBAGIAN";
              cout<<"\n 5. LEBIH DARI";
              cout<<"\n 6. KURANG DARI";
              cout<<"\n-----------------------------"<
              cout<<"\nPilih Menu ke : "; cin>>pilihan;
              switch(pilihan)
              {
              case 1:
                 cout<<"Masukkan Operand 1 : "; cin>>a;
                 cout<<"Masukkan Operand 2 : "; cin>>b;
                 hasil=a+b;
                 cout<<"Hasil Penjumlahan = " << hasil;break;

              case 2:
                 cout<<"Masukkan Operand 1 : "; cin>>a;
                 cout<<"Masukkan Operand 2 : "; cin>>b;
                 hasil=a-b;
                 cout<<"\n Hasil Pengurangan = " << hasil;break;

              case 3:
                 cout<<"Masukkan Operand 1 : "; cin>>a;
                 cout<<"Masukkan Operand 2 : "; cin>>b;
                 hasil=a*b;
                 cout<<"\n Hasil Perkalian = " << hasil;break;

              case 4:
                
                 try {cout<<"Masukkan Operand 1 : "; cin>>a;
                 cout<<"Masukkan Operand 2 : "; cin>>b;
                 hasil=a/b;}
                 catch (int e )
                 {"Pesan ada kesalahan, tidak boleh dibagi dengan 0";};
                 cout<<"\n Hasil Pembagian = "<< hasil;break;

              case 5:
                 cout<<"Masukkan Operand 1 : "; cin>>a;
                 cout<<"Masukkan Operand 2 : "; cin>>b;
                 if (a > b)
                 {
                             hasil=a;
                 }
                 else
                 {
                             hasil=b;
                 };
                 cout<
                 cout<<"Nilai terbesar dari "<

              case 6:
                 cout<<"Masukkan Operand 1 : "; cin>>a;
                 cout<<"Masukkan Operand 2 : "; cin>>b;
                 if (a < b)
                 {
                             hasil=a;
                 }
                 else
                 {
                             hasil=b;
                 };
                 cout<
                 cout<<"Nilai terkecil dari "<
                 }
                 getch();
              }

Tidak ada komentar:

Domo-kun Staring