BAB 7 OVERLOADING DAN OVERRIDING

dokumen-dokumen yang mirip
Polymorphism. Oleh : Agus Priyanto, M.Kom

Overriding. Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuan: subclass memiliki tingkah laku yang lebih

Employee employee=new Manager();

A. TUJUAN PEMBELAJARAN 1. Memahami tentang overloading 2. Memahami tentang overriding 3. Memahami aturan tentang overridden

Praktikum 8 Polymorphism

Overriding, Overloading, Polymorphism. Pertemuan 10 Pemrograman Berbasis Obyek Dr. Rodiah

Overriding Overloading Polymorphism

5/23/12. Inheritance. Pengertian inheritance Deklarasi inheritance Single inheritance Multilevel inheritance Access Control super keyword

PEWARISAN. Disusun Oleh: Reza Budiawan. Untuk: Tim Dosen Algoritma & Pemrograman Lanjut

BAB 6 INHERITANCE Tujuan:

Inheritance (Pewarisan) Pengertian dasar inheritance

Pengenalan Polimorfisme Implementasi Polimorfisme

Overriding Overloading Polymorphism

Inheritance (Pewarisan Sifat) Imam Fahrur Rozi

KARAKTERISTIK PEMROGRAMAN BERORIENTASI OBJEK (OOP) Pemrograman berorientasi Objek mempunyai karakterisitik sebagai berikut:

8 - Overriding dan Overloading

Pemrograman Berorientasi. Polimorfisme dan Binding

Bahasa Pemrograman 2.

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Class & Object 2 ~Praktikum~ Imam Fahrur Rozi

Modul Bahasa Pemrograman 1

subclass class manapun private default protected public package yang sama

Inheritance dan Kata Kunci static

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK

Membuat dan Menggunakan Class

Jobsheet 09. Overloading and Overriding Method

Inheritance. Pertemuan 8 Pemrograman Berbasis Obyek

PERTEMUAN 13 PERANCANGAN BERORIENTASI OBJEK UNTUK MULTI KELAS

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class

INHERITANCE AND POLIMORPHISM PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM

BAB 3 CLASS DAN OBJECT. Tujuan:

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

Chapter 10 Polimorphism

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

KONSEP OOP: POLYMORPHISM

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

Inheritance. Topik 5/17/2013

Pemrograman Berbasis Objek Inheritance

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

Dasar-Dasar OOP di Java

Pemrograman Berorientasi. Abstract & Interface

JOBSHEET POLIMORFISME

LAPORAN V PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK

CSG2H3 Object Oriented Programming. Polymorphism -RSM-

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

Dasar-Dasar OOP di Java

PEWARISAN D E W I S A R T I K A, M. K O M

Praktikum 4 Konsep Inheritance, Polymorphism, dan Encapsulation

KONSEP OOP: PEWARISAN / INHERITANCE

IKG2I4 / Software Project I

Polymorphism (Polimorfisme)

BAB 1 PENGENALAN PEMROGRAMAN BERORIENTASI OBJEK

KONSEP OOP: POLYMORPHISM

Bab 8. Dasar-Dasar OOP

Bahasa Pemrograman :: Polimorfism and Abstraction

Pemrograman Berorientasi. Inheritance

(INHERITANCE) Nurochman

public class B extends A {... }

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Class & Object 2. Imam Fahrur Rozi

KONSEP OOP: PEWARISAN / INHERITANCE

Pertemuan 4 Halaman 1/1. Class Inheritance

PRAKTIKUM I Class dan Obyek

Gambar 1: Hirarki class

PRAKTIKUM III & IV PEMROGRAMAN BERORIENTASI OBJEK

A. TUJUAN PEMBELAJARAN 1. Memahami konsep package dan import 2. Menggunakan kata kunci this

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Bahasa Pemrograman 2.

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN JAVA 2

Pewarisan, Polimorfisme, dan Interface

MODUL 3. Inheritance, Abstract Class, Interface TUJUAN PRAKTIKUM LANDASAN TEORI. A. Inheritance

INTERAKSI ANTAR OBJECT

Overriding Method Overloading Method Class(iii) [Superclass and subclass] [constructor overloading] Keyword Super

BAB 5 INTERAKSI OBJEK. Tujuan:

Konsep Pemrograman Berorientasi Pada Objek Dengan. Java Netbeans

JOBSHEET 8 INHERITANCE (PEWARISAN)

PEMROGRAMAN BERORIENTASI OBJEK

Pemrograman Berorientasi. Class dan Obyek 2

POLIMORPHISM PEMROGRAMAN LANJUT. Dr. Eng. Herman Tolle. Sistem Informasi FILKOM UB Semester Genap 2016/2017

LAPORAN RESMI INHERITANCE

