KELAS INNER, KELAS ABSTRAK, DAN INTERFACE. 16 th week Estu Sinduningrum ST,MT

dokumen-dokumen yang mirip
GUI (Grapichal User Interface)

KELAS INNER, KELAS ABSTRAK, DAN INTERFACE. 14 th week Estu Sinduningrum ST,MT

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

Materi : GUI AWT & SWING.

PERTEMUAN VI AWT DAN SWING TUJUAN PRAKTIKUM. 1. Praktikan mengenal pembuatan GUI pada Java. 2. Praktikan memahami action pada objek dalam Java.

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

Pemrograman Lanjut. Intro to GUI (Graphical User Interface)

DIK-020 Pemograman Berorientasi Objek 5/24/2012

Membuat Menu Login Sederhana [Full Coding]

GUI & Event Handling. Viska Mutiawani, M.Sc

BAB IX MEMBUAT FORM 9.1 Membuat Form Secara Konvensional

Bab Tujuan. 8.2 Delegation Event Model

2. Manakah diantara pilihan berikut ini yang merupakan bagian dari event delegation model? Sebuah komponen yang menampilkan message

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

Paket dan Interface. 15 th week Estu Sinduningrum ST,MT

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

BAB IX. USER INTERFACE

MODUL 7 - EXCEPTION HANDLING

GARIS-GARIS BESAR PROGRAM PERKULIAHAN (GBPP)

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

PEMROGRAMAN BERORIENTASI OBJEK

Membangun GUI (dengan AWT & Swing) OOP Java

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

A. TUJUAN PEMBELAJARAN

PEMROGRAMAN II. Materi : nursari2010.blogdetik.com String String Handling Java.util,Java.io. By : Sri Rezeki Candra Nursari

Dasar Perancangan Graphical User Interface

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

AWT (ABSTRACT WINDOWS TOOLKITS)

PENGENALAN JAVA GUI PROGRAMMING

PAKET (PACKAGE) 20 Januari 2012

A. TUJUAN PEMBELAJARAN

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

BAB I PENDAHULUAN. Listing 1.1 menunjukkan program GUI Java sederhana menggunakan AWT. import java.awt.*; import java.awt.event.*;

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

INSTRUKSI PENCABANGAN

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN JAVA 2

MODUL 3 PEWARISAN TUJUAN DASAR TEORI

BAB I PENDAHULUAN. Maksud dan tujuan dari pembuatan Aplikasi Penentu Nilai Mahasiswa pada pemrograman java adalah:

MODUL PRAKTIKUM KE 3 A.

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

Abstract Window Toolkit

A. TUJUAN PEMBELAJARAN

Modul 08. User Interface 01

BAB II VARIABEL DAN TIPE DATA


Pengenalan JavaScript

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

PEMROGRAMAN BERORIENTASI OBJEK

1. Mana dari adapter berikut ini yang merupakan class adapter yang benar didalam Java. ComponentAdapter

Graphical User Interface (GUI)

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

IF PEMROGRAMAN LANJUT GRAPHICAL USER INTERFACE (GUI) 11 DENGAN SWING. Oleh : Andri Heryandi, M.T.

GUI Event Handling 1

Percobaan 7 GUI(Graphical User Interface )

IKG2I4 / Software Project I

2 TIPE DATA DAN VARIABEL

Modul Praktikum 9 BAB IX LAYOUTING. Departemen Teknologi Informasi Telkom Applied Science School H a l

Creating Graphical User Interfaces [1] with Java By: De Rosal Ignatius Moses Setiadi

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

KASUS INHERITANCE. (Window, Multithreading dan Applet)

J2ME GUI dan Manajemen Event

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

Materi 5 Pemrograman Visual

Membuat Frame, Label, TextField dan Button di Java [Full Coding]

Anonymous Inner Class

LAPORAN TUGAS AKHIR APLIKASI KALKULATOR BERBASIS JAVA

Pemrograman Java III

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

Pemrograman Berorientasi Obyek. Ramos Somya

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

Inheritance (Pewarisan) Pengertian dasar inheritance

1.Tujuan. 2. Latar Belakang

BAHASA PEMROGRAMAN JAVA

TPI4202 e-tp.ub.ac.id

APLIKASI KALKULATOR BALOK BERBASIS JAVA

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

SUMBER BELAJAR PENUNJANG PLPG

APLIKASI KALKULATOR PENGHITUNGAN NILAI BERBASIS JAVA

IKG2I4 / Software Project I

IKG2I4 / Software Project I

Pemrograman Berorientasi. Abstract & Interface

Modul Praktikum 7 Pemograman Berorientasi Objek

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

Gambar 1. Deklarasi Interface MouseListener

IKG2I4 / Software Project I

Modul Bahasa Pemrograman 1

subclass class manapun private default protected public package yang sama

GUI in Java. Presented by HCI Team Ali Ridho Barakbah Umi Sa adah Nur Rosyid Mubtada i. Supervised by Prof. Kohei Arai

PENYELEKSIAN /PERCABANGAN & PERULANGAN Part II. 5 th week Estu Sinduningrum ST,MT

