bab 3_overloading dan overiding

25
LAPORAN PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK Overloading dan OverridingDisusun Oleh : Ardi Kurniawan 3.34.10.0.06 IK-2A PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN ELEKTRO POLITEKNIK NEGERI SEMARANG TAHUN 2011 Jobsheet 1 24

Upload: ardey-kurniawan

Post on 25-Jul-2015

420 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Bab 3_Overloading Dan Overiding

LAPORAN PRAKTIKUM

PEMROGRAMAN BERBASIS OBJEK

“Overloading dan Overriding”

Disusun Oleh :

Ardi Kurniawan

3.34.10.0.06

IK-2A

PROGRAM STUDI TEKNIK INFORMATIKA

JURUSAN ELEKTRO

POLITEKNIK NEGERI SEMARANG

TAHUN 2011

Jobsheet 1 24

Page 2: Bab 3_Overloading Dan Overiding

BAB 3

OVERLOADING DAN OVERRIDING

I. Tujuan Instruksional Khusus :

Setelah Menyelesaikan praktek ini mahasiswa dapat :

1. Menjelaskan pengertian konsep polimorfisme,overloading dan overriding

2. Menjelaskan jenis metode overloading

3. Dapat membuat program dengan mengimplementasikan konsep polimorfisme

II. Persyaratan / Kebutuhan Sistem Komputer

Persyaratan / kebutuhan sistem untuk menjalankan program Java adalah sebagai berikut :

1. Processor P-II atau yang lebih tinggi,

2. Ram minimal 32 Mbyte,

3. Free space harddisk minimal 200 Mbyte,

4. Mouse ( Serial / PS2 ),

5. Sistem Operasi :

a. Minimal Windows 98 ( disarankan versi Windows yang lebih tinggi),

b. Linux.

III. Dasar Teori:

Polimorfisme (Menggunakan Metode Overloading)

