HTML

Method Overloading

Method overloading dipakai untuk menciptakan beberapa fungsi (method) dengan nama yang SAMA dan mengerjakan kiprah yang MIRIP. Tujuannya, semoga programmer tidak kesulitan dalam mengingat sebuah fungsi yang tugasnya mirip. Misalnya untuk menciptakan fungsi perkalian. Ada perkalian yang membutuhkan dua argumen dan ada perkalian yang membutuhkan tiga argumen (tugasnya mirip, yaitu sama-sama mengalikan argumen, hanya jumlah argumen yang berbeda). Kalau dibentuk fungsi dengan nama yang berbeda, kemungkinan programmer akan repot. Contoh, untuk fungsi perkalian dengan dua argumen, namanya ialah kali1(bil1, bil2). Sedangkan untuk perkalian dengan tiga argumen namanya ialah kali2(bil1, bil2, bil3). Repot kan? Gimana kalo ada sepuluh perkalian? Bandingkan jikalau namanya kali(bil1, bil2) dan kali(bil1, bil2, bil3). Kita cuma perlu mengingat jumlah argumen dari fungsi kali.

So, gimana cara compiler C++ membedakan method tersebut, padahal namanya sama? Compiler C++ menentukan fungsi dengan mengamati jumlah, tipe data dan urutan argumen. Nah, dari sini terang bahwa compiler memakai daftar parameter untuk membedakan fungsi dengan nama yang sama. Bukan membedakan dengan return type-nya (nilai balik).

Sehingga, untuk menciptakan method overloading diharapkan setidaknya satu dari tiga syarat di bawah ini:
  • mempunyai jumlah argumen berbeda.
  • mempunyai tipe data argumen yang berbeda.
  • mempunyai urutan argumen yang berbeda.

Contoh #1 (jumlah argumen berbeda):

// method kali dengan dua argumen (bil1 dan bil2)
int kali(int bil1, int bil2) {
return bil1*bil2
}

// method kali dengan tiga argumen (bil1, bil2 dan bil3)
int kali(int bil1, int bil2, int bil3) {

return bil1*bil2*bil3;
}

Method kali pada teladan di atas VALID sebab mempunyai jumlah argumen yang berbeda.


Contoh #2 (mempunyai tipe data argumen yang berbeda):

// method tampilkanNilai mempunyai argumen bertipe char
void tampilkanNilai(char nilai) {
cout << "Nilai (dalam huruf): " << nilai;
}

// method tampilkanNilai mempunyai argumen bertipe int
void tampilkanNilai(int nilai) {
cout << "Nilai (dalam angka): " << nilai;
}

Contoh method tampilkanNilai diatas VALID sebab mempunyai tipe data argumen yang berbeda walaupun mempunyai jumlah argumen yang sama.


Contoh #3 (urutan argumen berbeda):

// method kali dengan tipe data bil1 ialah int
// dan bil2 ialah double
double kali(int bil1, double bil2) {
return bil1*bil2;
}

// method kali dengan tipe data bil1 ialah double
// dan bil2 ialah int
double kali(double bil1, int bil2) {
return bil1*bil2;
}

Method kali di atas VALID sebab urutan argumen berbeda. Pada method kali yang pertama bil1 bertipe data int lalu diikuti oleh bil2 dengan tipe data double. Sedangkan pada method kali yang kedua, bil1 bertipe data double diikuti oleh bil2 yang bertipe data int.


PERLU DIINGAT!!!
Seringnya programmer melaksanakan kesalahan saat menciptakan method overloading ialah dengan menciptakan daftar parameter yang sama dengan return type (nilai balik) yang berbeda. Hal ini menghasilkan SYNTAX ERROR.

Contoh yang salah:

// return type: int
int hitungUmur(int umur)
{
return umur + 2;
}

// return type: void
void hitungUmur(int umur)
{
cout<<"umur siswa sesudah lulus kuliah= "<<umur+2;
}

SYNTAX ERROR. Method tidak sanggup di-overload sebab mempunyai jumlah argumen yang sama dengan tipe data yang sama.


Semoga bermanfaat... :)

Subscribe to receive free email updates:

0 Response to "Method Overloading"

Posting Komentar