MODUL 3 PEWARISAN TUJUAN DASAR TEORI

Konsep Pemrograman Berbasis Obyek

IKG2I4 / Software Project I

Konsep Dasar Pemrograman Berorientasi Objek

Praktikum KPLBO Class dan Object I

LAPORAN RESMI PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK MODUL 3 ABSTRAKSI

Pemrograman Berorientasi Objek

Pemrograman Berorientasi Objek INHERITANCE

Abstract Class dan Interface. Viska Mutiawani, M.Sc

2015 BAHASA PEMROGRAMAN I. Pertemuan VI Inheritance (Pewarisan)

Object Oriented Programming (OOP) --Inheritance- Saniati STMIK Teknokrat, Bandar Lampung

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Bahasa Pemrograman 2.

1.Tujuan. 2. Latar Belakang. Mendefinisikan superclasses dan subclasses Override method dari superclasses Membuat method final dan class final

KONSEP OOP: PEWARISAN / INHERITANCE

Method yang ada pada parent class(superclass) didefinisikan kembali oleh kelas anaknya (subclass).

PRAKTIKUM 6 EXCEPTION

3/31/2011. Tujuan. Inheritance, Polymorphism,& Interfaces. Inheritance / pewarisan. Inheritance / pewarisan. Inheritance / pewarisan

BAB 1 PENGENALAN LINGKUNGAN KERJA JAVA

Transkripsi:

BAB 7 OVERLOADING DAN OVERRIDING Tujuan: Setelah mengikuti matakuliah ini, diharapkan mahasiswa mampu untuk menjelaskan konsep dari overloading dan overriding method, serta mengimplementasikannya dalam Java

