Polymorphism. Oleh : Agus Priyanto, M.Kom

dokumen-dokumen yang mirip
BAB 7 OVERLOADING DAN OVERRIDING

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

Praktikum 8 Polymorphism

Employee employee=new Manager();

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

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

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

Overriding Overloading Polymorphism

A. TUJUAN PEMBELAJARAN. 1. Menerapkan konsep enkapsulasi pada class 2. Mendeklarasikan suatu constructor

Dasar-Dasar OOP di Java

Inheritance (Pewarisan) Pengertian dasar inheritance

Dasar-Dasar OOP di Java

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Praktikum 6 Class Design (Encapsulation)

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Overriding Overloading Polymorphism

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

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

INTERAKSI ANTAR OBJECT

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

Modul Bahasa Pemrograman 1

Bab 8. Dasar-Dasar OOP

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

Praktikum 7. Dasar-dasar OOP di Java

Praktikum 4 Konsep Inheritance, Polymorphism, dan Encapsulation

BAB 6 INHERITANCE Tujuan:

LAPORAN V PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

KONSEP OOP: POLYMORPHISM

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

Bahasa Pemrograman 2.

8 - Overriding dan Overloading

Pemrograman Berorientasi Objek INHERITANCE

subclass class manapun private default protected public package yang sama

Pemrograman Berorientasi. Polimorfisme dan Binding

Inheritance. Pertemuan 8 Pemrograman Berbasis Obyek

PRAKTIKUM III & IV PEMROGRAMAN BERORIENTASI OBJEK

Jobsheet 09. Overloading and Overriding Method

INHERITANCE AND POLIMORPHISM PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM

KONSEP OOP: POLYMORPHISM

Chapter 10 Polimorphism

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

Pemrograman Berorientasi. Inheritance

Pemrograman Berbasis Objek Inheritance

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

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

Bahasa Pemrograman :: Polimorfism and Abstraction

Politeknik Elektronika Negeri Surabaya

public class B extends A {... }

Inheritance dan Kata Kunci static

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni

KONSEP OBJEK ORIENTASI PROGRAM

Inheritance. Topik 5/17/2013

Java Fundamentals. Herman Tolle. Program Teknologi Informasi & Ilmu Komputer UNIVERSITAS BRAWIJAYA

KONSEP OOP: PEWARISAN / INHERITANCE

Tutorial FDM Nurul Huda 2008, bundled by samsonasik. Modul Java 1

Pemrograman Berorientasi. Class dan Obyek 2

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

Class & Object 2. Imam Fahrur Rozi

Pewarisan (Inheritance)

Bahasa Pemrograman 2.

MODUL 3 PEWARISAN TUJUAN DASAR TEORI

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

KONSEP OOP: PEWARISAN / INHERITANCE

IKG2I4 / Software Project I

PRAKTIKUM I Class dan Obyek

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN JAVA 2

Pemrograman Berbasis Objek. Enkapsulasi. Yuliana Setiowati. Politeknik Elektronika Negeri Surabaya

Object Oriented Programming 1

Class & Object 2 ~Praktikum~ Imam Fahrur Rozi

