Polymorphism (Polimorfisme)

dokumen-dokumen yang mirip
3/31/2011. Tujuan. Inheritance, Polymorphism,& Interfaces. Inheritance / pewarisan. Inheritance / pewarisan. Inheritance / pewarisan

Gambar 1: Hirarki class

Pewarisan, Polimorfisme, dan Interface

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

INHERITANCE AND POLIMORPHISM PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM

Pemrograman Berorientasi Objek 2

Chapter 10 Polimorphism

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN JAVA 2

Inheritance (Pewarisan) Pengertian dasar inheritance

Pemrograman Berbasis Objek. Interface. Politeknik Elektronika Negeri Surabaya

ABSTRACT & INTERFACE. Pemrograman Lanjut Herman Tolle

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

:: abstract class + interface. :: abstract class

Bahasa Pemrograman :: Polimorfism and Abstraction

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

Class Wrapper. Tujuan dari Class Wrapper

KONSEP OOP: POLYMORPHISM

IT652 Pemrograman Berorientasi Aspek. Ramos Somya

Pemrograman Berorientasi. Abstract & Interface

KONSEP OOP: POLYMORPHISM

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

ABSTRACT CLASS & INTERFACE

9/26/2011. Tujuan. Bekerja dengan Java Class Library. Pengenalan OOP. Pengenalan OOP. Class dan Object. Enkapsulasi

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

Bahasa Pemrograman 2.

Membuat dan Menggunakan Class

Pertemuan 4 Halaman 1/1. Class Inheritance

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

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

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

Abstract Class dan Interface. Viska Mutiawani, M.Sc

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

BEKERJA DENGAN JAVA CLASS LIBRARY

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

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

Pemrograman Berorientasi. Class dan Obyek 2

Review PBO. Ramos Somya

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

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

Modul Bahasa Pemrograman 1

Pemrograman Berbasis Objek (Polimorfisme)

Konsep Dasar Pemrograman Berorientasi Objek

Pemrograman Berorientasi. Inheritance

2015 BAHASA PEMROGRAMAN I. Pertemuan VI Inheritance (Pewarisan)

Inheritance dan Kata Kunci static

LAPORAN V PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Bahasa Pemrograman :: Inheritance

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

Bahasa Pemrograman 2.

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program.

Pemrograman Berorientasi Objek

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

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

Pemrograman Lanjut. Interface

Pemrograman Berorientasi. Polimorfisme dan Binding

JOBSHEET POLIMORFISME

Praktikum 3 Konsep Class, Attribute dan Method

(INHERITANCE) Nurochman

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

IKG2I4 / Software Project I

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

Pewarisan Sifat Objek. Nur Hasanah, M.Cs

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

Like mother, like daughter... [common saying]

KONSEP OOP: PEWARISAN / INHERITANCE

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

Object Oriented Programming (Class, Inheritance, Encapsulation dan Interface)

Praktikum 4 Konsep Inheritance, Polymorphism, dan Encapsulation

C#, Programming, Object-oriented. Pengenalan C# Erick Pranata. Edisi I

Bahasa Pemrograman 2.

Konsep Pemrograman Berbasis Obyek

Composition dan Inheritance

[Lanjutan] Nurochman

Pemrograman Lanjut Review Class dan Object PTIIK

Keyword this untuk memanggil private String pengarang; private String judul;

MEMBUAT KELAS SENDIRI. Dewi Sartika, M.Kom

Konsep Objek Oriented

Object Oriented Programming 1

KONSEP OOP: PEWARISAN / INHERITANCE

Bahasa Pemrograman 2.

Class dan Object. PBO/Java/Ayuliana/Revisi

Overriding Overloading Polymorphism

Pengenalan pemrograman berorientasi obyek

Praktikum 6 Abstract, Interface, Overloading, Overriding, dan Package

Jobsheet 09. Overloading and Overriding Method

Pemrograman Berorientasi Objek (PBO) By : Jeffry Montolalu, ST PERTEMUAN XIII POLYMORPHISM

Pemrograman Berorientasi Objek / Object Oriented Programming / (OOP) Nur Hasanah, M.Cs

PERTEMUAN 5 OOP. Objektif : Praktikan mengetahui konsep OOP. Praktikan dapat membuat program sederhana dengan konsep OOP.

UNIVERSITAS GUNADARMA

Pemograman Berorientasi Objek. Week 4 Initialization dan Instance dalam Kelas

CLASS, METHOD DAN MODIFIER

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

BAB 1 PENGENALAN PEMROGRAMAN BERORIENTASI OBJEK

Inheritance (Pewarisan Sifat) Imam Fahrur Rozi

PRAKTIKUM III & IV PEMROGRAMAN BERORIENTASI OBJEK

Inheritance. Pertemuan 8 Pemrograman Berbasis Obyek

IKG2I4 / Software Project I

BAB 7 OVERLOADING DAN OVERRIDING

Transkripsi:

Polymorphism (Polimorfisme) Pemrograman Berorientasi Objek Minggu 7 Alfa Faridh Suni

