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

dokumen-dokumen yang mirip
Polymorphism (Polimorfisme)

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

Inheritance (Pewarisan) Pengertian dasar inheritance

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN JAVA 2

Pemrograman Berbasis Objek. Interface. Politeknik Elektronika Negeri Surabaya

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

ABSTRACT & INTERFACE. Pemrograman Lanjut Herman Tolle

Bahasa Pemrograman :: Polimorfism and Abstraction

2015 BAHASA PEMROGRAMAN I. Pertemuan VI Inheritance (Pewarisan)

Chapter 10 Polimorphism

:: abstract class + interface. :: abstract class

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

Class Wrapper. Tujuan dari Class Wrapper

IT652 Pemrograman Berorientasi Aspek. Ramos Somya

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

KONSEP OOP: POLYMORPHISM

ABSTRACT CLASS & INTERFACE

KONSEP OOP: POLYMORPHISM

Membuat dan Menggunakan Class

Pemrograman Berorientasi. Abstract & Interface

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

Bahasa Pemrograman 2.

(INHERITANCE) Nurochman

Inheritance dan Kata Kunci static

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK

Konsep Dasar Pemrograman Berorientasi Objek

Review PBO. Ramos Somya

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

Bahasa Pemrograman :: Inheritance

Pertemuan 4 Halaman 1/1. Class Inheritance

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

Abstract Class dan Interface. Viska Mutiawani, M.Sc

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

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

Modul Bahasa Pemrograman 1

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

Pemrograman Berbasis Objek Inheritance

KONSEP OOP: PEWARISAN / INHERITANCE

Pemrograman Berorientasi. Inheritance

Inheritance. Topik 5/17/2013

Praktikum 3 Konsep Class, Attribute dan Method

Pemrograman Berorientasi. Class dan Obyek 2

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

IKG2I4 / Software Project I

KONSEP OOP: PEWARISAN / INHERITANCE

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

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

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

Inheritance. Pertemuan 8 Pemrograman Berbasis Obyek

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

Pemrograman Lanjut. Interface

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

MODUL 3 PEWARISAN TUJUAN DASAR TEORI

LAPORAN V PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

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

Composition dan Inheritance

Inheritance (Pewarisan Sifat) Imam Fahrur Rozi

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

Konsep Pemrograman Berbasis Obyek

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

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

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

BEKERJA DENGAN JAVA CLASS LIBRARY

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

INTERAKSI ANTAR OBJECT

ABSTRACT CLASS DAN INTERFACE

Pewarisan Sifat Objek. Nur Hasanah, M.Cs

CLASS, METHOD DAN MODIFIER

Pemrograman Lanjut Review Class dan Object PTIIK

Praktikum 4 Konsep Inheritance, Polymorphism, dan Encapsulation

Pemograman Berorientasi Objek. Week 3 Abstrak dan Interface dalam suatu kelas

Pemrograman Lanjut. Constructor. Aryo Pinandito, ST, M.MT Team Teaching Pemrograman Lanjut

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

subclass class manapun private default protected public package yang sama

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

Bahasa Pemrograman 2.

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

Konsep Objek Oriented

Class dan Object. PBO/Java/Ayuliana/Revisi

Pemrograman Berorientasi Objek

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

Pemrograman Berorientasi Objek Danu Wira Pangestu

Pengenalan pemrograman berorientasi obyek

Pemrograman Lanjut Tipe Data dan Constructor PTIIK

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

Konsep Pemrograman Berorientasi Obyek. Maria Ulfah S Nurochman

PRAKTIKUM I Class dan Obyek

Bahasa Pemrograman 2.

Pemrograman Lanjut. Class : Deeper Look 2

OVERLOADING, CONSTRUCTOR DAN DESTRUCTOR. Dewi Sartika, M.Kom

Pemrograman Berbasis Objek (Polimorfisme)

Pemograman Berorientasi Objek. Week 4 Initialization dan Instance dalam Kelas

KONSEP OOP: PEWARISAN / INHERITANCE

Bahasa Pemrograman 2.

Transkripsi:

Tujuan JAVA Education Network Indonesia Inheritance,,& Interfaces Pengenalan Pemrograman 1 Pada akhir bab, Anda diharapkan mampu untuk Menjelaskan super class dan subclass Meng-override method dari superclass Membuat final method dan final class (Abstract Class, Interfaces) jeni.jardiknas.org Dalam Java, semua class, termasuk class yang membangun Java API, adalah sub class dari Object super class Contoh hirarki class ditampilkan di bawah ini Superclass Class yang terletak diatasnya class tertentu dalam hirarki. Subclass Class yang terletak dibawahnya class tertentu dalam hirarki. Inheritance /pewarisan Keuntungan Inheritance dalam OOP Reusability Ketika behavior(method) dideklarasikan dalam superclass, behavior tersebut otomatis diwariskan ke seluruh subclass Jadi, Anda dapat meng-enkode method hanya sekali dan mereka dapat digunakan oleh seluruh subclass Sebuah subclass hanya perlu mengimplementasikan perbedaan antara dirinya sendiri dan parent-nya Untuk mengambil sebuah class, gunakan keyword extends. Untuk lebih jelasnya, mari buat parent class sederhana. Misalkan kita mempunyai parent class bernama Person. public class Person { protected String name; protected String address; /** * Default constructor */ public Person(){ System.out.println( Inside PersonConstructor ); name = ""; address = "";. 1

Sekarang, kita buat class lain bernama Student Karena murid juga seseorang, kita putuskan untuk meng-extend class Person, sehingga kita dapat mewariskan semua properti dan method yang telah ada di class Person. Untuk itu, kita bisa menulis public class Student extends Person { public Student(){ System.out.println( Inside StudentConstructor );. Ketika sebuah object Student diinstansiasi, default constructor dari superclass Student di-invoke secara implisit untuk melakukan inisialisasi seperlunya. Setelah itu, pernyataan di dalam consuctror subclass dijalankan. Untuk memperjelasnya, perhatikan kode dibawah ini, public static void main( String[] args ){ Student anna = new Student(); Flowchart program ditampilkan dibawah ini Dalam kode ini, kita membuat sebuah object dari class Student. Hasil dari program adalah Inside PersonConstructor Inside StudentConstructor Keyword super Keyword super Sebuah subclass dapat juga memanggil secara eksplisit sebuah constructor superclass yang ada diatasnya. Dapat dilakukan dengan menggunakan pemanggilan constructor super. Pemanggilan constructor super didalam constructor subclass akan mengakibatkan eksekusi dalam constructor yang relevan dari superclass, yang berdasarkan pada argumen-argumen yang dilewatkan. Sebagai contoh, pada contoh sebelumnya yaitu class Person dan Student, kita tunjukkan sebuah contoh pemanggilan constructor super. Tuliskan kode berikut untuk class Student public Student(){ super( "SomeName", "SomeAddress" ); System.out.println("Inside StudentConstructor"); 2

Keyword super Keyword super Beberapa hal untuk diingat ketika menggunakan pemanggilan constructor super Pemanggilan super() HARUS DIJALANKAN SESUAI DENGAN PERNYATAAN PERTAMA DALAM SEBUAH CONSTRUCTOR. Pemanggilan super() hanya dapat digunakan di dalam definisi constructor. Hal ini menjelaskan bahwa constructor this() dan pemanggilan super() TIDAK DAPAT DIJALANKAN SECARA BERSAMAAN DI DALAM CONSTRUCTOR YANG SAMA. Penggunaan lainnya dari super adalah mengacu kepada para anggota superclass. Sebagai contoh, public Student() { super.name = somename ; super.address = some address ; Meng-override method Contoh Jika untuk beberapa alasan sebuah class tambahan perlu memiliki suatu implementasi yang berbeda dari method tertentu dari superclassnya, meng-override method bisa membuktikan kegunaanya. Sebuah subclass dapat meng-override method yang didefinisikan di dalam superclassnya dengan menyediakan sebuah implementasi baru untuk method tersebut. Andaikan kita memiliki implementasi berikut ini untuk method getname didalam superclass Person public class Person { public String getname(){ System.out.println("Parent getname"); Contoh Untuk meng-override method getname dari superclass Person, kita tulis di dalam subclass Student. public class Student extends Person{ public String getname(){ System.out.println("Student getname"); Sekarang, ketika kita meng-invoke method getname dari object subclass Student, method getname yang di-override akan dipanggil, dan hasilnya akan menjadi, Student getname Final Class Final Class Class yang tidak bisa di-extends Untuk mendeklarasikan final class, kita tulis, public final ClassName{ Contoh public final class Person { Contoh lain dari final class adalah class wrapper Anda dan String. 3

Final Method dan class Contoh Final Method Method yang tidak bisa di-override Untuk mendeklarasikan final method, kita tulis, public final [returntype] [methodname]([parameters]){ Static method secara otomatis final. public final String getname(){ Kemampuan sebuah varibel referensi untuk merubah behavior sesuai dengan apa yang object punya. Hal ini mengijinkan multiple object dari class yang berbeda dianggap seperti sebuah object dari sebuah superclass, ketika memilih secara otomatis method yang tepat untuk menggunakan object tertentu berdasarkan pada subclassnya. 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. Untuk menjelaskan polymorphism, mari kita bahas sebuah contoh. Dalam Java, kita dapat membuat referensi yang berasal dari jenis superclass kepada sebuah object dari subclassnya. Sebagai contoh, public static main( String[] args ) { Person ref; Student studentobject = new Student(); Employee employeeobject = new Employee(); Umpamakan sekarang kita memiliki sebuah method getname dalam superclass Person kita. 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); ref = studentobject; //titik referensi Person kepada // sebuah object Student public class Employee { public String getname(){ System.out.println( Employee Name + name); 4

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 1 public static main( String[] args ) { 2 Person ref; 3 Student studentobject = new Student(); 4 Employee employeeobject = new Employee(); 5 ref = studentobject; //titik referensi Person kepada 6 // object Student 7 //getname dari class Student dipanggil 8 String temp=ref.getname(); 9 System.out.println( temp ); 10 ref = employeeobject; //titik referensi Person kepada 11 // object Employee 12 13 //getname dari class Employee dipanggil 14 String temp = ref.getname(); 15 System.out.println( temp ); 16 Contoh lain yang menggambarkan polymorphism adalah ketika kita mencoba untuk melewatkan referensi kepada method Umpamakan kita memiliki sebuah static method printinformation yang menerima referensi Person sebagai parameter public static printinformation( Person p ){. Sebenarnya kita dapat melewatkan sebuah referensi dari jenis Employee dan jenis Student kepada method printinformation selama mereka adalah subclass dari Person public static main( String[] args ) { Student studentobject = new Student(); Employee employeeobject = new Employee(); printinformation( studentobject ); printinformation( employeeobject ); Abstract Class Abstract Class Abstract class Sebuah class yang tidak bisa diinstansiasi Sering muncul pada puncak dari hirarki class object-oriented programming(oop), mendefinisikan segala type action / tindakan yang mungkin dengan object semua subclass dari 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(); 5

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 Classes 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 /** * abstract method walk * Kita ingin method ini di-overrride oleh subclass dari * LivingThing */ public abstract void walk(); 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. Interfaces Interfaces 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 Interfaces? 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 6

Mengapa menggunakan Interfaces? Untuk mengungkapkan sebuah interface pemrograman object tanpa pernyataan classnya Untuk model multi inheritance yang mengijinkan sebuah class untuk memiliki lebih dari satu superclass. Untuk membuat sebuah interface, kita tulis public interface [InterfaceName] { //beberapa method tanpa body 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); 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; 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); 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.java4 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 7

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! Persamaan Interface vs. Class Interface dan class, keduanya dapat mendefinisikan method Perbedaan Interface tidak memiliki segala implementasi dari method Meng-extends Class vs. Implementasi Interfaces 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 Interfaces Contoh lain public class ComputerScienceStudent extends Student implements PersonInterface, LivingThing { //Beberapa kode disini Inheritance antar Interfaces 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 { 8

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