Enkapsulasi. Politeknik Elektronika Negeri Surabaya. Enkapsulasi. public void Info() { System.out.println( Saya siswa PENS );

MODUL PRAKTIKUM BERORIENTASI OBJEK NINF615 SEMESTER GASAL 2016/2017 PROGRAM STUDI S1 TEKNIK INFORMATIKA

Pewarisan(Inheritance) Oleh: Mike Yuliana PENS-ITS

(INHERITANCE) Nurochman

PEMROGRAMAN JAVA. Yoannita, S.Kom. Class & Method sederhana Konsep Pemrograman Berorientasi Objek. Company LOGO

Pengenalan Polimorfisme Implementasi Polimorfisme

CSG2H3 Object Oriented Programming. Polymorphism -RSM-

Konsep Pemrograman Berbasis Obyek

PRAKTIKUM 2 PEMROGRAMAN BERORIENTASI OBJEK

Membuat dan Menggunakan Class

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN JAVA 2

Inheritance (Pewarisan Sifat) Imam Fahrur Rozi

UNIVERSITAS GUNADARMA

Pertemuan 11 Object Oriented Program

Java Fundamentals. Herman Tolle. Program Teknologi Informasi & Ilmu Komputer UNIVERSITAS BRAWIJAYA

Pengenalan pemrograman berorientasi obyek

2015 BAHASA PEMROGRAMAN I. Pertemuan VI Inheritance (Pewarisan)

Pemrograman Lanjut Jurusan S1 Teknik Informatika. 9/17/2012 Ratno

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

Pertemuan 4 Halaman 1/1. Class Inheritance

PEMROGRAMAN BERORIENTASI OBJEK

Konsep Pemrograman Berorientasi Pada Objek Dengan. Java Netbeans

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

IKG2I4 / Software Project I

ENKAPSULASI. 1. Kompetensi Setelah kegiatan perkuliahan selesai, mahasiswa diharapkan dapat:

CLASS PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM JOGJAKARTA

JOBSHEET POLIMORFISME

BAB 12 ENKAPSULASI, INHERITANCE DAN POLIMORPISME

LAPORAN RESMI INHERITANCE

Transkripsi:

Polymorphism Oleh : Agus Priyanto, M.Kom

Tujuan Perkuliahan Memahami dan menerapkan konsep polimorfisme dalam pemrograman Memahami proses terjadinya Virtual Method Invocation Memahami dan menerapkan polymorphic arguments dalam pemrograman

Memahami penggunaan instanceof dan cara melakukan casting object Memahami tentang Overloading dan Overriding

Introduction Polymorphism Polymorphism berasal dari bahasayunani yang berarti banyak bentuk Konsep ini memungkinkan digunakannya suatu interface yang sama untuk memerintah obyek agar melakukan aksi atau tindakan yang mungkin secara prinsip sama namun secara proses berbeda

Dalam konsep yang lebih umum sering kali polymorphism disebut dalam istilah satu interface banyak aksi Contoh yang konkrit dalam dunia nyata yaitu Contoh yang konkrit dalam dunia nyata yaitu Mobil Mobil yang ada dipasaran terdiri atas berbagai tipe dan berbagai merk, namun semuanya memiliki interface kemudi yang sama, seperti: stir, tongkat transmisi, pedal gas dan rem Jika seseorang dapat mengemudikan satu jenis mobil saja dari satu merk tertentu, maka orang itu akan dapat mengemudikan hamper semua jenis mobil yang ada, karena semua mobil tersebut menggunakan interface yang sama.

Harus diperhatikan disini bahwa interface yang sama tidak berarti cara kerjanya juga sama Missal pedal gas, jika ditekan maka kecepatan mobil akan meningkat, tapi bagaimana proses peningkatan kecepatan ini dapat berbeda-beda untuk setiap jenis mobil

Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi obyek-obyek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya.

Misal manager tersebut ingin memperoleh data dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bag administrasi untuk mengambilnya

Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui obyek petugas administrasi Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar obyek-obyek yang ada karena setiap obyek memiliki deskripsi tugasnya sendiri

Contoh 1 Bentuk luas Segitiga luas Lingkaran luas Bujursangkar luas PRINT PRINT PRINT TEXT object GRAPH object IMAGE object Contoh 2 30000 25000 20000 15000 10000 B L U E S K Y 5000 0 North South East West

Kelas A variabelinstanz metodex() metodey KelasB mewarisi KelasA KelasB Dengan sendirinya KelasB mewarisi semua metode dan variabel instan milik KelasA yang tidak bersifat private metodew Metode Tambahan

Virtual Method Invocation (VMI) Virtual Method Invocation (VMI) bisa terjadi jika terjadi polimorfisme dan Overriding Pada saat obyek yang sudah dibuat tersebut 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

class Parent int x = 5; public void Info() Parent.java System.out.println ("Ini class Parent"); class Child extends Parent int x = 10; public void Info() Child.java System.out.println ("Ini class Child"); public class Test public static void main(string args[]) Parent tes = new Child(); System.out.println ("Nilai x = " + tes.x); tes.info() Test.java Hasil dari running program : Nilai x =10 Ini class Child

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... Pegawai.java Manajer.java public class Tes Tes.java public static void Proses(Pegawai peg)... public static void main(string args[]) Manajer man = new Manajer(); Proses(man);

Pernyataan instanceof 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... Kurir.java public class Tes public static void Proses(Pegawai peg) if (peg instanceof Manajer)... lakukan tugas-tugas manajer else if (peg instanceof Kurir)... lakukan tugas-tugas kurir... else... lakukan tugas-tugas lainnya... public static void main(string args[]) Manajer man = new Manajer(); Kurir kur = new Kurir(); Proses(man); Proses(kur); Tes.java

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: a. Parameter titik, untuk menggambar titik Gambar(int t1) b. Parameter titik, untuk menggambar garis Gambar(int t1,int t2) c. Parameter titik, untuk menggambar segitiga Gambar(int t1,int t2,int t3) d. Parameter titik, untuk menggambar persegi empat Gambar(int t1,int t2,int t3,int t4)

Overloading ini dapat terjadi pada class yang sama atau pada suatu parent class dan subclass-nya Overloading mempunyai ciri-ciri sebagai berikut : a. Nama method harus sama b. Daftar parameter harus berbeda c. Return type boleh sama, juga boleh berbeda

Overloading Construktor Kita dapat menyembunyikan information dari suatu class sehingga anggota-anggota class tersebut tidak dapat diakses dari luar Adapun caranya adalah cukup dengan memberikan akses kontrol private ketika mendeklarasikan suatu atribut atau method. Contoh : private int nrp;

public class Siswa private int nrp; public void setnrp(int n) nrp=n; Konstruktor (konstruktor) adalah suatu method yang pertama kali dijalankan pada saat pembuatan suatu obyek. Konstruktor mempunyai ciri yaitu: Mempunyai nama yang sama dengan nama class Tidak mempunyai return type (seperti void, int, double, dan lainlain)

Suatu class dapat mempunyai lebih dari 1 konstruktor dengan syarat daftar parameternya tidak boleh ada yang sama public class Siswa public class Siswa private int nrp; private String nama; public Siswa(String m) nrp=0; nama= ; public Siswa(int n, String m) nrp=n; nama=m;

Percobaan 1. Percobaan 1 : Melakukan enkapsulasi pada suatu class Jika enkapsulasi dilakukan pada class diagram diatas, maka akan berubah menjadi:

2. Percobaan 2 : Melakukan overloading konstruktor

Dari class diagram tersebut, dapat diimplementasikan ke dalam program sebagai berikut : public class Mahasiswa private int nrp; private String nama; public Mahasiswa() nrp=0; nama= ; public Mahasiswa(String nama) nrp=0; this.nama=nama; public Mahasiswa(int nrp, String nama) this.nrp=nrp; this.nama=nama;

Melakukan Overloading Pada Method 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 cetaksegitiga() System.out.print("Segiempat : <"+x1+","+y1); System.out.print(","+x2+","+y2+">");

public static void main (String[] args) Segiempat rect = new Segiempat(); System.out.println ("Buat segiempat dengan koordinat(25,25) dan (50,50)"); rec.buatsegiempat (25,25,50,50); rect.cetaksegiempat(); System.out.println(); System.out.println("Buat segiempat dengan point (10,10) dan point (20,20)"); rec.buatsegiempat (new Point(10,10), new Point (20,20); rect.cetaksegiempat(); System.out.println(); System.out.println("Buat segiempat dengan 1 point (10,10) dan koordinat (50,50)"); rec.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>

Overriding Overriding adalah suatu keadaan dimana method pada subclass menolak method pada parent class-nya. 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() Parent.java System.out.println ("Ini class Parent"); class Child extends Parent Public void Info() Child.java System.out.println ("Ini class Child");

Method yang terkena override (overridden method) diharuskan tidak boleh mempunyai modifier yang lebih luas aksesnya dari method yang meng-override (Overriding method)