- Overloading dalam Bahasa Pemograman OOP adalah suatu keadaan dimana beberapa method memiliki nama yg sama tetapi fungsi yg berbeda (mempunyai fungsi yg berbeda).
- Overlading bisa juga diartikan dengan istilah sebagai berikut, metode dengan nama yang sama, parameter yang berbeda, me-return value dengan return type yang berbeda
- Dapat digunakan ketika operator yang sama memiliki implementasi yang berbeda
- Koordinat (x,y)
- Koordinat (x,y,z)
Contoh :
#include
class data
{
private :
int motor;
int mobil;
public :
data(int jum_motor = 0, int jum_mobil = 0);
data operator + (data m2);
data operator + (int plus);
void total_kendaraan();
};
void main()
{
data data1(10,2);
data data2;
cout<<"Jumlah Kendaraan 1"<
data1.total_kendaraan();
data2=data1+100;
cout<<"Jumlah Kendaraan 2"<
data2.total_kendaraan();
data2=data1+data2;
cout<<"Jumlah Kendaraan 3"<
data2.total_kendaraan();
getch();
};
// Prosessing Data
data::data(int jum_motor, int jum_mobil)
{
motor = jum_motor;
mobil = jum_mobil;
}
void data::total_kendaraan()
{
cout << "Jumlah Motor =" << mobil ="" motor =" motor" mobil =" mobil" motor =" motor" mobil =" mobil">
b. Constructor
Constructor adalah suatu fungsi tanpa return type yang dipanggil secara otomatis setiap kali sebuah objek/kelas dibuat. Hal ini biasa dilakukan untuk proses inisialisasi. Nama fungsi constructor harus sama dengan nama kelas, dan sama seperti fungsi-fungsi lain, pada fungsi constructor juga dapat dilakukan overload.
Contoh program sederhana construktor adalah :
Program Constructor
Class sample {
Int x;
Public;
Sample() {x=0;} //construstor untuk inisialisasi n ilai x dg o
Sample(int xx) {x=xx;) //contstuctor dengan parameter
};
Program Destructor
Class sample {
Int x;
Public;
Sample() {x=0;} //construstor untuk inisialisasi n ilai x dg o
~Sample {cout
#include
#include
#pragma argsused
class SEGI_EMPAT {
private: // keyword ini opsional
int panjang;
int lebar;
SEGI_EMPAT ( );
void set_sisi(int p,int l);
};
//constructor objek SEGI_EMPAT
SEGI_EMPAT: :SEGI_EMPAT( ) {
panjang = 0; // melakukan inisialisasi
lebar = 0;
}
// Pendefinisian fungsi set_sisi yang tidak mengembalikan nilai
void SEGI_EMPAT: :set_sisi(int p, int l) {
// melakukan pengesetan
if (p !=panjang) panjang = p;
if (l !=lebar) lebar = l;
}
// Pendefinisian fungsi get_luas yang mengembalikan tipe int
Int SEGI_EMPAT: :get_luas() {
return panjang * lebar;
}
int main(void)
{
SEGI_EMPAT A; // ERROR, karena mengakses bagian private
int x;
A.set_sisi(10,5); // ERROR, karena mengakses bagian private
X=A.get_luas(); // ERROR, karena mengakses bagian
private
cout
#include
#include
//—————————————————————————–
#pragma argsused
class SEGI_EMPAT {
int panjang; // data ini bersifat private meskipun tidak di tulis keyword private
int lebar;
public :
SEGI_EMPAT ( );
void set_sisi(int p,int l);
int get_luas();
};
//constructor objek SEGI_EMPAT
SEGI_EMPAT: :SEGI_EMPAT( ) {
panjang = 0; // melakukan inisialisasi
lebar = 0;
}
// Pendefinisian fungsi set_sisi yang tidak mengembalikan nilai
void SEGI_EMPAT: :set_sisi(int p, int l) {
// melakukan pengesetan
if (p !=panjang) panjang = p;
if (l !=lebar) lebar = l;
}
// Pendefinisian fungsi get_luas yang mengembalikan tipe int
int SEGI_EMPAT: :get_luas() {
return panjang * lebar;
}
int main(void)
{
SEGI_EMPAT A;
Int x;
A.set_sisi(10, 5);
X=A.get_luas();
cout
#include
#include
Class persegi_panjang {
Private :
Int panjang;
Int lebar;
Public :
persegi_panjang (int p, int l [
panjang=p;
lebar=l;
}
Int get_luas() {return panjang * lebar;}
};
Int main(void)
{ //melakukan instanisasi kelas persegi_panjang
// dengan nama instance A
Persegi_panjang A(10,3);
//menggunakan fungsi didalam kelas persegi_panjang
Cout