Polymorphism (berasal dari bahasa yunani (Greek) yang artinya adalah macam-macam bentuk (many

forms) adalah sebuah konsep yang menyatakan bahwa sesuatu yang sama dapat mempunyai bentuk

dan perilaku yang berbeda. overloading adalah salah satu cara penerapan dalam konsep polimorfisme.

Jika kita tidak pernah pernah mengenal sebelumnya konsep ini kelihatan aneh, Tetapi metode ini

sebetulnya adalah hal yang sangat bermanfaat. Overloading ada dua jenis, yaitu:

1. Overloading methode

2. Overloading constructor

Overloading Methode

Jobsheet 1 25

Page 3: Bab 3_Overloading Dan Overiding

Dalam Java memungkinkan untuk mendefinisikan dua atau lebih metode dalam kelas yang sama,

menggunakan nama yang sama, tetapi parameter yang dideklarasikan harus berbeda (jumlah atau tipe

parameternya). Jika jumlah parameternya sama maka Tipe harus berbeda semua, tetapi jika jumlah

parameternya berbeda-beda maka boleh tipenya sama. Jenis-jenis metode overloading:

1. Jumlah parameter beda, tipe beda

2. Jumlah parameter sama, tipe beda

3. Jumlah parameter beda, tipe sama

Metode overloading ini, terjadi pada objek yang sama, tapi nilai argumennya berbeda-beda.

Ketika metode overloaded dipanggil, Java mencari kesamaan antara argumen yang digunakan untuk

memanggil metode dan parameter dari metode. Tetapi, kesamaan ini tidak mutlak. Hal ini karena pada

java adanya otomatisasi konversi tipe yang berbeda.

//PENERAPAN KONVERSI OTOMATIS PADA METODE OVERLOADING

class OverloadMetode

{

//konversi tujuan bertipe integer

void test(int a)

{

System.out.println("Hasil konversi byte ke integer : " + a);

}

}

class OverloadKonversi

{

public static void main(String args[])

{

OverloadMetode ob = new OverloadMetode();

//variabel asal yang akan dikonversi bertipe byte

byte i= 88;

Jobsheet 1 26

Page 4: Bab 3_Overloading Dan Overiding

ob.test(i); // memanggil test(integer)

}

}

Seperti kita lihat, OverloadDemo tidak mendefinisikan test(byte). Maka dari itu,

Ketika test( ) dipanggil dengan argumen byte didalam OverloadKonversi, menyebabkan

Ketidaksamaan metode. Java dapat secara otomatis mengkonversi byte ke dalam integer, dan

konversi ini dapat digunakan untuk menyelesaikan masalah ketidaksamaan ini. Maka dari itu , sesudah

test(byte) tidak ditemukan , Java mengubah tipe i kebentuk yang lebih tinggi ke integer dan

kemudian memanggil test(int). Hal ini dilakukan hanya jika Java menemukan ketidaksamaan metode.

Pada umumnya ketidaksamaan terjadi pada tipe–tipe numeris. Konversi otomatis pada java seperti

program diatas, hanya dapat dilakukan jika kedua aturan ini dipenuhi:

1. Kedua tipe data (data asal dan tujuan) memiliki kompatibilitas(compatible).

Konversi otomatis pada Java dapat dilakukan jika kedua tipa data adalah kompatibel. Tabel di bawah

ini menunjukan kompatibilitas antara data asal dan data tujuan konversi.

Tabel kompatibilitas data

Asal Tujuan Kompatibilias Keterangan

Numeris Numeris Ya -

Numeris Char Tidak Berlaku sebaliknya

Numeris Boolean Tidak Berlaku sebaliknya

Char Boolean Tidak Berlaku sebaliknya

2. Tipe tujuan mempunyai range lebih besar daripada tipe asal.

Konversi otomatis pada java dapat dilakukan dari tipe data yang mempunyai range yang lebih kecil ke

range yang lebih besar, dan biasanya konversi terjadi pada tipe data numeris. Tabel dibawah ini

menunjukan urutan range dari yang besar ke range yang kecil.

Tabel Tipe data numeris

No Tipe Range

Jobsheet 1 27

Page 5: Bab 3_Overloading Dan Overiding

1 double 64 4.9e–324 to 1.8e+308

2 float 32 1.4e−045 to 3.4e+038

3 long 64 –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

4 Int 32 –2,147,483,648 to 2,147,483,647

5 short 16 –32,768 to 32,767

6 byte 8 –128 to 127

Sebagai contoh konversi yang bisa dilakukan adalah:

1. Konversi dari byte ke short atau di atasnya

2. Konversi dari short ke int atau di atasnya

Sedang contoh konversi yang tidak bisa dilakukan adalah:

1. Konversi dari double ke float atau di bawahnya

2. Konversi dari int ke short atau di dibawahnya

Selain itu Java juga mengerjakan konversi secara otomatis ketika menyimpan konstanta integer literal

menjadi variable bertipe byte, short, atau long.

Overloading Constructors

Overloading selain diterapkan pada metode juga diterapkan pada konstuktor. Bedanya overloading

constructor terjadi pada objek yang berbeda-beda, nilai argument berbeda, sehingga metode bisa lebih

dari satu. Penerapan overloading pada kelas Java akan menjadi suatu norma tanpa perkecualian.

Method Overriding

Metode overriding adalah metode pada subclass yang mempunyai nama dan tipe identik/sama dengan

metode superclass. ketika metode override digunakan dalam subclass maka akan selalu menunjuk ke

versi dari metode yang didefinisikan oleh subclass, sedang metode yang didefinisikan olah superclass

akan di hidden. jika kita ingin memanggil metode superclass pada subclass dapat menggunakan

statemen berikut:

Super.metode();

Jobsheet 1 28

Page 6: Bab 3_Overloading Dan Overiding

Metode() merupakan nama metode superclass yang dipanggil.

IV. Langkah Kerja

Jalankan Edit Plus, buat file baru java dan ketikkan kode program berikut :

1. Buat program OVERLOAD JUMLAH PARAMETER BEDA, TIPE BEDA

//OVERLOAD JUMLAH PARAMETER BEDA, TIPE BEDA

class OverLoadMetode

{

//overload tes pertama

void tes()

{

System.out.println("Tanpa Parameter");

}

Jobsheet 1 29

Page 7: Bab 3_Overloading Dan Overiding

//overload kedua

void tes(int a)

{

System.out.println("nilai a:"+a);

}

//overload ketiga

void tes(int a,int b)

{

System.out.println("Nilai a dan b = "+a+" dan "+b);

}

//overload ke empat

double tes(double c)

{

System.out.println("Nilai c="+c);

return c*c;

}

}

class OverLoad1

{

public static void main(String[] args)

{

OverLoadMetode demo = new OverLoadMetode();

double kali;

//Memanggil semua versi tes

demo.tes(); demo.tes(10); demo.tes(5,8);

kali=demo.tes(10.0);

System.out.println("Hasil (c*c) ="+kali);

}

}

Jobsheet 1 30

Page 8: Bab 3_Overloading Dan Overiding

2. Sebagai contoh di bawah ini diberikan sebuah program menggunakan OVERLOAD

DENGAN JUMLAH PARAMETR SAMA, TIPE BEDA .

//OVERLOAD DENGAN JUMLAH PARAMETR SAMA, TIPE BEDA

class OverLoadMetode

{

//overload kesatu

void tes(double a)

{

System.out.println("Nilai a bertipe double ="+a);

}

//overload ke dua

int tes(int b)

{

System.out.println("Nilai b bertipe integer="+b);

return b+b;

}

}

class OverLoad2

{

public static void main(String[] args)

{

OverLoadMetode demo = new OverLoadMetode();

int jum;

//memanggil versi tes 1

demo.tes(2.5);

//Memanggil versi tes kedua

Jobsheet 1 31

Page 9: Bab 3_Overloading Dan Overiding

jum=demo.tes(10);

System.out.println("Hasil penjumlahan b + b ="+jum);

}

}

3. Progaram menggunakan JUMLAH PARAMETER BERBEDA, TIPE SAMA

// DENGAN JUMLAH PARAMETER BERBEDA, TIPE SAMA

class OverloadMetode

{

// Overload test for one integer parameter.

void test(int a)

{

System.out.println("Nilai a: " + a);

}

// Overload test for two integer parameters.

int test(int a, int b)

{

return a+b;

}

// overload test for tree integer parameter

int test(int a,int b, int c)

{

return a*b*c;

}

Jobsheet 1 32

Page 10: Bab 3_Overloading Dan Overiding

}

class Overload3

{

public static void main(String args[])

{

OverloadMetode ob = new OverloadMetode();

int jumlah,kali;

// call all versions of test()

ob.test(10);

jumlah=ob.test(10,20) ;

kali = ob.test(10,20,30);

System.out.println("Hasil penjumlahan (10+20): " + jumlah);

System.out.println("Hasil perkalian (10*20*30): " + kali);

}

}

4. Berikut ini program menggunakan overloading konstruktor

//OVERLOADING KONSTRUKTOR//

class Man

{

double gapok; double masakerja;

// konstruktor untuk Man.

Man(double g, double mk)

{

gapok=g; masakerja=mk;

Jobsheet 1 33

Page 11: Bab 3_Overloading Dan Overiding

}

// konstructor yang tidak ditentukan ukurannya

Man()

{

gapok = 0; masakerja = 0;

}

// konstructor digunakan ketika KaryawanKita dibuat

Man(double lembur)

{

gapok=masakerja=lembur;

}

double hitung_gaji()

{

return gapok*masakerja;

}

}

class OverloadingKonstruktor

{

public static void main(String args[])

{

Man KaryawanKu = new Man(10,15);

Man KaryawanMu = new Man();

Man KaryawanKita = new Man(5);

double gaji;

gaji = KaryawanKu.hitung_gaji();

System.out.println("Gaji Karyawanku adalah = " + gaji);

gaji = KaryawanMu.hitung_gaji();

System.out.println("Gaji Karyawanmu adalah = " + gaji);

gaji = KaryawanKita.hitung_gaji();

System.out.println("Gaji KaryawanKita adalah = " + gaji);

}

Jobsheet 1 34

Page 12: Bab 3_Overloading Dan Overiding

}

5. Berikut ini contoh program yang menerapkan konsep metode overriding

menggunakan tipe pengembalian nilai.

class superclass

{

int p,l;

superclass(int panjang,int lebar)

{

p=panjang;

l=lebar;

}

int hitung()

{

return p*l;

}

}

class subclass extends superclass

{

int t;

subclass(int panjang,int lebar,int tinggi)

{

super(panjang,lebar);

Jobsheet 1 35

Page 13: Bab 3_Overloading Dan Overiding

t=tinggi;

}

int hitung()

{

/*CARA 1

int L;

L=super.hitung();//MEMANGGIL METODE SUPERCLASS

return L*t;

*/

//CARA 2

return p*l*t;

}

}

class AplikasiMetodeOverriding

{

public static void main(String[] args)

{

subclass Objek=new subclass(3,4,6);

System.out.println("LUAS "+Objek.hitung());

}

}

6. Sedangkan penerapan metode overriding menggunakan tipe tanpa pengembalian nilai adalah sebagai

berikut.

class superclass

Jobsheet 1 36

Page 14: Bab 3_Overloading Dan Overiding

{

int p,l;

superclass(int panjang,int lebar)

{

p=panjang;

l=lebar;

}

void hitung()

{

System.out.println("LUAS ="+p*l);

}

}

class subclass extends superclass

{

int t;

subclass(int panjang,int lebar,int tinggi)

{

super(panjang,lebar);//MENGAMBIL INISIALISASI SUPERCLASS

t=tinggi;

}

void hitung()//METODE OVERRIDING

{

super.hitung();//MEMANGGIL METODE SUPERCLASS di SUBCLASS

System.out.println("VOLUME ="+ p*l*t);

}

}

class AplikasiMetodeOverriding2

{

public static void main(String[] args)

{

subclass Objek=new subclass(3,4,6);

Objek.hitung();

Jobsheet 1 37

Page 15: Bab 3_Overloading Dan Overiding

}

}

6. Program Simpan program Java di atas.

7. Eksekusi program Java Pertama dengan mengklik Tool Compile Program Java. Lalu Tool

Menjalankan Program Java.

8. Buat analisa terhadap proses program tersebut sebelum dijalankan dan pada saat dijalankan

terhadap parameter dan argument yang digunakan..

V. Pertanyaan

1. Jelaskan apa yang dimaksud overloading & overriding!

Jawab :

Overloading adalah salah satu cara penerapan dalam konsep polimorfisme. Overloading ada

dua jenis, yaitu :

1. Overloading method

Jenis-jenis metode overloading :

1. Jumlah parameter beda, tipe beda

2. Jumlah parameter sama, tipe beda

3. Jumlah parameter beda, tipe sama

Metode overloading ini, terjadi pada objek yang sama, tapi nilai argumennya berbeda-beda.

2. Overloading constructor

Overloading selain diterapkan pada metode juga diterapkan pada konstruktor. Bedanya

overloading constructor terjadi pada objek yang berbeda-beda, nilai argument berbeda sehingga

metode bisa lebih dari satu. Penerapan overloading pada kelas Java akan menjadi suatu norma

tanpa perkecualian.

Jobsheet 1 38

Page 16: Bab 3_Overloading Dan Overiding

Metode overriding adalah metode pada subclass yang mempunyai nama dan tipe identik/sama

dengan metode superclass.

2. Apa perbedaan implementasi overloading pada metode dan konstruktor?

Jawab :

Overloading pada metode terjadi pada objek yang sama, tapi nilai argumennya berbeda-beda.

Overloading constructor terjadi pada objek yang berbeda-beda, nilai argument berbeda

sehingga metode bisa lebih dari satu.

3. Lakukan analisis dan buat kesimpulan terhadap penerapan overloading pada metode dan

konstruktor!

Kesimpulan : Menggunakan overloading pada metode lebih mudah dan sederhana karena kita

cukup membuat satu objek untuk menggunakan metode-metode yang sama.

4. Buat program penerapan overloading?

Jawab :

Menghitung gaji pegawai :

class Man

{

double gapok;double masakerja;

//konstruktor untuk Man.

Man(double g, double mk)

{

gapok=g; masakerja=mk;

}

//konstruktor yang tidak ditentukan ukurannya

Man()

{

gapok=0; masakerja=0;

}

//konstruktor digunakan ketika KaryawanKita dibuat

Man(double lembur)

{

gapok=masakerja=lembur;

}

double hitung_gaji()

{

return gapok*masakerja;

}

Jobsheet 1 39

Page 17: Bab 3_Overloading Dan Overiding

}

class OverloadingKonstruktor

{

public static void main(String[] args)

{

Man KaryawanKu=new Man(10,15);

Man KaryawanMu=new Man();

Man KaryawanKita=new Man(5);

double gaji;

gaji=KaryawanKu.hitung_gaji();

System.out.println("Gaji Karyawanku adalah ="+gaji);

gaji=KaryawanMu.hitung_gaji();

System.out.println("Gaji Karyawanmu adalah ="+gaji);

gaji=KaryawanKita.hitung_gaji();

System.out.println("Gaji KaryawanKita adalah ="+gaji);

}

}

5. Buat contoh program konversi otomatis pada java untuk semua variasi tipe. Berikan

keterangan pada output untuk konversi yang tidak diijinkan!

Jawab :

class OverloadMetode

{

//konversi tujuan bertipe integer

void test(int a)

{

System.out.println("Hasil konversi byte ke integer : "+a);

}

}

Jobsheet 1 40

Page 18: Bab 3_Overloading Dan Overiding

objek

p=6l=2

hitungKali()

objek

t=3

hitungKali()

class OverloadKonversi

{

public static void main(String args[])

{

OverloadMetode ob = new OverloadMetode();

//variabel asal yang akan dikonversi bertype byte

byte i = 88;

ob.test(i); //memanggil test(integer)

}

}

Konversi otomatis pada java seperti program diatas, hanya dapat dilakukan jika kedua aturan ini

dipenuhi :

1. kedua tipe data (data asal dfan tujuan) memiliki kompatibilitas (compatible).

2. Tipe tujuan mempunyai range lebih besar daripada tipe asal.

6. Diketahui diagram objek sebagai berikut:

Superclass

Subclass

Jobsheet 1 41

Page 19: Bab 3_Overloading Dan Overiding

Pertanyaan:

a. Buat program menggunakan metode overriding untuk menghitung hasil kali variable superclass

dan hasil kali variable subclass

b. Buat program menggunakan metode overriding untuk menghitung hasilkali dari subclass,

dimana hasilkali merupakan hasilkali superclass*hasilkali subclass.

7. Diketahui box A mempunyai nilai argument 6,3,4 dan berwarna merah. Box B merupakan

turunan dari box A tetapi mempunyai warna biru. Hitung volume box B dan tampilkan

perbedaan warna menggunakan metode overriding.

8. Sebuah objek x mempunyai komponen nilai i=5,j=6. Objek y merupakan turunan dari objek x

yang mempunyai komponen k=7. buat program menggunakan metode overriding untuk

menampilkan nilai k dari objek y.

9. Tambahkan statemen untuk menampilkan:

Nilai i=5

Nilai j=6

Nilai k=7

10. Jelaskan perbedaan overriding dengan overloading

a. Overloading Methode

Dalam Java memungkinkan untuk mendefinisikan dua atau lebih metode dalam kelas yang

sama, menggunakan nama yang sama, tetapi parameter yang dideklarasikan harus berbeda

(jumlah atau tipe parameternya). Jika jumlah parameternya sama maka Tipe harus berbeda

semua, tetapi jika jumlah parameternya berbeda-beda maka boleh tipenya sama. Jenis-jenis

metode overloading:

1. Jumlah parameter beda, tipe beda

2. Jumlah parameter sama, tipe beda

3. Jumlah parameter beda, tipe sama

Metode overloading ini, terjadi pada objek yang sama, tapi nilai argumennya berbeda-beda.

Jobsheet 1 42

Page 20: Bab 3_Overloading Dan Overiding

b. Overloading Constructors

Overloading selain diterapkan pada metode juga diterapkan pada konstuktor. Bedanya

overloading constructor terjadi pada objek yang berbeda-beda, nilai argument berbeda,

sehingga metode bisa lebih dari satu. Penerapan overloading pada kelas Java akan menjadi

suatu norma tanpa perkecualian.

Jobsheet 1 43