• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
81
0
0

Teks penuh

(1)

KELAS INNER, KELAS

ABSTRAK,

DAN INTERFACE

16th week

(2)

Estu Sinduningrum, ST, MT

K

ELAS

I

NNER

(I

NNER

C

LASS

)

 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.

(3)

Estu Sinduningrum, ST, MT

KERANGKA KELAS YANG

(4)

Estu Sinduningrum, ST, MT

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.

(5)

Estu Sinduningrum, ST, MT

 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.

(6)

Estu Sinduningrum, ST, MT

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.).

KETENTUAN INNER CLASS

KelasTerluar a = new KelasTerluar();

(7)

Estu Sinduningrum, ST, MT

 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.

(8)
(9)

/**

*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() {

(10)

/** 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(); } }

(11)

Estu Sinduningrum, ST, MT

M

ENGGUNAKAN

I

NNER

C

LASS

 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

(12)
(13)
(14)

/**

*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"); } } }

(15)

Estu Sinduningrum, ST, MT

K

ELAS

A

BSTRAK

(A

BSTRACT

C

LASS

)

 Kelas Abstrak (Abstract class) adalah kelas yang

terletak pada posisi tertinggi dari hierarki kelas.

 Kelas ini digunakan sebagai basis bagi penurunan

kelas-kelas 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.

(16)

Estu Sinduningrum, ST, MT

Bentuk Umum :

K

ELAS

A

BSTRAK

(A

BSTRACT

C

LASS

)

Kelas Abstrak

Adalah kelas yang terletak pada posisi tertinggi dari hierarki kelas dari menjadi basis untuk mcnurunkan kelas-kelas lainnya.

(Modifier tambahan) abstract class NamaKelasAbstract{

Variabel umum dan Deskripsi method tanpa Implentasi; }

(17)

Estu Sinduningrum, ST, MT

I

LUSTRASI

 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).

(18)

Estu Sinduningrum, ST, MT

 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

(19)

Estu Sinduningrum, ST, MT

I

NTERFACE

 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).

(20)

Estu Sinduningrum, ST, MT

 Interface dideklarasi kan sebagai berikut:

D

EKLARASI

I

NTERFACE

Interface adalah kumpulan struktur method, tanpa detail method yang hanya memuat deklarasi dan implementasinya

Modifier interface namaInterface {

/* *Deklarasi konstanta*/ /**Signature method*/

(21)
(22)