Polymorphisme * Poly + morph = banyak + bentuk * Polymorphism yang berarti satu objek dapat memiliki banyak bentuk yang berbeda. * Polymorphism adalah konsep sederhana dalam pemrograman berorientasi objek yang berarti kemampuan suatu variabel referensi objek untuk memiliki aksi yang berbeda bila method yang sama dipanggil, dimana aksi method tergantung dari tipe objeknya. * Keywords: abstract, interface, implements

Polymorphism Polymorphism Kemampuan sebuah variabel reference untuk merubah behavior sesuai dengan apa yang dipunyai object. polymorphism membuat objek- objek yang berasal dari subclass yang berbeda, diperlakukan sebagai objek- objek dari satu superclass. Hal ini terjadi ketika memilih method yang sesuai untuk diimplementasikan ke objek tertentu berdasarkan pada subclass yang memiliki method bersangkutan.

Polymorphism Kondisi yang harus dipenuhi supaya polimorfisme dapat diimplementasikan adalah : * * * * Method yang dipanggil harus melalui variabel dari basis class atau superclass. Method yang dipanggil harus juga menjadi method dari basis class. Signature (argumen/parameter) method harus sama baik pada superclass maupun subclass. Method access attribute pada subclass tidak boleh lebih terbatas dari basis class. (ingat tentang encapsulasi)

Polymorphism Pada contoh sebelumnya, kita diberikan parent class yaitu Person dan subclassnya adalah Student, sekarang kita tambahkan subclass lainnya dari Person yaitu Employee Berikut adalah hirarki class nya.