Pemrograman Berorientasi Objek

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

PEMROGRAMAN II. By : Sri Rezeki Candra Nursari

KONTRAK PEMBELAJARAN (KP) MATA KULIAH. Pemrograman Berorientasi Objek

PEMAHAMAN DASAR DASAR JAVA

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

PERTEMUAN 6 AWT & SWING

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

Fajar Yusran Zebua DASAR ANIMASI

Inheritance dan Kata Kunci static

Transkripsi:

KELAS INNER, KELAS ABSTRAK, DAN INTERFACE 16 th week Estu Sinduningrum ST,MT

KELAS INNER (INNER CLASS) Kerangka umum program yang berorientasi objek. Sejauh ini Anda mengetahui bahwa dalam satu file *java terdapat satu atau lebih kelas dan masing-masing kelas mengandung data dan method. Selain bentuk kerangka umum tersebut, java memperbolehkan Anda menyisipkan suatu kelas ke dalam kelas lainnya. Kelas sisipan ini disebut Inner class. Kelas Inner ini bersifat tersarang terhadap kelas utamanya, seperti halnya blok penyeleksian (if, for ) yang tersarang pada blok penyeleksian lainnya atau method yang tersarang pada method lainnya.

KERANGKA KELAS YANG MENGGANDUNG INNER CLASS

KELAS INNER (INNER CLASS) Inner Class adalah Kelas yang disisipkan di dalam kelas yang lain. Fungsi kelas sisipan ini adalah mendukung suatu proses yang akan dijalankan oleh kelas utamanya.

KETENTUAN INNER CLASS Beberapa Ketentuan Inner Class adalah sebagai berikut: 1. Bila sebuah kelas mengandung suatu inner kelas, maka pada saat kompilasi akan dihasilkan file *.class untuk keduanya (kelas utama dan kelas inner nya). File *.class akan memiliki nama NamaKelasTerluarNamaKelasInner.class untuk kelas inner. Bila kelas inner tersebut tidak diberi nama, maka format filenya menjadi: NamaKelasTerluar $#.class. Simbol # menyatakan nomor urutan kelas inner. 2. Inner Class yang dideklarasikan dengan nama dapat dibubuhi modifier public, private, dan protected. 3. Gunakan bentuk NamaKelasTerluar.this untuk mengakses referensi this dari kelas terluar.

KETENTUAN INNER CLASS 4. Dalam proses pembentukan objek, Kelas Terluar bertanggung jawab untuk menciptakan objek dari Kelas Innemy'a. Prosesnya adalah sebagai berikut: Buat objek dari Kelas Terluar (misal objek tersebut a); Menugaskan objek tersebut kepada sutu objek referensi dari hasil instansiasi. Kelas Inner (misal objek referensi Kelas Inner b.). KelasTerluar a = new KelasTerluar(); KelasTerluar. KelasInner b = a. new KelasInner();

KETENTUAN INNER CLASS Inner Class dapat dibubuhi modifier static. Dengan modifier static, maka Anda dapat membuat objek dari kelas Inner tersebut tanpa harus melalui Kelas Terluarnya. Sebagai konsekuensinnya, maka Kelas Inner tersebut tidak dapat mengakses variabel maupun method nonstatic dari Kelas Terluarnya.

NETBEAN 33

/** *Title : DemoKelas Inner *Deskripsi : Mendemonstrasikan Kelas Inner sebagai * suatu kelas yang tersarang terhadap * kelas lainnya. */ // Kelas Terluar class KelasTerluarA{ private String pesan = "Objek dari KelasTerluarA"; // Method konstruktor untuk kelas KelasTerluarA KelasTerluarA (String noobjek){ pesan = pesan + noobjek; } // Method cetak pesan yang dimiliki oleh kelas KelasTerluarA public void cetakpesan() { System.out.println(pesan); } // Kelas Inner tingkat pertama class KelasInnerB { private String pesan = "Objek dari KelasInnerB"; // Method konstruktor untuk kelas KelasInnerB KelasInnerB (String noobjek){ pesan = pesan + noobjek; } // Method cetak pesan yang dimiliki oleh kelas KelasInnerB public void cetakpesan() { System.out.println(pesan); } // Kelas Inner tingkat kedua class KelasInnerC { private String pesan = "Objek dari KelasInnerC"; KelasInnerC(String noobjek){ pesan = pesan + noobjek; } // Method cetak pesan yang dimiliki oleh kelas KelasInnerC public void cetakpesan() {