/**

*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

(23)
(24)

Estu Sinduningrum, ST, MT

M

ENGAPA

B

UTUH

I

NTERFACE

?

 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?

(25)

Estu Sinduningrum, ST, MT

M

EMECAHKAN

B

AGIAN YANG

R

UMIT

DAN

S

PESIFIK

 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.

(26)

Estu Sinduningrum, ST, MT

 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.

M

EMECAHKAN

B

AGIAN YANG

R

UMIT

(27)

Estu Sinduningrum, ST, MT

 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)

M

EMECAHKAN

B

AGIAN YANG

R

UMIT

(28)

Estu Sinduningrum, ST, MT

 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.

M

EMECAHKAN

B

AGIAN YANG

R

UMIT

(29)

Estu Sinduningrum, ST, MT

K

ETERBATASAN

I

NHERITANCE

 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

(30)

Estu Sinduningrum, ST, MT

K

ETERBATASAN

I

NHERITANCE

 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.

Dalam prinsip pewarisan (inheritance), kelas turunan (subclass) hanya boleh diturunkan dari satu kelas induk (kelas super).

(31)

Estu Sinduningrum, ST, MT

 Kembali ke persoalan semula, bagaimana bila Anda

ingin memiliki kelas yang di dalamnya terdapat method-method 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

K

ETERBATASAN

I

NHERITANCE

Interface merupakan solusi atas prinsip pewarisan lebih dari satu (multiple inheritance). Dengan interface, suatu objek dapat memiliki behavior yang berasal dari beberapa referensi.

(32)

Estu Sinduningrum, ST, MT

 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 terpingkal-pingkal 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.

(33)

Estu Sinduningrum, ST, MT

A

PAKAH

I

NTERFACE

= K

ELAS

A

BSTRAK

?

 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

(34)

Estu Sinduningrum, ST, MT

 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.

(35)

Perbedaan Komponen penyusun Kelas Abstrak dan Interface adalah:

1 Tipe data/ Variabel Kelas Abstrak :

Interface : semua tipe data. hanya boleh berupa konstanta. 2 Method

Kelas Abstrak : Interface :

bisa berupa signature-nya saja atau berupa detail implementasi method.

hanya berupa signature, programmer harus mendefinisikan dan membuat detail

implementasi dari method. Jadi. method yang terdapat di dalam interfae adalah method abstrak.

3 Sintaks Method Kelas Abstrak:

Interface :

Semua method yang didelarasikan di dalam kelas abstrak harus dibubuhi modifier abstract.

Tidak perlu membubuhkan modifier

(36)

Perbedaan antara (secara umum) dan Interface adalah:

1 Defisi

Kelas : Interface :

Pemodelan dari objek.

kumpulan method yang hanya diterapkan pada aplikasi tertentu.

2 Kandungan informasi

Kelas : Interface :

Mendefinisikan variabel dan method secara detail dan konkret.

hanya mendefinisikan signature dari method, selanjutnya programerlah yang menentukan detail method.

3 Instansiasi Kelas : Interface :

Bisa diinstansiasi menjadi objek.

(37)

Estu Sinduningrum, ST, MT

 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

(38)

Estu Sinduningrum, ST, MT

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.

(39)
(40)

/**

*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(); } Estu Sinduningrum, ST, MT /** 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");

(41)
(42)

P

ERTANYAAN

:

Perhatikan hasil dari Netbeans 34 dan

36, adakah perbedaannya?? Analisa dari

codingnya.. Apa perbedaannya? Dan

buat juga flowchartnya.

(43)

GUI BASIC : AWT

(ABSTRACT WINDOWING

TOOLKIT)

(44)

Estu Sinduningrum, ST, MT

P

EMROGRAMAN

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,

(45)

Estu Sinduningrum, ST, MT

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).

(46)

Estu Sinduningrum, ST, MT

 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.

(47)

Estu Sinduningrum, ST, MT

K

OMPONEN

 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.

(48)

Estu Sinduningrum, ST, MT

K

ELAS

C

OMPONENT

DAN

S

UBKELASNYA

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.

(49)

Estu Sinduningrum, ST, MT

Komponen Kontrol GUI (Subkelas dari Component)

Button adalah tombol dengan label text dan akan mentrigger event ketika user mengklik/menekan tombol tersebut

Canvas adalah komponen yang digunakan untuk menggambar dan merancang komponen GUl.

Checkbox adalah komponen yang menyediakan suatu set pilihan yang dapat ditoggle on/off. CheckBox dapat dikelompokkan untuk membentuk radio button.

Choice adalah komponen yang memberikan menu yang dapat muncul secara otomatis (pop-up).

Label adalah komponen yang digunakan untuk menampilkan tulisan/pesan yang hanya dapat dibaca, tidak dapat dimodifikasi.

K

ELAS

C

OMPONENT

DAN

S

UBKELASNYA

(50)

Estu Sinduningrum, ST, MT

Komponen Kontrol GUI (Subkelas dari Component)

List 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 adalah komponen yang digunakan untuk menulis text yang berukuran kecil/singkat.

TextArea Sama seped TextField, namun memiliki kapasitas lebih besar.

K

ELAS

C

OMPONENT

DAN

S

UBKELASNYA

(51)

Estu Sinduningrum, ST, MT

K

ONTAINER

 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.

(52)

Estu Sinduningrum, ST, MT

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.

(53)

Estu Sinduningrum, ST, MT

K

ELAS

C

ONTAINER

 Kelas Container lebih sering digunakan dalam

merancang tata letak komponen GUI layout Management).

Konstruktor:

(54)

Estu Sinduningrum, ST, MT

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.

(55)

Estu Sinduningrum, ST, MT

 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.

(56)

Estu Sinduningrum, ST, MT

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.

(57)

Estu Sinduningrum, ST, MT

K

ELAS

F

RAME

 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();

(58)

Estu Sinduningrum, ST, MT

 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();

5. Membuat komponen tersebut merrjadi visible.  frm.setVisible(true);

(59)

Estu Sinduningrum, ST, MT

K

ELAS

P

ANEL

 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

(60)

Estu Sinduningrum, ST, MT

SKENARIO LAYOUT MENGGUNAKAN

(61)

Estu Sinduningrum, ST, MT

K

ELAS

D

IALOG

 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);

(62)

Estu Sinduningrum, ST, MT

K

OMPONEN

K

ONTROL

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 lain-lain.

 Komponen kontrol ini digunakan sebagai user interface yang

akan ditaruh dalam suatu kontainer.

 Kelas Menu Component terdiri dari komponen kontrol yang

(63)

Estu Sinduningrum, ST, MT

 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.

(64)

Estu Sinduningrum, ST, MT

K

ELAS

C

OMPONENT

 Kelas ini rnerupakan basis dari kelas-kelas komponen

lainnya.

Konstruktor: Konstanta :

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

(65)

M

ETHOD

K

ELAS

C

OMPONENT

:

Tipe Kembalian Method Kelas Component

void addPropertyChangeListene(String propertyName, PropertyChangeListener listener)

void applyComponentOrientation(ComponentOrientation orientation)

boolean areFocusTraversalKeysSet(int id)

int checklmage(Image image, ImageObserver observer)

int checkImageIlmage image, int width, int height, ImageObserver observer)

Protected

AWTEvent coalesceEvents(AWTEvent existing Event, AWTEvent newEvent)

boolean contains(int x, int y)

boolean contains(Point p)

Image createImage(ImageProducer producer)

Image createImage(int width, int height)

(66)

Konstruktor:

 Method yang dapat digunakan untuk mengeset label

adalah:

 String getLabel( )

void setLabel(String label)

Estu Sinduningrum, ST, MT

Button( )

Button(String Label)

(67)
(68)

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

(69)
(70)

Estu Sinduningrum, ST, MT

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; } }

(71)
(72)
(73)

Estu Sinduningrum, ST, MT

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); } } } }

(74)
(75)

P

ERTANYAAN

:

Perhatikan hasil dari Netbeans 38 dan

39, adakah perbedaannya?? Analisa dari

codingnya.. Apa perbedaannya? Dan

buat juga flowchartnya.

(76)
(77)

Estu Sinduningrum, ST, MT

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());

(78)

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(); } } } }

(79)
(80)

P

ERTANYAAN

:

Buat juga flowchartnya, serta jelaskan

codingnya.

(81)

Referensi

Dokumen terkait

Dalam sistem akuntansi pembelian, fungsi persediaan bertanggung jawab untuk mengajukan permintaan pembelian kembali apabila persediaan telah mencapai titik minimum persediaan yang

Dalam penelitian ini diimplementasi kontrol fuzzy untuk kestabilan suhu dan kelembaban pada tanaman tomat dan cabai dengan sistem tanaman tumpang sari pada area tanam di

Teraba tumor ataupun KGB dengan diameter 5 cm atau lebih dan tidak ada metastasis jauh.. Tumor dengan infiltrasi langsung kejaringan sekitarnya dan tidak ada

Berdasarkan hasil penelitian yang peneliti temukan di Sekolah Luar Biasa Negeri Tolitoli tingkat Sekolah Dasar kelas 6 bahwa : (1) Keterampilan membuka dan menurtup pelajaran

Dalam proses perancangan redesain interior museum Diponegoro-Yogyakarta klien menginginkan ruangan dibuat menarik serta kreatif yang mengikuti tehnologi yang sedang

Untuk mengetahui besarnya pengaruh ukuran perusahaan, profitabilitas, solvabilitas, opini audit secara parsial terhadap audit delay pada perusahaan pertambangan

berbahasa (language behavior) yang disepakati oleh komunitas pemakai bahasa tertentu dalam rangka saling menghargai dan menghormati satu dengan yang lain. Misal kesopanan

(3) Dalam hal Penghasil, Pengumpul, Pemanfaat, Pengangkut, Pengolah, dan Penimbun limbah B3 tidak melakukan penanggulangan pencemaran dan/atau kerusakan lingkungan