7.1. Overloading Overloading adalah suatu keadaan dimana beberapa method sekaligus dapat mempunyai nama yang sama, akan tetapi mempunyai fungsionalitas yang berbeda. Contoh penggunaan overloading dilihat dibawah ini: Gambar(int t1) 1 parameter titik, untuk menggambar titik Gambar(int t1,int t2) 2 parameter titik, untuk menggambar garis Gambar(int t1,int t2,int t3) 3 parameter titik, untuk menggambar segitiga Gambar(int t1,int t2,int t3,int t4) 4 parameter titik, untuk menggambar persegi empat Overloading ini dapat terjadi pada class yang sama atau pada suatu parent class dan subclass- nya. Overloading mempunyai ciri- ciri sebagai berikut: 1. Nama method harus sama 2. Daftar parameter harus berbeda 3. Return type boleh sama, juga boleh berbeda import java.awt.point; public class Segiempat { int x1 = 0; int y1 = 0; int x2 = 0; int y2 = 0; public void buatsegiempat(int x1, int y1, int x2, int y2) { this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; public void buatsegiempat(point topleft, Point bottomright) { x1 = topleft.x; y1 = topleft.y; x2 = bottomright.x; y2 = bottomright.y; public void buatsegiempat(point topleft, int w, int h) { x1 = topleft.x; y1 = topleft.y; x2 = (x1 + w); y2 = (y1 + h);

void cetaksegiempat(){ System.out.print("Segiempat: <" + x1 + ", " + y1); System.out.println(", " + x2 + ", " + y2 + ">"); public static void main(string[] arguments) { Segiempat rect = new Segiempat(); System.out.println("Buat segiempat dengan koordinat (25,25) dan (50,50)"); rect.buatsegiempat(25, 25, 50, 50); rect.cetaksegiempat(); System.out.println(); System.out.println("Buat segiempat dengan point (10,10) dan point (20,20):"); rect.buatsegiempat(new Point(10,10), new Point(20,20)); rect.cetaksegiempat(); System.out.println(); System.out.print("Buat segiempat dengan 1 point (10,10), koodinat (50,50)"); rect.buatsegiempat(new Point(10,10), 50, 50); rect.cetaksegiempat(); Ketika program tersebut dijalankan, akan tampak hasil seperti dibawah ini : Buat segiempat dengan koordinat (25,25) dan (50,50) Segiempat: <25, 25, 50, 50> Buat segiempat dengan point (10,10) dan point (20,20): Segiempat: <10, 10, 20, 20> Buat segiempat dengan 1 point (10,10), koodinat (50,50)Segiempat:<10, 10, 60, 60> 7.2. Overriding Overriding adalah suatu keadaan dimana method pada subclass menolak method pada parent class- ny. Dalam artian, subklas sebenarnya sudah mewarisi method yang diturunkan dari superklasnya, akantetapi subklas berusaha untuk memodifikasi isi dari method yang sudah diwarisi tersebut dengan operasi atau isi yang lebih spesifik untuknya sendiri. Sebagai contohnya, superklas Hewan mempunyai method bersuara(). Tentu saja ketika ada klas Kucing, Anjing dan Kambing juga mewarisi method bersuara tersebut. Akantetapi di masing- masing subklas, method bersuara tersebut dideklarasikan kembali dan isinya dimodifikasi disesuaikan dengan kebutuhan subklas tersebut. Overriding mempunyai ciri- ciri sebagai berikut : 1. Nama method harus sama 2. Daftar parameter harus sama 3. Return type harus sama

Berikut ini contoh terjadinya overriding dimana method info() pada class Child meng- override method info() pada class parent: class Parent { public void info() { System.out.println( Ini class Parent ); class Child extends Parent { public void Info() { System.out.println( Ini class Child ); Contoh yang lain class Hewan { public String bersuara() { return suara hewan ; class Anjing extends Hewan { public String bersuara() { return hug..hug.. ; class Kucing extends Hewan { public String bersuara() { return miaw..miaw.. ; class Kambing extends Hewan { public String bersuara() { return mbek..mbek.. ; Dari beberapa contoh di atas terlihat bahwa di subklas, dideklarasikan kembali method yang sebenarnya sudah diwarisi dari superklas, akantetapi dengan isi yang berbeda dengan isi method yang dimiliki oleh superklas. Method yang terkena override yaitu yang ada di dalam superklas (overridden method) diharuskan tidak boleh mempunyai modifier yang lebih luas aksesnya dari method yang meng- override yaitu yang di subklas (overriding method).

Perhatikan gambar diagram klas berikut ini Pegawai +nip: String +nama: String +gaji: int +hitunggaji(): int Dosen +tunjangan: int +hitunggaji(): int Staff +hitunggaji(): int Dari diagram klas tersebut dibuat program dengan langkah sebagai berikut: 1. Buka kembali project MyApp 2. Buat paket baru dengan nama latihan5 3. Di dalam paket latihan5 buat klas Pegawai, Dosen dan Staff serta Main 4. Lengkapi klas Pegawai sebagai berikut package latihan5; public class Pegawai { public String nip, nama; public int gaji; public int hitunggaji(){ return gaji; 5. Lengkapi klas Dosen sebagai berikut package latihan5; public class Dosen extends Pegawai{ public int tunjangan; @Override public int hitunggaji(){ return (int) (gaji + tunjangan - 0.15 * (gaji + tunjangan)); 6. Lengkapi klas Staff sebagai berikut package latihan5;

public class Staff extends Pegawai{ @Override public int hitunggaji(){ float bonus = 0.2f*gaji; return (int) (gaji + bonus - 0.10 * (gaji + bonus)); 7. Kemudian lengkapi klas Main package latihan5; public class Main { public static void main(string[] arvg){ Dosen d = new Dosen(); d.nip = "1942191"; d.nama = "imam"; d.gaji = 2000000; d.tunjangan = 200000; System.out.println("Gaji total dosen "+d.nama+" = "+d.hitunggaji()); Staff s = new Staff(); s.nip = "62555"; s.nama = "rozi"; s.gaji = 1500000; System.out.println("Gaji total Staff "+s.nama+" = "+s.hitunggaji()); 8. Jlankan klas Main dan akan muncul hasil sebagai berikut run: Gaji total dosen imam = 1870000 Gaji total Staff rozi = 1620000 BUILD SUCCESSFUL (total time: 1 second) 9. Dari hasil yang muncl, terlihat bahwa ketika dipanggil method hitunggaji () dari objek d dan s yang dijalankan adalah method hitunggaji () yang ada di dalam klas Dosen dan Staff, bukan method hitunggaji () yang ada di superklasnya atau klas Pegawai.

BAB 8 POLIMORFISME Tujuan: Setelah menempuh matakuliah ini, diharapkan mahasiswa mampu mengerti konsep dan implementasi dalam Java terkait dengan: 1. Polimorfisme 2. Virrtual Methid Invocation 3. Polymorphic Arguments 4. Pernyataan Instance Of 5. Casting Object

8.1. Polimorfisme Polymorphism (polimorfisme) adalah kemampuan untuk mempunyai beberapa bentuk class yang berbeda. Polimorfisme ini terjadi pada saat suatu obyek bertipe parent class, akan tetapi pemanggilan constructornya melalui subclass. Misalnya deklarasi pernyataan berikut ini: Employee employee=new Manager(); dimana Manager() adalah kontruktor pada class Manager yang merupakan subclass dari class Employee. 8.2. Virtual Method Invocation Virtual Method Invocation (VMI) bisa terjadi jika terjadi polimorfisme dan overriding. Pada saat obyek yang sudah dibuat tersebut memanggil overridden method pada parent class, kompiler Java akan melakukan invocation (pemanggilan) terhadap overriding method pada subclass, dimana yang seharusnya dipanggil adalah overridden method. Berikut contoh terjadinya VMI: class Parent { int x = 5; public void Info() { System.out.println( Ini class Parent ); class Child extends Parent { int x = 10; public void Info() { System.out.println( Ini class Child ); public class Tes { public static void main(string args[]) { Parent tes=new Child(); System.out.println( Nilai x = + tes.x); tes.info(); Hasil dari running program diatas adalah sebagai berikut: Nilai x = 5 Ini class Child

Dari hasil di atas terlihat bahwa ketika diakses atribut x dari objek tes, maka yang muncul adalah nilai x dari superklas, bukan atribut x dari subklas. Akantetapi ketika diakses method Info () dari objek tes, yang muncul adalah method Info() dari subklas, bukan method Info() dari superklas. 8.3. Polymorphic Arguments Polymorphic arguments adalah tipe suatu parameter yang menerima suatu nilai yang bertipe subclass- nya. Berikut contoh dari polymorphics arguments: class Pegawai { class Manajer extends Pegawai { public class Tes { public static void Proses(Pegawai peg) { public static void main(string args[]) { Manajer man = new Manajer(); Proses(man); 8.4. Instance Of Pernyataan instanceof sangat berguna untuk mengetahui tipe asal dari suatu polymorphic arguments. Untuk lebih jelasnya, misalnya dari contoh program sebelumnya, kita sedikit membuat modifikasi pada class Tes dan ditambah sebuah class baru Kurir, seperti yang tampak dibawah ini: class Kurir extends Pegawai {

public class Tes { public static void Proses(Pegawai peg) { if (peg instanceof Manajer) { lakukan tugas-tugas manajer else if (peg instanceof Kurir) { else { lakukan tugas-tugas kurir lakukan tugas-tugas lainnya public static void main(string args[]) { Manajer man = new Manajer(); Kurir kur = new Kurir(); Proses(man); Proses(kur); 8.5. Casting Objects Seringkali pemakaian instanceof diikuti dengan casting object dari tipe parameter ke tipe asal. Misalkan saja program kita sebelumnya. Pada saat kita sudah melakukan instanceof dari tipe Manajer, kita dapat melakukan casting object ke tipe asalnya, yaitu Manajer. Caranya adalah seperti berikut: if (peg instanceof Manajer) { Manajer man = (Manajer) peg; lakukan tugas-tugas manajer

Dari diagram klas yang digunakan contoh dalam penbahasan inheritance, kita gunakan lagi sebagai conth dalam bab ini. Diagram klasnya seperti tampil dalam gambar di bawah ini: Pegawai +nip: String +nama: String +gaji: int +hitunggaji(): int Dosen +tunjangan: int +hitunggaji(): int Staff +hitunggaji(): int Langkah untuk simulasinya adalah sebagai berikut: 1. Buka kembali project MyOop 2. Buat paket latihan6 3. Copy klas Pegawai, Dosen dan Staff dari paket latihan5, kemudian paste ke dalam paket latihan6. 4. Modifikasi klas Dosen sebagai berikut package latihan6; public class Dosen extends Pegawai{ public int tunjangan; public int gajingajar; @Override public int hitunggaji(){ return (int) (gaji + tunjangan - 0.15 * (gaji + tunjangan)); public int getgajingajar(){ return gajingajar; 5. Modifikasi klas Staff package latihan6; public class Staff extends Pegawai{ public int gajilembur;

@Override public int hitunggaji(){ float bonus = 0.2f*gaji; return (int) (gaji + bonus - 0.10 * (gaji + bonus)); public int getgajilembur() { return gajilembur; 6. Dalam paket latihan6, buat klas Main dan isikan kode program seperti di bawah ini package latihan6; public class Main { public static int ambilgaji(pegawai peg) {//polimorfic argument //virtual method invocation int gaji = peg.hitunggaji(); if (peg instanceof Dosen) { Dosen d = (Dosen) peg;//casting objek gaji += d.getgajingajar(); else if (peg instanceof Staff) { Staff s = (Staff) peg; gaji += s.getgajilembur(); return gaji; public static void main(string args[]) { Dosen d = new Dosen(); d.nip = "1942191"; d.nama = "imam"; d.gaji = 2000000; d.tunjangan = 200000; d.gajingajar = 500000; System.out.println("Gaji total dosen "+d.nama+" = "+ambilgaji(d)); Staff s = new Staff(); s.nip = "62555"; s.nama = "rozi"; s.gaji = 1500000; s.gajilembur = 500000; System.out.println("Gaji total Staff "+s.nama+" = "+ambilgaji(s)); 7. Jalankan klas Main dan hasilnya akan keluar sebagai berikut run: Gaji total dosen imam = 2370000 Gaji total Staff rozi = 2120000 BUILD SUCCESSFUL (total time: 0 seconds)