/** Mencetak pesan dari variabel yang dimiliki *oleh objek dari KelasInnerA */ System.out.println(KelasTerluarA.this.pesan); KelasTerluarA.this.cetakPesan(); System.out.println("\n"); } } } } public class DemoKelasInner{ /** Main Method */ public static void main (String args[]) { /** *Mengakses method cetakpesan yang dimiliki oleh *KelasInnerC yang tersarang pada KelasTerluarA dan *Kelas InnerB --> A(B(C)) dengan membuat *objekkelasa --> *objekkelasb --> ObjekKelasC.namaMethod */ KelasTerluarA a = new KelasTerluarA("Cara 1"); KelasTerluarA.KelasInnerB b = a.new KelasInnerB("Cara 1"); KelasTerluarA.KelasInnerB.KelasInnerC c = b.new KelasInnerC("Cara 1"); c.cetakpesan(); /** *Mengakses method cetakpesan yang dimiliki oleh *KelasInnerC yang tersarang pada KelasTerluarA dan *Kelas InnerB --> A(B(C)) dengan membuat *objekkelasb --> *ojekkelasc.namamethod */ KelasTerluarA.KelasInnerB bb = new KelasTerluarA("Cara2").new KelasInnerB("Cara2"); KelasTerluarA.KelasInnerB.KelasInnerC cc = bb.new KelasInnerC("Cara 2"); cc.cetakpesan(); /** *Mengakses method cetakpesan yang dimiliki oleh *KelasInnerC yang tersarang pada KelasTerluarA dan *Kelas InnerB --> A(B(C)) dengan membuat *ojekkelasc.namamethod */ KelasTerluarA.KelasInnerB.KelasInnerC ccc = new KelasTerluarA("Cara3").new KelasInnerB("Cara3").new KelasInnerC("Cara3"); ccc.cetakpesan(); } }

MENGGUNAKAN INNER CLASS Konsep Inner class sering digunakan untuk menambahkan blok handler pada main method suatu aplikasi berbasis GUI. Blok Handler merupakan bagian program yang akan memproses event-event yang dipicu ketika user berinteraksi dengan komponen-komponen GUI

NETBEAN 34

HASIL

