Gambar 1. Deklarasi Interface MouseListener

dokumen-dokumen yang mirip
A. TUJUAN PEMBELAJARAN

Class dan Object. PBO/Java/Ayuliana/Revisi

Pemrograman Berorientasi. Abstract & Interface

TPI4202 e-tp.ub.ac.id

Modul 9: antarmuka grafis (GUI) dalam window

Membuat User Interface dengan Swing. Program yang dibuat sebelumnya selalu berbasis console User lebih senang berinteraksi dengan

ALUR PROGRAM A.PERCABANGAN 1. IF. 2. IF-ELSE Percabangan ini untuk memilih salah satu dari dua kemungkinan kemunculan.

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

Konsep Dasar Pemrograman Berorientasi Objek

PEMAHAMAN DASAR DASAR JAVA

GUI Event Handling. minggu 13. Wednesday, 16 May 12

GUI & Event Handling. Viska Mutiawani, M.Sc

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

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

PAKET (PACKAGE) 20 Januari 2012

TPI4202 e-tp.ub.ac.id

Badiyanto, S.Kom., M.Kom. PBO java

GUI & Event Handling. Viska Mutiawani, M.Sc. 1 Viska Mutiawani - Informatika FMIPA Unsyiah

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

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

1.Tujuan. 2. Latar Belakang

Dasar Pemrograman Java. H. Risdiandri Iskandar, SKom,MM 1

DIK-020 Pemograman Berorientasi Objek 5/24/2012

2 TIPE DATA DAN VARIABEL

BAHASA PEMROGRAMAN JAVA

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

IF PEMROGRAMAN LANJUT EVENT. Oleh : Andri Heryandi, M.T.

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

GUI Event Handling. 5. Mendiskusikan keuntungan-keuntungan dari menggunakan inner dan anonymous class

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita

BAB II VARIABEL DAN TIPE DATA

Inheritance dan Kata Kunci static

Membuat dan Menggunakan Class

Bab Tujuan. 8.2 Delegation Event Model

PEMROGRAMAN BERORIENTASI OBJEK

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

DASAR PEMOGRAMAN JAVA

IKG2I4 / Software Project I

Pemrograman Lanjut Review Class dan Object PTIIK

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

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

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

Output : Beavis Mess With Butthead Beavis : Damn You!!! Butthead Butthead Make Revenge To Beavis Butthead : Damn You!!! Beavis

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

BAB VIII CLASS ABSTRACT & CLASS INTERFACE. //abstract class bisa, kelas biasa bisa System.out.println("Ini nama");

Bab 8. Dasar-Dasar OOP

Tipe if : If tanpa else (if) If dengan else (if-else) Nested if

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

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

Pertemuan 4 Array pada Java

PRAKTIKUM 5 PAKET, IMPORT DAN INTERFACE

Obyektif : KONTROL ALUR PROGRAM

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

ABSTRACT CLASS DAN INTERFACE

MODUL 3 PEWARISAN TUJUAN DASAR TEORI

INHERITANCE AND POLIMORPHISM PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM

IKG2I4 / Software Project I

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK

KUM 3 IMPLEMENTASI LIST

Bahasa Pemrograman 2.

TPI4202 e-tp.ub.ac.id. Lecture 4 Mas ud Effendi

BAB IV HASIL PENELITIAN DAN PENERAPAN

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

Reserved words Reserved words atau keywords merupakan kata-kata spesifik digunakan oleh compiler untuk keperluan pemrograman. Contoh reserved words

Score: Persentage: % ~ u ~ Generated by Foxit PDF Creator Foxit Software For evaluation only.

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

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

Pengenalan JavaScript

Percabangan & Perulangan

int i = 0; while (i < 10) { System.out.println( Informatika Unpas ); i++; }

Percobaan 5 Paket dan Import, Interface

Dasar-Dasar OOP di Java

Pertemuan 4 Halaman 1/1. Class Inheritance

ABSTRACT CLASS. Imam Fahrur Rozi

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)

Modul Bahasa Pemrograman 1

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

Modul Praktikum Bahasa Pemrograman 1

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