Polymorphism Dalam Java, kita dapat membuat referensi dari suatu superclass ke object dari subclassnya. Sebagai contoh, public static main( String[] args ) { Person ref; Student studentobject = new Student(); Employee employeeobject = new Employee(); ref = studentobject; //titik referensi Person kepada // sebuah object Student

Polymorphism misalnya, kita memiliki sebuah method getname dalam superclass Person. Dan kita meng- override method ini di kedua subclass yaitu Student dan Employee public class Student { public String getname(){ System.out.println( Student Name: + name); return name; public class Employee { public String getname(){ System.out.println( Employee Name: + name); return name;

Polymorphism Kembali ke method utama kita, ketika kita mencoba memanggil method getname dari referensi Person ref, method getname dari object Student akan dipanggil. Sekarang, jika kita memberi ref kepada object Employee, maka method getname juga akan dipanggil

Polymorphism public static main( String[] args ) { Person ref; Student studentobject = new Student(); Employee employeeobject = new Employee(); ref = studentobject; //titik referensi Person kepada object Student //getname dari class Student dipanggil String temp=ref.getname(); System.out.println( temp ); ref = employeeobject; //titik referensi Person kepada object Employee //getname dari class Employee dipanggil String temp = ref.getname(); System.out.println( temp );

Polymorphism Contoh lain yang menggambarkan polymorphism adalah ketika kita mencoba untuk passing reference kepada method jika kita memiliki sebuah method static printinformation yang menerima referensi Person sebagai parameter public static printinformation( Person p ){....

Polymorphism Sebenarnya kita dapat passing reference dari Employee dan Student kepada method printinformation selama kedua class tersebut merupakan subclass dari Person public static main( String[] args ) { Student studentobject = new Student(); Employee employeeobject = new Employee(); printinformation( studentobject ); printinformation( employeeobject );

Casting Object Instance dari class juga dapat di- casting menjadi instance dari class lain, dengan satu batasan :: Class asal dan tujuan harus direlasikan dalam inheritance, salah satu class harus berupa subclass dari class lain. Casting object digunakan untuk mengkonversi nilai primitif menuju tipe yang lebih besar, beberapa object tidak perlu mengalami casting secara explisit.

Casting Object Gunakan sintaks berikut untuk casting object, (classname)object classname - nama class tujuan object - reference untuk object asal

Contoh Casting Object Berikut ini merupakan contoh proses casting sebuah instance dari class VicePresident ke instance dari class Employee. VicePresident merupakan subclass dari class Employee dengan beberapa informasi tambahan. Employee emp = new Employee(); VicePresident veep = new VicePresident(); emp = veep; // casting explisit veep = (VicePresident)emp;

Abstract Class Abstract class Sebuah class yang tidak bisa diinstansiasi Sering muncul pada puncak hierarki class object-oriented programming(oop), mendefinisikan segala type action/tindakan yang mungkin dengan object semua subclass dari class

Abstract Class Method abstract Method di dalam abstract class tidak mempunyai implementasi Untuk membuat abstract method, tulis saja deklarasi method tanpa body dan gunakan keyword abstract Sebagai contoh, public abstract void somemethod();

Contoh Abstract Class public abstract class LivingThing { public void breath(){ System.out.println("Living Thing breathing..."); public void eat(){ System.out.println("Living Thing eating..."); /** * abstract method walk * Kita ingin method ini di-overrride oleh subclass dari * LivingThing */ public abstract void walk();

Abstract class Ketika sebuah class meng-extends abstract class LivingThing, diwajibkan meng-override abstract method walk(), jika tidak, subclass tersebut juga akan menjadi abstract class, dan oleh karena itu tidak bisa diinstansiasi Sebagai contoh, public class Human extends LivingThing { public void walk(){ System.out.println("Human walks...");

Petunjuk penulisan program Menggunakan abstract class untuk mendefinisi jenis-jenis yang luas dari behavior yang ada di puncak hirarki class object-oriented programming, dan menggunakan subclassnya untuk menyediakan detail implementasi dari abstract class.

interface

interface Interface Adalah semacam blok spesial yang hanya berisi tanda tangan method (dan mungkin konstan). Menggambarkan tandatangan dari seperangkat method, tanpa body Menggambarkan cara standard dan publik penetapan behavior class Mengijinkan class,dengan mengabaikan lokasi mereka di dalam hirarki class untuk menerapkan behavior. CATATAN: Interface memperlihatkan polymorphism juga, sejak program diperbolehkan memanggil sebuah method interface, dan versi yang sesuai dari method tersebut akan dieksekusi tergantung pada jenis object yang dilewatkan kepada pemanggilan method interface

Mengapa menggunakan interface? Untuk memiliki class yang tidak berhubungan yang mengimplementasikan method yang sama. Contoh: Class Line dan MyInteger Tidak berhubungan Keduanya mengimplementasikan method perbandingan isgreater isless isequal

Mengapa menggunakan interface? Untuk mengungkapkan sebuah interface pemrograman object tanpa pernyataan classnya Untuk model multi inheritance yang mengijinkan sebuah class untuk memiliki lebih dari satu superclass.

Membuat interface Untuk membuat sebuah interface, kita tulis: public interface [InterfaceName] { //beberapa method tanpa body

Membuat interface Sebagai contoh, mari buat sebuah interface yang mendefinisikan hubungan antara dua object sesuai dengan pesanan dari object. public interface Relation { public boolean isgreater( Object a, Object b); public boolean isless( Object a, Object b); public boolean isequal( Object a, Object b);

Membuat interface Untuk menggunakan interface, kita gunakan keyword implements Sebagai contoh, /** * Class ini menjelaskan segment garis */ public class Line implements Relation { private double x1; private double x2; private double y1; private double y2; public Line(double x1, double x2, double y1, double y2){ this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2;

Membuat interface public double getlength(){ double length = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)* (y2-y1)); return length; public boolean isgreater( Object a, Object b){ double alen = ((Line)a).getLength(); double blen = ((Line)b).getLength(); return (alen > blen); public boolean isless( Object a, Object b){ double alen = ((Line)a).getLength(); double blen = ((Line)b).getLength(); return (alen < blen); public boolean isequal( Object a, Object b){ double alen = ((Line)a).getLength(); double blen = ((Line)b).getLength(); return (alen == blen);

Membuat interface Ketika class Anda mencoba untuk mengimplementasikan sebuah interface, pastikan selalu bahwa Anda mengimplementasikan semua method dari interface tersebut, jika tidak, Anda akan mendapatkan kesalahan ini. Line.java:4: Line is not abstract and does not override abstract method isgreater(java.lang.object,java.lang.object) in Relation public class Line implements Relation 1 error ^

Interface vs. Abstract Class Semua interface method tidak memiliki body Beberapa Abstract class memiliki method dengan implementasi Sebuah interface hanya dapat didefinisikan constant Sebuah abstract class tampak seperti class biasa yang dapat mendeklarasikan variabel. Interface tidak memiliki hubungan inheritance secara langsung dengan setiap class tertentu, mereka didefinisikan secara independen. Abstract class dapat di-subclass-kan

Interface vs. Class Persamaan: Interface dan class adalah sama-sama sebuah type Hal ini berarti bahwa interface dapat digunakan di tempat dimana sebuah class dapat digunakan Sebagai contoh: PersonInterface pi = new Person(); Person pc = new Person(); Perbedaan: Anda tidak dapat membuat instance dari sebuah interface Sebagai contoh: PersonInterface pi = new PersonInterface(); //ERROR!

Interface vs. Class Persamaan: - Interface dan class, keduanya dapat mendefinisikan method Perbedaan: - Interface tidak memiliki segala implementasi dari method

Meng-extends Class vs. Implementasi interface Sebuah class hanya bisa meng-extends SATU superclass, tetapi juga bisa meng-implementasikan BANYAK interface Sebagai contoh: public class Person implements PersonInterface, LivingThing, WhateverInterface { //beberapa kode disini

Meng-extends Class vs. Implementasi interface Contoh lain: public class ComputerScienceStudent extends Student implements PersonInterface, LivingThing { //Beberapa kode disini

Inheritance antar interface Interface bukanlah bagian dari hirarki class, bagaimanapun juga interface dapat memiliki hubungan inheritance antar mereka sendiri Sebagai contoh: public interface PersonInterface {... public interface StudentInterface extends PersonInterface {...

Kesimpulan Inheritance (superclass, subclass) Menggunakan keyword super untuk mengakses field dan constructor dari superclass Meng-override Method Final Method dan Final Class Polymorphism (Abstract Class, interface)