/** *Title : Demo JButton Inner Class *Deskripsi : Membuat aplikasi Button sederhana * dengan handlernya menggunakan *prinsip Inner Class */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DemoJButtonInner extends JFrame { // Mendeklarasikan button private JButton btn; // Konstruktor Default public DemoJButtonInner() { super("demo Jbutton Inner Class"); Container c = getcontentpane(); c.setlayout( new FlowLayout()); // Menugaskan objek-objek Jbutton btn = new JButton("Button"); c.add(btn); // Membuat objek (instans) dari inner class ButtonHandler // yang digunakan untuk button event handling ButtonHandler handler = new ButtonHandler(); btn.addactionlistener(handler); setsize(275,100); show(); } /** Main Method */ public static void main (String args[]) { DemoJButtonInner app = new DemoJButtonInner(); app.addwindowlistener ( new WindowAdapter(){ public void windowclosing(windowevent e) { System.exit(0); } } ); } // Inner Class untuk "Event handling" pada button private class ButtonHandler implements ActionListener { public void actionperformed (ActionEvent e) { JOptionPane.showMessageDialog (null, "Anda telah menekan :" + e.getactioncommand() + "\n" + "Handler Button ini menggunakan prinsip Inner Class"); } } }

KELAS ABSTRAK (ABSTRACT CLASS) Kelas Abstrak (Abstract class) adalah kelas yang terletak pada posisi tertinggi dari hierarki kelas. Kelas ini digunakan sebagai basis bagi penurunan kelaskelas lainnya, sehingga tidak dapat diinstansiasi secara langsung menjadi objek. Sebagai kelas basis, kelas ini hanya berisi variabel umum dan deskripsi method tanpa detail implementasi. Selanjutnya, kelas-kelas yang diturunkan dari kelas abstraklah yang harus mendefinisikan secara detail method tersebut.

KELAS ABSTRAK (ABSTRACT CLASS) Kelas Abstrak Adalah kelas yang terletak pada posisi tertinggi dari hierarki kelas dari menjadi basis untuk mcnurunkan kelas-kelas lainnya. Bentuk Umum : (Modifier tambahan) abstract class NamaKelasAbstract{ Variabel umum dan Deskripsi method tanpa Implentasi; }

ILUSTRASI Asumsikan rerdapat suatu kelas MakhlukHidup yang merupakan kelas abstract semua makhluk yang hidup di bumi ini (manusia, hewan tumbuhan). Anda ingin memiliki kelas yang dapat menginstans objek yang bernama Amir, Tati, Santi, dan John. Tentu tidaklah mungkin untuk menginstans kelas MakhlukHidup langsung menjadi objek-objek tersebut karena kelas tersebut hanya mendefinisikan data dan method umum yang berlaku untuk seluruh makhluk hidup (manusia, hewan, tumbuhan).

ILUSTRASI Karena kelas MakhlukHidup terletak pada hirarki teratas, maka Anda harus membentuk subkelas-subkelas untuk dapat menginstans objek Amir, Tati, dan seterusnya. Subkelas ini bisa berupa MahlukHidup - Manusia atau bisa juga MakhlukHidup - Manusia - RasAsia - Indonesia - pekerja, dan sebagainya. Selanjutnya, apabila Anda mengacu kepada struktur organisasi perusahaan, maka kelas pekerja ini dapat dipandang sebagai suatu kelas abstrak bagi kelas-kelas yang diturunkan darinya, seperti Kelas Direktur, Kelas Manajer, Kelas Staff, Kelas Buruh, dan seterusnya

INTERFACE Adalah kumpulan method yang hanya memuat deklarasi dan struktur method, tanpa detail implementasinya. Interface digunakan bila Anda ingin mengaplikasikan suatu method yang spesifik, yaitu tidak diperoleh dari proses pewarisan kelas, interlace bersifat disisipkan (embeded) pada program, dan programmer diberi keleluasaan untuk merancang dan mendefinisikan sendiri detail prosesnya. Dalam istilah pemrograman, Kelas dan Interfacc fundamental yang dijadikan Library relerensi dikenal dengan istilah API (Application Programming Interface).

DEKLARASI INTERFACE Interface adalah kumpulan struktur method, tanpa detail method yang hanya memuat deklarasi dan implementasinya Interface dideklarasi kan sebagai berikut: Modifier interface namainterface { /* *Deklarasi konstanta*/ /**Signature method*/ }

NETBEAN 35

/** *Title : Demo Interface *Deskripsi : Menerapkan konsep interface */ /** Deklarasi Interface */ interface Konstanta { double KONST_PI = 3.14; String KONST_SATUAN_LUAS = "cm. persegi"; String KONST_SATUAN_PANJANG = "cm."; } public class DemoInterface implements Konstanta { /** Main Method */ public static void main (String args[]){ System.out.println("\nPROGRAM DEMO INTERFACE"); System.out.println("----------------------\n"); double radius = 10; System.out.println("Radius Lingkaran :"+ radius); System.out.println("Luas Lingkaran :"+(KONST_PI*radius*radius)+KONST_SATUAN_LUAS); System.out.println("Keliling Lingkaran"+(2*KONST_PI*radius)+ Konstanta.KONST_SATUAN_PANJANG); } } Estu Sinduningrum, ST, MT

HASIL

MENGAPA BUTUH INTERFACE? Ada dua pertanyaan yang mungkin timbul saat ini. Pertama, bila Anda bisa mendefinisikan suatu kelas sedemikian rapi dan lengkap, mengapa masih dibutuhkan interface? Pertanyaan kedua, apakah konsep pewarisan data dan method (inheritance) masih belum cukup untuk memecahkan masalah?

MEMECAHKAN BAGIAN YANG RUMIT DAN SPESIFIK Marilah kita tinjau prinsip perancangan program untuk menjawab pertanyaan pertama. Dalam merancang suatu program. Langkah-langkah yang sering dilakukan adalah mengidentifikasi dan menganalisa masalah, kemudian melakukan abstraksi dan konseptualisasi solusi, dan selanjutnya merancang resources dan komponen yang dibutuhkan. Resource dan komponen dalam OOP dikenal sebagai kelas, data, method, interface, dan sebagainya. Pada saat mcrancang resource dan komponen, terkadang ada bagian yang cukup rumit dan spesifik yang tidak belum disediakan oleh J2SDK.

MEMECAHKAN BAGIAN YANG RUMIT DAN SPESIFIK Berikut ini dua pilihan untuk memecahkan masalah. 1. Membuatnya dari awal, mulai dari deklarasi kelas, menentukan data, dan method serta detail implementasi dari method tersebut. Prinsip ini sering disebut sebagai Pemrograman dari Corat-Coret (Programming from the Scratch). 2. Memanfaatkan solusi yang sudah dibuat rincian didefnisikan oleh suatu vendor dan menggunakannya dalam program.

MEMECAHKAN BAGIAN YANG RUMIT DAN SPESIFIK Prinsip pertama berarti Anda berusaha untuk menciptakan sendiri bagian yang spesifik dan rumit tersebut. Ditinjau dari segi biaya, prinsip ini paling murah (low cost) karena Anda tidak perlu membeli resource dan omponen dari vendor lain. Kelemahannya adalah waktu perancangan lebih lama dan terkadang tidak sesuai untuk aplikasi yang membutuhkan kehandalan dan performansi yang tinggi, seperti pada aplikasi telekomunikasi dan keamanan transaksi bank (membutuhkan cryptography)

MEMECAHKAN BAGIAN YANG RUMIT DAN SPESIFIK Prinsip kedua memang lebih mudah dan relatif lebih cepat karena tinggal menggunakan kelas atau interface solusi yang telah dibuat oleh suatu vendor. Selain itu, keandalan dan performansinya juga dijamin oleh vendor sehingga dapat diterapkan untuk aplikasi yang sangat kritis. Bila resource ini bersifat gratis seperti J2SDK dari Sun, maka biaya bisa ditekan. Namun bila harus membeli, biasanya harganya sangat mahal.

KETERBATASAN INHERITANCE Sebelum menjawab pertanyaan kedua, marilah Anda tinjau lagi sifat dan keterbatasan pewarisan (inheritance). Inheritance adalah proses pewarisan data dan method dari suatu kelas induk (kelas super) kepada kelas anaknva (subkelas). Sebuah subkelas atau kelas turunan hanya boleh diturunkan dari satu kelas induk. tidak boleh lebih.

KETERBATASAN INHERITANCE Dalam prinsip pewarisan (inheritance), kelas turunan (subclass) hanya boleh diturunkan dari satu kelas induk (kelas super). Prinsip inheritance ini dapat dianalogikan sebagai proscs pewarisan genetika dan hubungan darah, dari ayah dan ibu kenada anak-anaknya. Sepasang suami istri dapat mcrniliki lebih dari satu anak, namun anak tidak mungkin berasal dari lebih dari satu pasangan suami istri.

KETERBATASAN INHERITANCE Kembali ke persoalan semula, bagaimana bila Anda ingin memiliki kelas yang di dalamnya terdapat methodmethod yang bcrasal dari beberapa library referensi (kelas) yang berbeda? Dalam hal inilah interface berperan karena dengan Interface Anda bisa memasukkan method-method dari beberapa Libarary referensi tanpa harus menurunkannya dari suatu kelas Interface merupakan solusi atas prinsip pewarisan lebih dari satu (multiple inheritance). Dengan interface, suatu objek dapat memiliki behavior yang berasal dari beberapa referensi.

KETERBATASAN INHERITANCE Interface dapat diilustrasikan sebagai berikut. Seorang artis ingin memiliki banyak keahlian dalam bidang seni, seperti menyanyi, main film laga, dan melawak. Dia ingin bergaya seperti seorang Ricky Martin, berkungfu seperti Jacky Chan, dan membuat penonton terpingkalpingkal bak Mr. Bean. Apa yang harus dilakukannya? Tentu ia harus mempelajari bagaimana aktor-aktor tersebut melakukannya, dan kemudian menambahkan pengetahuan tersebut sebagai keahlian baru baginya. Ia tidak perlu menjadi anak dari mereka untuk dapat meniru tingkah laku ketiga artis tersebut.

APAKAH INTERFACE = KELAS ABSTRAK? Pertanyaan selanjutnya adalah: apakah interface sama dengan kelas abstrak? Ditinjau dari bagaimana kelas abstrak dan interfacc terdeklarasi, memang ada kemiripan di antara keduanya. Kelas abstrak adalah kelas yang terletak pada hierarki teratas dari bagan kelas sehingga tidak mungkin langsung diinstansiasi menjadi objek. Demikian juga dengan interface, ia tidak dapat diinstansiasi menjadi objek.

APAKAH INTERFACE = KELAS ABSTRAK? Meskipun ada kemiripan, namun Anda tidak bisa mengatakan bahwa interface sama dengan kelas abstrak. Berikut ini data perbedaan di antara kelas abstrak, kelas secara umum, serta interface.

Perbedaan Komponen penyusun Kelas Abstrak dan Interface adalah: 1 Tipe data/ Variabel Kelas Abstrak : Interface : 2 Method Kelas Abstrak : semua tipe data. hanya boleh berupa konstanta. bisa berupa signature-nya saja atau berupa detail implementasi method. Interface : 3 Sintaks Method Kelas Abstrak: Interface : hanya berupa signature, programmer harus mendefinisikan dan membuat detail implementasi dari method. Jadi. method yang terdapat di dalam interfae adalah method abstrak. Semua method yang didelarasikan di dalam kelas abstrak harus dibubuhi modifier abstract. Tidak perlu membubuhkan modifier abstract pada semua method di dalam kelas

Perbedaan antara (secara umum) dan Interface adalah: 1 Defisi Kelas : Interface : 2 Kandungan informasi Kelas : Interface : 3 Instansiasi Kelas : Interface : Pemodelan dari objek. kumpulan method yang hanya diterapkan pada aplikasi tertentu. Mendefinisikan variabel dan method secara detail dan konkret. hanya mendefinisikan signature dari method, selanjutnya programerlah yang menentukan detail method. Bisa diinstansiasi menjadi objek. Tidak dapat diinstansiasi menjadi objek

APAKAH INTERFACE = KELAS ABSTRAK? Bila suatu kelas ingin menggunakan interface, maka pada deklarasi kelas tersebut harus ditambahkan keyword implements dan nama interface-nya. Selanjutnya, method dari interface tersebut harus disisipkan dan didefinisikan secara detail pada kelas

MENGAPLIKASIKAN INTERFACE Interface sering digunakan untuk menambahkan event handling pada program. Contoh yang bagus adalah saat Anda merancang aplikasi GUI yang lengkap, mulai dari pemilihan komponen sampai perancangan bagian pemrosesan eventnya.

NETBEAN 36

/** *Title : Demo JButton Interface *Deskripsi : Membuat aplikasi Jbutton * Sederhana dengan handlernya menggunakan * konsep Inner Class */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DemoJButtonInterface extends JFrame implements ActionListener { // Mendeklarasikan button private JButton btn; // Konstruktor Default public DemoJButtonInterface() { super("demo JButton Token.face"); Container c = getcontentpane(); c.setlayout( new FlowLayout()); // menugaskan objek Jbutton btn = new JButton("Button"); c.add(btn); // Meregistrasi listener btn.addactionlistener(this); setsize(275,100); show(); } /** Main Method */ public static void main (String args[]) { DemoJButtonInterface app = new DemoJButtonInterface(); app.addwindowlistener ( new WindowAdapter(){ public void windowclosing(windowevent e) { System.exit(0); } } ); } // Method actionperformed untuk memproses // event yang dipicu oleh listener public void actionperformed (ActionEvent e) { JOptionPane.showMessageDialog (null, "Anda telah menekan :" + e.getactioncommand() + "\n" + "Handler Button ini menggunakan prinsip Interface"); } } Estu Sinduningrum, ST, MT

PERTANYAAN : Perhatikan hasil dari Netbeans 34 dan 36, adakah perbedaannya?? Analisa dari codingnya.. Apa perbedaannya? Dan buat juga flowchartnya.

GUI BASIC : AWT (ABSTRACT WINDOWING TOOLKIT)

PEMROGRAMAN GUI Bagi sebagian besar pengguna, bekerja dengan I/O yang berbasis text atau console adalah membosankan. Sebagian besar pengguna lebih menyukai aplikasi yang bcrbasis GUI (Graphical User Interface) karena memiliki tampilan yang lebih interaktif. Java menyediakan dua kelas untuk bekerja dengan GUI, yaitu AWT (Abstract Windowing Toolkit) dan Swing.

PEMROGRAMAN GUI AWT terdapat dalam package java.awt. Package ini berisi kompnnen-komponen GUI yang bersifat platform oriented atau tergantung pada suatu platform sistem operasi. Swing ada pada package javax.swing dan bersifat lightweight, yaitu dapat diaplikasikan untuk semua platform (multiplatform).

PEMROGRAMAN GUI Beberapa fasilitas yang disediakan package java.awt adalah: 1. Pengaturan tata letak (layout management) komponen dalam suatu kontainer. 2. Mendukung event handling, yaitu mekanisme pendeteksian event dan penentuan respons yang akan diberikan ketika pengguna (user) mengakses komponen tersebut. 3. Manipulasi grafis dari komponen, seperti font, warna, icon, dan sebagainya.

KOMPONEN Kelas Component merupakan kelas abstrak dari semua komponen yang digunakan untuk merancang GUI. Kelas ini memiliki beberapa subkelas yang merupakan kelas konkrit dari komponen-komponen kontrol GUI, seperti Button, Label, CheckBox, dan sebagainya.

KELAS COMPONENT DAN SUBKELASNYA Komponen (Component) Komponen merupakan Kelas Super dari semua komponen kontrol GUI yang bukan merupakan menu. Kelas ini menyediakan basic support untuk event handling, pengubahan ukuran komponen (resizing), pengaturan font dan warna, dan sebagainya.

KELAS COMPONENT DAN SUBKELASNYA Komponen Kontrol GUI (Subkelas dari Component) Button Canvas Checkbox adalah tombol dengan label text dan akan mentrigger event ketika user mengklik/menekan tombol tersebut adalah komponen yang digunakan untuk menggambar dan merancang komponen GUl. adalah komponen yang menyediakan suatu set pilihan yang dapat ditoggle on/off. CheckBox dapat dikelompokkan untuk membentuk radio button. Choice Label adalah komponen yang memberikan menu yang dapat muncul secara otomatis (pop-up). adalah komponen yang digunakan untuk menampilkan tulisan/pesan yang hanya dapat dibaca, tidak dapat dimodifikasi.

KELAS COMPONENT DAN SUBKELASNYA List Komponen Kontrol GUI (Subkelas dari Component) adalah komponen yang berupa list pilihan yang dapat digulung (scroll). Scrollbar adalah komponen yang dapat digeser secara vertikal maupun horisontal untuk menunjukkan posisi atau suatu nilai TextField TextArea adalah komponen yang digunakan untuk menulis text yang berukuran kecil/singkat. Sama seped TextField, namun memiliki kapasitas lebih besar.

KONTAINER Container merupakan subkelas dari Component yang berfungsi untuk "memuat" komponen-komponen lainnya. Kelas ini memiliki beberapa subkelas seperti Panel, Window, Frame, dan sebagainya. Kontainer (Container) Kontainer adalah komponen yang digunakan untuk "memuat" kompcnen atau bahkan kontainer lainnya. Karena sifatnya ini, container dapat diibaratkan sebagai root (akar) dari pohon hierarki komponen yang membentuk aplikasi.

Sub kelas dari Container Panel adalah kontainer paling ideal dan sering digunakan untuk "memuat komponen dan kontainer lainrya" dalam suatu hierarki. Applet adalah panel khrsus yang digunakan untuk membuat program yang dijalankan pada browser internet. Window merupakan kelas pada top level window yang tidak memiliki title dan border. Frame merupakan kelas pada top level window yang memiliki title bar, menu bar, dan border. Selain itu, frame juga dapat diubah-ubah ukurannya (resize) dan dapat dipindahkan. Dialog merupakan kelas pada top level window yang memiliki satu title bar dan suatu border. Sering digunakan untuk window yang utama untuk aplikasi. Dialog dapat diubai-ubah ukurannya (resize) dan dapat dipindahkan.

KELAS CONTAINER Kelas Container lebih sering digunakan dalam merancang tata letak komponen GUI layout Management). Konstruktor: Container()

KELAS WINDOW Kelas window tidak dapat disisipkan pada komponen atau kontainer lainnya karena merupakan top level class. Kelas ini jarang digunakan, namun memiliki dua subkelas yang sering dipakai, yaitu kelas Dialog dan kelas Frame.

KELAS WINDOW Ada tiga method peting dalam kelas ini. yaitu: 1. void pack() Method ini akan mengemas-meng-adjust layout management agar sesuai dengan ukuran subkomponen yang termuat di dalamnya. 2. void show() Method ini akan membuat layout dan semua subkomponen yang termuat di dalamnya menjadi visible pada layar monitor dan sekaligus membawanya ke urutan paling muka dari semua aplikasi window yang sedang dijalankan. Secara default, komponen-komponen yang sudah dibuat bersifat invisible, tidak tarnpak pada saat dijalankan. Anda juga bisa memakai method setvisible() untuk meng-enable-kannya, namun method ini tidak otomatis membawa komponen tersebut ke muka layar monitor.

KELAS WINDOW 2. void show() Secara default, komponen-komponen yang sudah dibuat bersifat invisible, tidak tarnpak pada saat dijalankan. Anda juga bisa memakai method setvisible() untuk meng-enable-kannya, namun method ini tidak otomatis membawa komponen tersebut ke muka layar monitor. 3. void dispose() Method ini dipanggil untuk "membebaskan" resource window, setelah Anda selesai menggunakan komponen-komponennya. Method ini tidak berarti menghapuskan objek window terscbut, namun hanya bersifat "menutup" kemungkinan objek-objek tersebut diakses kcmbali setelah operasi selesai dilakukan.

KELAS FRAME Seperti yang telah dijelaskan sebelumnya, kelas Frame merupakan subkelas dari kelas window. Frame dapat diubah ukurannya (resize), dapat digerakkan, dan dapat memiliki title bar, icon, dan menu. Konstruktor: Frame(); Frame(String Title);

Langkah-langkah bekerja dengan Frame adalah sebagai berikut: 1. Membuat objek Frame. Frame frm = new Frame("FrameTest"); 2. Menambahkan komffien atau panel. frm.add(new Button("Test"); 3. Mengeset ukuran frame. Frm.setSize( 150, 250); 4. Memanggil method pack. frm.pack(); KELAS FRAME 5. Membuat komponen tersebut merrjadi visible. frm.setvisible(true);

KELAS PANEL Meskipun Frame merupakan kontainer yang sering digunakan untuk menempatkan komponen secara langsung, naun dalam pengorganisasian tata letak komponen (layout), ada baiknya Anda mengemas komponen-komponen tersebut ke dalarn panel terlebih dahulu. Selanjutnya, panel-panel tersebut Anda menambahkan ke frame

SKENARIO LAYOUT MENGGUNAKAN FRAME DAN PANEL

KELAS DIALOG Dialog juga merupakan subkelas dari sama seperti Frame, yaitu dapat di-resize dan bisa menambahkan icon atau menu bar. Konstruktor: Dialog( Frame parent); Dialog(Frame parent, boolean modal); Dialog(Frame parent, String title); Dialog(Frame parent, String title,boolean modal);

KOMPONEN KONTROL GUI Komponen GUI dalam Java dapat dibagi ke dalam dua kelas besar, yaitu Kelas Component dan Kelas MenuComponent. Kelas Component terdiri dari beberapa komponen kontrol GUI, seperti Button, CheckBox, Choice, TextField, dan lainlain. Komponen kontrol ini digunakan sebagai user interface yang akan ditaruh dalam suatu kontainer. Kelas Menu Component terdiri dari komponen kontrol yang digunakan untuk membuat menu.

KOMPONEN KONTROL GUI Langkah-langkah bekerja dengan komponen-komponen tersebut adalah: 1. Membuat objek dari kelas komponen dengan memanggil konstruktornya. Button btn = new Button(' test"); 2. Memuat komponen tersebut ke dalam kontainer. frm.add(btn); 3. Memproses event yang ditrigger oleh user terhadap komponen tersebut. Anda harus menambahkan interface event listener pada listing komponen tersebut untuk membacamendeteksi event, sedangkan untuk memprosesnya dibutuhkan event handler.

KELAS COMPONENT Kelas ini rnerupakan basis dari kelas-kelas komponen lainnya. Konstruktor: Konstanta : Component() 1. static float BOTTOM_ALIGNMENT 2. static float CENTER_ALIGNMENT 3. static float LEFT_ALIGNMENT 4. static float RIGHT_ALIGNMENT 5. static float TOP_ALIGNMENT

METHOD KELAS COMPONENT: Tipe Kembalian void void boolean int int Protected AWTEvent Method Kelas Component addpropertychangelistene(string propertyname, PropertyChangeListener listener) applycomponentorientation(componentorientation orientation) arefocustraversalkeysset(int id) checklmage(image image, ImageObserver observer) checkimageilmage image, int width, int height, ImageObserver observer) coalesceevents(awtevent existing Event, AWTEvent newevent) boolean contains(int x, int y) boolean contains(point p) Image Image createimage(imageproducer producer) createimage(int width, int height)

METHOD KELAS COMPONENT: Konstruktor: Button( ) Button(String Label) Method yang dapat digunakan untuk mengeset label adalah: String getlabel( ) void setlabel(string label)

NETBEAN 37

import java.awt.*; public class TesButton extends Frame { public static void main(string[] args) { TesButton apl = new TesButton(); } public TesButton() { super("tes Button"); setsize(300, 100); Panel paneltombol = new Panel(); paneltombol.add(new Button("Perbesar")); paneltombol.add(new Button("Selesai")); add("south", paneltombol); } } show(); Estu Sinduningrum, ST, MT

NETBEAN 38

import java.awt.*; public class TesButton2 extends Frame { int lebar = 300; int tinggi= 100; public static void main(string[] args) { TesButton2 apl = new TesButton2(); } public TesButton2() { super("tes Button"); setsize(lebar, tinggi); Panel paneltombol = new Panel(); paneltombol.add(new Button("Perbesar")); paneltombol.add(new Button("Selesai")); add("south", paneltombol); } show(); public boolean handleevent(event kejadian) { switch (kejadian.id) { case Event.WINDOW_DESTROY: System.exit(0); return true; case Event.ACTION_EVENT: if (kejadian.target instanceof Button) { if ("Perbesar".equals(kejadian.arg)) { lebar += 20; tinggi += 10; setsize(lebar, tinggi); } else if ("Selesai".equals(kejadian.arg)) { System.exit(0); return true; } } } return false; } } Estu Sinduningrum, ST, MT

HASIL

NETBEAN 39

import java.awt.*; import java.awt.event.*; public class TesButton3 extends Frame { int lebar = 300; int tinggi= 100; public static void main(string[] args) { TesButton3 apl = new TesButton3(); } public TesButton3() { super("tes Button"); setsize(lebar, tinggi); Button tombolperbesar = new Button("Perbesar"); Button tombolselesai = new Button("Selesai"); Panel paneltombol = new Panel(); paneltombol.add(tombolperbesar); paneltombol.add(tombolselesai); add("south", paneltombol); // --- Penanganan kejadian tombolperbesar.addactionlistener( new TesButton3.PenanganTombol()); tombolselesai.addactionlistener( new TesButton3.PenanganTombol()); addwindowlistener( new TesButton3.PenanganKejadian()); // --- Tampilkan frame show(); } class PenanganKejadian extends WindowAdapter { public void windowclosing(windowevent e) { System.exit(0); } } class PenanganTombol implements ActionListener { public void actionperformed(actionevent e ) { String s = e.getactioncommand(); if (s.equals("perbesar")) { lebar += 20; tinggi += 10; setsize(lebar, tinggi); } else if (s.equals("selesai")) { System.exit(0); } } } } Estu Sinduningrum, ST, MT

HASIL

PERTANYAAN : Perhatikan hasil dari Netbeans 38 dan 39, adakah perbedaannya?? Analisa dari codingnya.. Apa perbedaannya? Dan buat juga flowchartnya.

NETBEAN 40

import java.awt.*; import java.awt.event.*; public class TesCheckBox extends Frame { Checkbox cb1, cb2, cb3; TextArea tarea; public static void main(string[] args) { TesCheckBox apl = new TesCheckBox(); } public TesCheckBox() { super("tes Checkbox"); setsize(400, 120); cb1 = new Checkbox("Java"); cb2 = new Checkbox("C++"); cb3 = new Checkbox("PHP"); tarea = new TextArea("",3, 35, TextArea.SCROLLBARS_NONE); tarea.seteditable(false); Panel p1 = new Panel(); p1.setlayout(new GridLayout(3,1)); p1.add(cb1); p1.add(cb2); p1.add(cb3); Panel p2 = new Panel(); p2.add(tarea); add("west", p1); add("east", p2); cb1.additemlistener( new TesCheckBox.PenanganItem()); cb2.additemlistener( new TesCheckBox.PenanganItem()); cb3.additemlistener( new TesCheckBox.PenanganItem()); Estu Sinduningrum, ST, MT

// --- Tampilkan frame show(); } public void tampilkaninfo() { String scb1, scb2, scb3; scb1 = "Status Java: " + cb1.getstate(); scb2 = "Status C++: " + cb2.getstate(); scb3 = "Status PHP: " + cb3.getstate(); tarea.settext(scb1 + "\n" + scb2 + "\n" + scb3); } class PenanganItem implements ItemListener { public void itemstatechanged(itemevent e ) { Object o = e.getitem(); if (o.equals("java")) { tampilkaninfo(); } else if (o.equals("c++")) { tampilkaninfo(); } else if (o.equals("php")) { tampilkaninfo(); } } } }

HASIL

PERTANYAAN : Buat juga flowchartnya, serta jelaskan codingnya.

TERIMA KASIH