SUMBER BELAJAR PENUNJANG PLPG

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom

BAB Argument Command-Line dan System Properties

Modul 2. [access specifier] [tipe data] [nama variabel];

Anonymous Inner Class

KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan.

PEMROGRAMAN BERORIENTASI OBJEK

Francisco Silvano

PAKET DAN INTERFACE MUH. IZZUDDIN MAHALI, M.CS. PT. Elektronika FT UNY

Pemrograman Berorientasi Objek INHERITANCE

PERTEMUAN 3 OBJEK DAN CLASS

BAB 6. Struktur Kontrol

Pemrograman Berorientasi Obyek. Dasar Pemrograman Java

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

Pertemuan 2 Struktur Kontrol Percabangan

Pemrograman Berorientasi Objek

Pemrograman Jaringan 12 CORBA

Modul 4: Lebih Dalam lagi tentang Class, Objek dan Method

Membuat Menu Login Sederhana [Full Coding]

I. Tujuan Instruksional Umum Mengenal konsep dasar berorientasi objek Memahami dan dapat mengimplementasikan Kelas dan Objek pada java.

Transkripsi:

INTERFACE Interface adalah kumpulan method yang memuad deklarasi dan struktur method, juga field-field tanpa detail implementasinya. Interface digunakan bila ingin mengaplikasikan suatu method yang spesifik (bukan dari pewarisan kelas), interface bersifat disisipkan (embedded) pada program, dan programmer diberikan keleluasaan untuk merancang dan mendefinisikan sendiri detail prosesnya. Kelas dan Interface fundamental yang dijadikan library referential dikenal dengan istilah API (Application Programming Interface). Secara umum sebuah interface dideklarasikan dengan perintah : interface namainterface [extends parentinterface] { [deklarasi field-dield(konstanta)] [deklarasi method-method] Mendeklarasikan method dalam interface mirip dengan mendeklarasikan method abstract, dimana deklarasi method tidak diakhiri pasangan kurung kurawal, melainkan tanda titik koma (;) return-type namamethod ([daftar parameter]) Field-field yang didefinisikan pada interface secara otomatis bersifat static dan final, yang berarti mereka hanya bertindak sebagai konstanta. Sedangkan secara umum, suatu class dibuat agar mengimplementasi suatu interface dengan cara sebagai berikut : class namaclass [extends parentclass] [implements interface1, interface2,...]{ [deklarasi field-field] [deklarasi method-method milik class ini] [deklarasi method-method yang terdefinisi pada interface-interface yang di implementasi oleh class tersebut] Contoh : import java.awt.*; import java.awt.event.*; import java.awt.event.mouselistener; public class AustinPower extends Frame implements MouseListener { Button behave; public static void main (String args[]) { AustinPower spywhoshaggedme = new AustinPower(); spywhoshaggedme.setsize(100,100); spywhoshaggedme.setvisible(true); public AustinPower() { behave = new Button ("I Am a Button"); behave.addmouselistener(this); add(behave); public void mouseentered(mouseevent me) { behave.setlabel ("Click me...!!!"); public void mouseexited(mouseevent me) { behave.setlabel ("Bye...Bye...!!!"); public void mousepressed(mouseevent me){ public void mousereleased(mouseevent me){ public void mouseclicked(mouseevent me){ Gambar 1. Deklarasi Interface MouseListener PBO/Ayuliana/Revisi 2009 1

package java.awt.event; import java.util.eventlistener; /** * The listener interface for receiving mouse event on a component. * @version 1.7 07/01/98 * @author Carl Quinn */ public interface MouseListener extends EventListener { public void mouseclicked (MouseEvent e); public void mousepressed (MouseEvent e); public void mousereleased (MouseEvent e); public void mouseentered (MouseEvent e); public void mouseexited (MouseEvent e); Gambar 2. Penggunaan Interface MouseListener Output : Pada contoh diatas, dengan mengimplementasikan MouseListener, class AustinPower dikatakan menandatangani kontrak yang menyatakan bahwa ia mampu menunjukkan kelakuan-kelakuan seorang MouseListener (yaitu bereaksi terhadap event-event yang berhubungan dengan mouse) Semua method yang terdefininisi pada interface bersifat abstrak, tidak ada implementasinya. Salah satu konsekuensi dari totalitas abstraksi pada interface adalah semua method yang tertera pada interface harus diimplementasikan oleh implementor. Perbedaan antara interface dengan abstract class, yaitu interface merupakan solusi atas prinsip multiple inheritance. Misalkan Terdapat class MouseDropper yang memiliki method-method abstract seperti pada MouseListener. Apa bedanya AustinPower extends MouseDropper dengan AustinPower implements MouseListener? Pada perintah extends menyiratkan adanya garis keturunan sedangkan perintah implements tidak. Perhatikan contoh deklarasi berikut : class Raka extends Manusia implements Dosen, Snipper {... tetapi tidak berlaku untuk deklarasi berikut : class Raka extends Manusia, Sapi {... POLYMORPHISM Polymorphism didefinisikan sebagai kemampuan beberapa objek bertipe sama bereaksi secara berbeda terhadap message yang sama, perhatikan contoh berikut : 1 public class KattParty { 2 public static void main (String args[]) { 3 Katt[] kandangkatt = new Katt[3]; 4 kandangkatt[0] = new Anggora(); 5 kandangkatt[1] = new Siam(); 6 kandangkatt[2] = new Katt(); 7 for (int I = 0 ; I < 3 ; I++) { 8 kandangkatt[i].speak(); 9 Gambar 3. Pesta Kucing PBO/Ayuliana/Revisi 2009 2

Output : Siam Constructor Mmurrr.Mmurrr. Disetiap iterasi pada loop diatas, pada dasarnya dikirimkan pesan yang sama ke objek-objek yang bertipe sama (yaitu Katt, sesuai dengan definisi array pada baris 3), speak(). Walaupun begitu, ternyata masing-masing bereaksi dengan caranya sendiri-sendiri. Contoh lain dari polymorphism yaitu, misalkan dibuat aplikasi client/server, dimana client mengirimkan objek-objek Katt (dan tentunya bisa juga apapun turunan Katt) ke server. Pada kasus tersebut, server bersedia menerima Kat-Kat itu tanpa terlalu mempermasalahkan perbedaan spesifikasinya. Untuk itu kode diserver bisa jadi seperti berikut: Katt k = null; while (true) { k = receive(); Tentunya untuk kasus ini, tidaklah tepat jika secara static mengasosiasikan k dengan class Siam (misal dengan pendeklarasian Siam k = null). Pada kode diatas, pengasosiasian k dengan class spesifik (Anggora, Siam atau lainnya) dilakukan pada saat run-time, yaitu ketika return Value dari pemanggilan receive() di-assign ke k. Itulah yang disebut dynamic/late binding. Operator Instanceof Bagaimana seandainya pihak server ingin mengetahui type spesifik dari objek Katt yang diterimanya? lihat contoh KattParty yang dimodifikasi berikut : 1 public class KattParty2 { 2 public static void main (String args[]) { 3 Katt[] kandangkatt = new Katt[3]; 4 kandangkatt[0] = new Anggora(); 5 kandangkatt[1] = new Siam(); 6 kandangkatt[2] = new Katt(); 7 for (int I = 0 ; I < 3 ; I++) { 8 kandangkatt[i].speak(); 9 if (kandangkatt[i] instanceof Siam) { 10 System.out.println("Wow,It's a Siam...!"); 11 else if (kandangkatt[i] instanceof Anggora) { 12 System.out.println("Look,they sent us Anggora...!"); 13 else { 14 System.out.println("Well...It could be Lucifer, or Alleys,"+ " or Regular Katt"); 15 System.out.println("But one thing for sure...it's Katt," + " Praise the Lord"); 16 Gambar 4. To know more about Katt Output : Siam Constructor Look, they sent us Anggora! Mmurrr.Mmurrr. Wow, I s a Siam! Well it could be Lucifer, or Alleys, or Regular Katt But one thing for sure it s Katt, Praise the Lord Operator yang dipakai adalah instanceof. A instanceof B, mengevaluai apakah objek A bertipe B (B adalah nama class). Evaluasi itu menghasilkan nilai true jika nama class dari objek A adalah B atau nama parent/grandparent/greatgrandparent /seterusnya dari class dari objek A adalah B. PBO/Ayuliana/Revisi 2009 3

Evaluasi juga akan bernilai benar jika B adalah nama interface dan A mengimplementasikan B. Begitu pula jika parent/grandparent/greatgrandparent/seterusnya dari class objek A mengimplementasi B. Singkat kata. jika A instanceof B menghasilkan true, berarti objek A dapat menunjukkan behavior yang di syaratkan oleh class atau interface B. PACKAGE Dalam penyimpanan file biasanya dengan mengelompokkan class-class (dan juga interface-interface) yang terkait (karena jenisnya/fungsinya/alasan lain) dalam sebuah package. Misalkan class-class geometris berikut dikumpulkan dalam sebuah package bernama com.raka.geoms /*simpan sebagai Graphic.java */ public abstract class Shape {. Gambar 5. Package---1 /* Simpan sebagai Rectangle java */ public class Rectangle extends Shape { Gambar 6. Package---2 /* Simpan sebagai Triangle.java */ public class Triangle extends Shape { Gambar 7. Package---3 Beberapa keuntungan mengorganisasi class-class buatan kita dalam sebuah package adalah : 1. Terhindar dari konflik penamaan. Mungkin saja ada orang lain, dibelahan dunia lain, membuat class yang bernama Rectangle juga. Yang membedakan antara Rectangle kita dengan yang lain adalah fully qualified name. Fully qualified name dari class Rectangle kita adalah com.raka.geoms.rectangle. 2. Teratur. Mendapatkan suatu class tertentu akan mudah dengan mengetahui nama package-nya. Pada contoh diatas, masing-masing anggota dari package com.raka.geoms disimpan di file terpisah, dan dideklarasikan sebagai public. dengan demikian class/program lain (yang bukan anggota com.raka.geoms) dapat mengimport clas-class kita diatas. Kita juga dapat mendefinisikan beberapa class sekaligus dalam sebuah file java, seperti contoh berikut : /* Simpan sebagai NuclearWarHead.java */ package com.raka.lethal; public class NuclearWarHead { class Sarin {. class Uzi {. Gambar 8. All in Life Jika dikompilasi NuclearWarHead.java diatas, maka akan didapatkan tiga file class, yaitu NuclearWarHead.class,Sarin.class, Uzi.class. Kesemuanya akan menjadi anggota dari package com.raka.lethal. Akan tetapi hanya NuclearWarHead yang bisa digunakan secara langsung dari luar package com.raka.lethal, karena hanya NuclearWarHead yang dideklarasikan sebagai public, selebihnya dideklarasikan sebagai protected (defaultnya), sehingga hanya dapat digunakan oleh class-class yang tergabung didalam com.raka.lethal. Sekarang untuk menggunakan class-class yang terdapat pada com.raka.geoms dari luar com.raka.geoms, dengan menggunakan kata kunci import. Seperti contoh dibawah ini : PBO/Ayuliana/Revisi 2009 4

package com.drawworks.threedee; import com.raka.geoms.*; public class Cube { Rectangle r = new Rectangle (); Gambar 9. Mengimpor class. Jika pemrogram com.drawworks.threedee bermaksud menggunakan class-class yang terdapat pada java.awt juga dimana terdapat juga class Rectangle, maka saat inilah digunakan fully qualified name. seperti contoh dibawah ini : package com.drawworks.threedee; import com.raka.geoms.*; import java.awt.*; public class ThreeWorld extends Canvas { com.raka.geoms.rectangle r = new com.raka.geoms.rectangle (); Gambar 10. Fully Qualified Name Package-package didalam harddisk dapat diorganisasikan dalam suatu struktur direktori. File-file class anggota com.raka.geoms terkumpul dalam struktur direktori. Dapat diambil kesimpulan bahwa tiap-tiap suku kata pada nama package adalah nama sebuah direktori. PBO/Ayuliana/Revisi 2009 5