1. KONSEP GUI
GUI (Graphical User Interface) adalah antarmuka pada sistem operasi atau komputer yang menggunakan menu grafis agar mempermudah para penggunanya untuk berinteraksi dengan komputer atau sistem operasi.
GUI merupakan antarmuka pada sistem operasi komputer yang menggunakan menu grafis.
Sejarah Singkat GUI
· Pada awal diciptakan, komputer dijalankan dengan menggunakan perintah yang diketik pada layar monitor menggunakan keyboard.
· Hanya orang2 tertentu sajalah yang bisa mengoperasikan komputer
· Akhirnya para ahli terdorong untuk dapat menciptakan sesuatu yang dapat digunakan oleh orang kebanyakan dengan cara yang praktis dan mudah diingat
· Kemudian lahirlah yang disebut GUI (yang seperangkat aplikasinya menampilkan semua menu, ikon dan alat penunjuk lain yang menggantikan perintah ketik di shell
· Hal ini membuat pengguna komputer menjadi lebih mudah untuk mengoperasikan sebuah perangkat dari pada mengingat perintah yang menggunakan teks pada sebuah kotak command tertentu.
· GUI pertama kali digunakan pada komputer yang diproduksi oleh APPLE yaitu Machintos dengan steve Jobs sebagai penggagasnya.
Pengguna GUI Pada Saat Ini
Selain komputer, penggunaan GUI juga diterapkan pada beberapa jenis usaha yang spesifik
Contoh : ATM milik Bank
Meskipun berbasis teks, namun sudah dianggap semi GUI karena pengguna tidak perlu mengetikkan perintah untuk mentransfer uang
Kita hanya perlu menekan tombol yang sejajar dengan menu yang ada
Keuntungan GUI :
- - Menarik Minat Pengguna.
- Menggunakan ikon grafik dapat mempermudah dan mengurangi kobesanan pengguna pada waktu menggunakan komputer.
- - Memudahkan pengguna.
- Pengguna lebih mudah memahami apa yang dipaparkan tanpa perlu banyak membaca.
- Memahirkan Pengguna Dengan Cepat.
- Cara memanipulasi objek pada screen adalah sama dalam setiap aplikasi yang berlainan masa latihan -Pengguna yang Singkat
- Karena pengguna GUI telah memudahkan pengguna aplikasi maka pengguna dapat mengurangi masa latihan dan dapat belajar atau latihan dengan menggunakan aplikasi yang baru
- Karena pengguna GUI telah memudahkan pengguna aplikasi maka pengguna dapat mengurangi masa latihan dan dapat belajar atau latihan dengan menggunakan aplikasi yang baru
- - Resolusi Gambar yang Tinggi
- Dengan menggunakan GUI maka kita dapat menggunakan gambar atau tulisan yang bisa menghasilkan sampai dengan 256 warna
Kekurangan GUI :
Kekurangan GUI :
- Memakan memori yang sangat besar
- - Bergantung pada perangkat keras
- - Membutuhkan banyak tempat pada layar komputer
- - Tidak fleksibel
Merancang GUI yang Baik
Desain dapat diterjemahkan sebagai seni terapan, dan berbagai pencapaian kreatif.
* Arti Desain sebagai kata kerja : “desain” memiliki arti “proses untuk membuat dan menciptakan objek baru.
* Arti Desain sebagai kata benda : “desain” digunakan untuk menyebut hasil akhir dari sebuah proses kreatif, baik itu berwujud sebuah rencana, proposal, atau berbentuk objek nyata.
Prinsip Desain Yang Baik
Metafora (Proses Perancangan bentuk)
maksudnya menampilkan dan menggambarkan elemen-elemen (titik, garis, warna, ruang dan tekstur) yang relefan dan dikenali. Bisa menggunakan dekstop yang berhubungan dengan perancangan interface (adobe Photoshop, Corel Draw, Macromedia Flash, dll)
2.
Kejelasan
se tiap elemen yang digunakan pada interface harus beralasan dalam penggunanya. Memperjelas pesan yang diberikan. Memberikan relax pada mata dalam menatap elemen-elemen saat beraktifitas. Menawarkan kesedrahanaan, enak dilihat, berkelas dan jelas
3.
Konsisten
Konsisten dalam layout, warna, gambar (image), icon, tipografi, teks, dll
Konsisten pada layar, perpindahan antar layar satu ke layar lain
4. Konsisten pada desain interface yang dirancang
Bidang kerja (platform) mempunyai petunjuk tuntunan
Pembuatan User Interface
Digunakan untuk mempermudah user dalam mengakomodasikan bentuk desain kedalam sebuag gambar, tulisan dsb
Teknik Koding
Digunakan sepintas lalu, baik untuk menarik perhatian
§ Mengabaikan penggunaan video, baik untuk membuat sesuatu menjadi solid
Tipografi
§ Karakter dan simbol dalam penggunaannya mudah dilihat dan dibedakan
§ Menghindari penggunaaan upper case (huruf besar) pada tiap huruf dalam suatu pengetikan naskah
§ Penggunaan campuran huruf kecil dan besar mempercepat proses membaca
§ Mudah dibaca
§ Mudah dikenali dengan adanya sekumpulan jenis huruf yang digunakan untuk mengetik suatu naskah/teks
2. Hirarki Class Graphical User Interface
Pendahuluan
Bahasa pemrograman java telah mendukung adanya pemrograman berbasis GUI (Graphical User Interface). Class yang merepresentasikan GUI ini berada pada paket Javax.swing, Sebelum swing, fitur GUI didukung oleh API Java yang disebut dengan Abstract Window Toolkit (AWT). AWT ini merupakan library yang pertamakali diperkenalkan oleh java, namun Sun tidak merekomendasikan penggunaan komponen GUI dari AWT.
Komponen Swing
• Top Level Container : merupakan container dasar dimana komponen lainya diletakkan.
– JFrame, JDialog, dan Applet.
• Intermediate Container : kontainer pertama dimana komponen lain diletakkan
– JPanel, JScrollPane, JTabbedPane, JToolBar, JSplitPane.
Pemrograman Berorientasi Objek 4
Komponen Swing (Lanjutan)
• Atomic Component : Komponen yang memiliki fungsi spesifik dan menerima interaksi langsung dari pengguna.
– JButton, JTextField, JLabel, JTextArea, dsb.
• Layout Manager : digunakan untuk mengatur tataletak dan posisi komponen dalam kontainer.
– BorderLayout, GridBagLayout, FlowLayout, dsb.
Top Level Container
Komponen GUI akan ditampilkan dalam hirarki container dan menjadikan top level container sebagai container root nya. Setiap komponen GUI hanya dapat dimuat pada satu top-level container. Dan setiap top-level
container memiliki satu content pane yang berisi komponenkomponen GUI
Container Hierarky
• Setiap komponen GUI berbasis swing paling tidak memiliki satu container hierarky dengan JFrame sebagai rootnya.
• Jika sebuah aplikasi memiliki satu window utama dan dua dialog artinya aplikasi tersebut memiliki tiga container hierarchy dan juga tiga top-level container
• Satu container hierarchy memiliki Jframe sebagai root, dan dua yang lain memiliki JDialog sebagai root Pemrograman Berorientasi Objek 9
Kelas JFrame
• JFrame merupakan top level container yang digunakan untuk menampung komponen pada aplikasi berbasis gui, java memiliki class yang mendukung pembuatan dan pengaturan frame, class frame berada pada paket javax.swing.JFrame.
• Class JFrame merupakan subclass dari java.awt.frame yang juga masih merupakan subclass dari java.awt.windows,
Properties yang sering digunakan
Intermediate Container
Merupakan container perantara antara Top Level Container dengan Atomic Component. Contoh
intermediate container yang sering digunakan :
– JPanel
– JTabbedPane
– JToolbar, dsb
Pemrograman Berorientasi Objek 15
JPanel
Merupakan intermediate container yang berfungsi untuk menempatkan komponen-komponen lain, secara hierarchy berada dibawah top level container.
Atomic Component
Merupakan komponen-komponen yang memiliki fungsi spesifik dan menerima interaksi langsung dari user. Contoh yang sering digunakan :
– JLabel
– JTextField
– JButton
– JTextArea
– JSpinner, dsb
JLabel
label digunakan untuk menampilkan informasi, informasi yang ditampilkan berupa teks string.
JTextField
JTextField berfungsi untuk menampilkan maupun sebagai inputan, berbeda dengan JLabel yang berfungsi hanya sebagai output atau menampilkan sebuah nilai / teks string, JTextField selain dapat digunakan sebagai output dapat juga digunakan sebagai inputan. Nilai yang dimasukkan pada JTextField akan direpresentasikan sebagai teks String
JComboBox
JComboBox digunakan untuk pemilihan suatu nilai dalam bentuk drop down list, nilai yang dimasukkan diurutkan berdasarkan item index
(array)
JButton
Button sering kita jumpai dalam berbagai aplikasi berbasis gui, kita sering menggunakanya sebagai interface untuk melakukan eksekusi suatu perintah
3. Komponen dasar GUI
KOMPONEN-KOMPONEN GUI (JAVA SWING) PADA JAVA
Java sungguh merupakan bahasa pemrograman yang sangat luar biasa. salah satu yang membuat java sering di pakai adalah kemampuannya untuk bisa berjalan di berbagai platform sistem operasi, asalkan sistem operasi tsb memiliki JVM (Java Virtual Machine). mungkin dalam posting selanjutnya akan saya bahas tentan JVM.
saat ini saya akan membahas tentang GUI java. Java memiliki berbagai macam element yang bisa di susun menjadi sebuah tampilan, sehingga program yang kita buat memiliki interface. Salah satu tujuan interface/GUI pada sebuah program agar applikasi yang di buat mudah di gunakan oleh orang awam,atau bahasa kerennya user friendly.
dalam perkembangannya java sudah menngembangkan berbagai macam komponen, dan yang terakhir di beri nama Java Swing, pertama java menggembangkan proyek yang di beri nama Java Foundation Classes (JVC), dalam JVC pertama java menggeluarkan AWT(Abstract Window Toolkit), setelah terus berkembang java mengeluarkan ersi yang lebih baru yang di beri nama Java Swing.
akan saya bahas satu2 tentang komponen2 yang sering di pakai dalam membuat program sederhana
1. Label
label berfungsi untuk menuliskan sesuatu di frame yang kita buat, nama default JLabel
2. Button
Button digunakan untuk mengeksekusi sebuah perintah, jika button di pencet maka proses akan berjalan, nama default JButton
3. Text Field
Text Field marupakan salah satu cara untuk mengisikan suatu inputan dalam program, nama default JTextfield
4. Text Area
Text Area biasanya digunakan untuk menampilkan hasil output dari program, nama default JTextarea
5. Combo box
Combo Box merupakan salah satu cara inputan juga. jika combo box di pencet, maka akan keluar berbagai pilihan untuk di proses, nama default JCombobox
6. Radio button
radio button juga salah satu cara inputan dalam program, tetapi dalam penggunaannya berbeda dengan combo box, radio button digunakan jika pilihan yang di sediakan sedikit, maka akan lebih efektif jika menggunakan radio button, berbeda dengan combo box yang hjerus click 2 kali untuk memilih, radio button cukup sekali pilihan, dan hanya boleh satu pilihan yang di pilih, maka digunakan radio button group agar hanya satu yang bisa di pilih, nama default JRadiobutton
7. Check box
Check box juga merupakan salah satu cara inputan, mirip dengan radio button, tetapi check box memperbolehkan user untuk memilih lebih dari satu pilihan, jadi check box di gunakan untuk menjawab petanyaan yang memperbolehkan lebih dari satu jawaban, nama defaultnya jCheckbox.
1. Komponen Delegation Event Model
Pada modul ini, Anda akan belajar bagaimana mengendalikan events triggered ketika user berinteraksi dengan aplikasi GUI Anda. Setelah menyelesaikan modul ini, Anda akan dapat mengembangkan aplikasi GUI yang dapat merespon interaksi user.
Pada akhir pembahasan, diharapkan pembaca dapat :
1. Menerangkan komponen-komponen delegation event model
2. Mengerti bagaimana delegation event model bekerja
3. Menciptakan aplikasi GUI yang berinteraksi dengan user
4. Mendiskusikan manfaat dari class-class adapter
5. Mendiskusikan keuntungan-keuntungan dari menggunakan inner dan anonymous class
Delegation Event Model
Delegasi event model menguraikan bagaimana program Anda dapat merespon interaksi dari user. Untuk memahami model, pertama-tama mari kita pelajari melalui tiga komponen utamanya.
1. Event Source
Event source mengacu pada komponen GUI yang meng-generate event. Sebagai contoh, jika user menekan tombol, event source dalam hal ini adalah tombol.
2. Event Listener/Handler
Event listener menerima berita dari event-event dan proses-proses interaksi user. Ketika tombol ditekan, listener akan mengendalikan dengan menampilkan sebuah informasi yang berguna untuk user.
3. Event Object
Ketika sebuah event terjadi (misal, ketika user berinteraksi dengan komponen GUI), sebuah object event diciptakan. Object berisi semua informasi yang perlu tentang event yang telah terjadi. Informasi meliputi tipe dari event yang telah terjadi, seperti ketika mouse telah di-klik. Ada beberapa class event untuk kategori yang berbeda dari user action. Sebuah event object mempunyai tipe data mengenai salah satu dari class ini.
Pada awalnya, sebuah listener seharusnya diregistrasikan dengan sebuah source sehingga dapat menerima informasi tentang event-event yang terjadi pada source tersebut. Hanya listener yang sudah teregistrasi yang dapat menerima pemberitahuan event-event. Ketika telah teregistrasi, sebuah listener hanya tinggal menunggu sampai event terjadi.
Ketika sesuatu terjadi dengan event source, sebuah event object akan menguraikan event yang diciptakan. Event kemudian ditembak oleh source pada listener yang teregistrasi.
Saat listener menerima sebuah event object (pemberitahuan) dari source, dia akan bekerja. Menerjemahkan pemberitahuan dan memproses event yang terjadi.
Registrasi Listeners
Event source mendaftarkan sebuah listener melalui method add<Type>Listener.
void add<Type>Listener(<Type>Listener listenerObj)
<Type> tergantung pada tipe dari event source. Dapat berupa Key, Mouse, Focus, Component, Action dan lainnya. Beberapa listeners dapat diregistrasi dengan satu event source untuk menerima pemberitahuan event.
Listener yang telah teregistrasi dapat juga tidak diregistrasikan lagi menggunakan method remove<Type>Listener.
void remove<Type>Listener(<Type>Listener listenerObj)
Class-Class Event
Sebuah event object mempunyai sebuah class event sebagai tipe data acuannya. Akar dari hirarki class event adalah class EventObject, yang dapat ditemukan pada paket java.util. Immediate subclass dari class EventObject adalah class AWTEvent. Class AWTEvent didefinisikan pada paket java.awt. Itu merupakan akar dari semua AWT-based events.
Berikut ini beberapa dari class-class AWT event.
Tabel 1.2: Class-Class Event
Event Listeners
Event listeners adalah class yang mengimplementasikan interfaces <Type>Listener.
Tabel di bawah menunjukkan beberapa listener interfaces yang biasanya digunakan.
Tabel 1.3: Event Listeners
Method ActionListener
Interface ActionListener hanya terdiri dari satu method.
Tabel 1.3.1: Method ActionListener
Method MouseListener
Tabel 1.3.2: Method-Method MouseListener
Method-Method MouseMotionListener
MouseMotionListener mempunyai dua method untuk diimplementasikan.
Tabel 1.3.3: The MouseMotionListener methods
Method-Method WindowListener
Di bawah ini method-method dari interface WindowListener.
Tabel 1.3.4: Method-Method WindowListener
Petunjuk untuk Menciptakan Aplikasi Handling GUI Events
Berikut ini langkah-langkah yang Anda butuhkan untuk mengingat ketika ingin membuat aplikasi GUI dengan event handling.
1. Buatlah sebuah class yang menguraikan dan membuat suatu tampilan dari aplikasi
GUI Anda.
2. Buatlah sebuah class yang menerapkan interface listener yang sesuai. Class ini boleh
mengacu pada class yang sama seperti pada langkah awal.
3. Dalam menerapkan class, gunakan semua method-method dengan interface listener
yang sesuai. Uraikan masing-masing method bagaimana Anda ingin mengendalikan
event-event. Anda dapat memberikan implementasi kosong untuk method yang tidak
ingin Anda gunakan.
4. Daftarkan object listener, instansiatiate dari class listener pada langkah 2, dengan
source component menggunakan method add<Type>Listener.
Contoh Mouse Events
Contoh Menutup Window
Class-class Adapter Class
Menerapkan semua method dari interface yang semuanya akan membutuhkan banyak pekerjaan. Di satu sisi, Anda terkadang lebih sering tertarik menerapkan hanya beberapa method dari interface saja. Untungnya, Java menyediakan untuk kita class- class adapter yang menerapkan semua method dari masing-masing listener interface dengan lebih dari satu method. Implementasi dari method-method semuanya adalah kosong.
Close Window Example
Inner Class dan Anonymous Inner Class
Bagian ini memberi Anda tinjauan ulang atas konsep yang sudah Anda pelajari di pelajaran pemrograman pertama. Inner class dan anonymous inner class sangatlah bermanfaat untuk GUI event handling.
Inner Class
Inner class, seperti namanya, adalah sebuah class yang dideklarasikan di dalam class lain. Kegunaan inner classes akan dapat membantu Anda menyederhanakan program, terutama dalam event handling seperti yang ditunjukkan pada contoh.
Contoh Menutup Window
Anonymous Inner Class
Anonymous inner class adalah inner class tanpa nama. Kegunaan dari anonymous inner class akan menyederhanakan kode-kode Anda lebih lanjut. Di bawah ini merupakan modifikasi dari contoh bagian sebelumnya.
Contoh Menutup Window
Latihan
Tic-Tac-Toe
Extend program papan Tic-Tac-Toe yang telah Anda kembangkan sebelumnya dan
tambahkan event handlers ke kode tersebut untuk membuat program berfungsi penuh.
Permainan Tic-Tac-Toe dimainkan dengan dua pemain. Pemain mengambil giliran
mengubah. Setiap giliran, pemain dapat memilih kotak pada papan. Ketika kotak dipilih,
kotak ditandai oleh simbol pemain (O dan X biasanya digunakan sebagai simbol).
Pemain yang sukses menaklukkan 3 kotak membentuk garis horisontal, vertikal, atau
diagonal, memenangkan permainan. Permainan akan berakhir ketika pemain menang
atau ketika semua kotak telah terisi.
1. Penanganan Kejadian(Event Handling)
5. Penanganan Kejadian (event handling)
package :
java.awt.event dan javax.swing.event
agar komponen dapat menangani kejadian, kompnen tsb harus :
1. didaftarkan menjadi pendengar (listener), contoh :
JButton tombolSelesai = new JButton("Selesai");
tombolSelesai.addActionListener(this);
scra umum bentuk metode nya :
addxxxListener()
2. Harus mengimplementasikan suatu interface listener
3. Membuat object suatu kelas yang merupakan kelas adapter
4. Menulis kode pada metode penanganan kejadian
kelas adapter adalah kelas bawaan java yang mengandung nama adapter
dibagian belakang dan merupakan kelas abstrak
yang merupakan implementasi dari suatu interface listener.
contoh :
windowAdapter = kelas abstrak yang mengimplementasi interface WindowListener
MouseAdapter = ----" ---- MouseListener
contoh program :
bSubmit.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
oNama.setText(tNama.getText());
}
} );
kelas dan interface pada java :
kejadian dan interface | metode --> listener | Komponen
------------------------------- |----------------------------------------- |-------------------------------------
ActionEvent | addActionListener | JButton, JList dll
ActionListener | |
--------------------------------|-------------------------------------------|--------------------------------------
AdjusmentEvent | |
AdjustmentListener | addAdjusmentListener | JScrollBar
------------------------------- | -------------------------------------------| ------------------------------------
dll.
Listener dan metode penanganan kejadian :
Listener / Adapter | Metode
-------------------------- | -------------------------------------------------------
ActionListener | actionPerformed(ActionEvent)
-------------------------- | -------------------------------------------------------
AdjusmentListener | adjustmentValueChanged (AdjustmentEvent)
-------------------------- | -------------------------------------------------------
dll.
Listener Interface Listener Methods
ActionEvent ActionListener actionPerformed(ActionEvent)
ItemEvent ItemListener itemStateChanged(ItemEvent)
MouseEvent MouseListener mousePressed(MouseEvent)
mouseReleased
(MouseEvent)
mouseEntered(MouseEvent)
mouseExited(MouseEvent)
mouseClicked(MouseEvent)
MouseMotionListener
mouseDragged(MouseEvent)
konsep laen :
Dalam event handling pada Java ada empat bagian penting yang harus diketahui:
1.Event Object merupakan object yang mendiskripsikan sebuah event yang di-
trigger oleh event source.
2.Event Handler merupakan method yang menerima event object dan melakukan
respond yang sesuai dengan event object tersebut.
3.Event Listener merupakan interface yang akan meng-handle event yang terjadi.
setiap type event mempunyai interface yang bersesuaian. Listener tersebut harus
diimplementasikan oleh class yang akan meng-handle event
4.Event Source merupakan pembangkit / trigger sebuah event objects
setiap event object mempunyai type event yang berbdea beda.
sehingga kita harus menentukan type event sebelum menentukan jenis interface
listener. karena setiap type event mempunyai jenis interface listener yang
bersesuaian.
berikut ini type type event yang ada di Java :
1.ActionEvent
2.ItemEvent
3.WindowEvent
4.ContainerEvent
5.ComponentEvent
6.FocusEvent
7.TextEvent
8.KeyEvent
9.MouseEvent
10.AdjustmentEvent
Berikut ini Interface Listener
1.ActionListener
2.ItemListener
3.WindowListener
4.ContainerListener
5.ComponentListener
6.FocusListener
7.TextListener
8.KeyListener
9.MouseListener
10.MouseMotionListener
11.AdjustmentListener
Berdasarkan tulisan diatas, setiap type event mempunyai satu jenis interface listener
kecuali MouseEvent yang mempunyai dua jenis interface listener. dan setiap
interface mempunyai method abstract yang harus di override class yang meng-
impletasikan interface.
event listener dan event handler terdapat pada package java.awt.event
Bagaimana event handling dalam Java? ada tiga langkah penting dalam event
handling
1.Deklarasikan class yang akan meng-handle event yang terjadi dan tuliskan code
yang menyatakan class tersebut meng-implement interface listener
2.Event source mendaftarkan sebuah listener melalui method add<type>Listener
3.Kode yang mengimplementasikan method pada interface listener pada class yang
akan meng-handle event. [ Override ]
Contoh program sederhana :
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Penjumlahan2Field extends JFrame
{
JLabel labelData1,labelData2,labelHasil;
JTextField field1,field2,field3;
JButton button;
public Penjumlahan2Field()
{
setLayout(null);
labelData1=new JLabel("Data 1 = ");
field1=new JTextField(8);
labelData2=new JLabel("Data 2 = ");
field2=new JTextField(8);
labelHasil=new JLabel("Hasil = ");
field3=new JTextField(8);
button=new JButton("+");
labelData1.setBounds(10,10,80,25);
field1.setBounds(65,10,80,25);
labelData2.setBounds(10,40,80,25);
field2.setBounds(65,40,80,25);
labelHasil.setBounds(10,70,80,25);
field3.setBounds(65,70,80,25);
button.setBounds(65,120,50,25);
add(labelData1);
add(field1);
add(labelData2);
add(field2);
add(labelHasil);
add(field3);
add(button);
ActionListener listener = new Penjumlahan2Field.Handler();
button.addActionListener(listener);
}
class Handler implements ActionListener{
public void actionPerformed(ActionEvent e){
String s = e.getActionCommand();
if(s.equals("+")){
String data1=field1.getText();
String data2=field2.getText();
int a=Integer.parseInt(data1);
int b=Integer.parseInt(data2);
int hasil=a+b;
field3.setText(Integer.toString(hasil));
}
}
}
public static void main(String [] args)
{
Penjumlahan2Field frame=new Penjumlahan2Field();
frame.setTitle("Penjumlahan");
frame.setSize(200,200);
//frame.setLocationRelationTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
1. Class-class adapter
Konteks:
- Diinginkan untuk menggunakan suatu class dengan antarmuka (method-method public) tertentu tanpa mengubah definisi class tersebut. Class ini kita sebut adaptee.
- Konteks permasalahan dimana kita ingin menggunakan class ini membutuhkan antarmuka yang berbeda dari yang dimiliki class adaptee. Antarmuka yang diperlukan untuk ini kita sebut target.
- Antarmuka untuk target dan antarmuka yang dimiliki adaptee secara konsep berkaitan.
Solusi:
- Antarmuka yang dibutuhkan client (target) didefinisikan sebagai interface dengan method-method yang dibutuhkan untuk menyelesaikan tugas.
- Definisikan sebuah class adapter yang mengimplementasikan interface target ini.
- Class adapter memiliki referensi terhadap objek adaptee (relasi compose a.k.a HAS_A). Class adapter menerjemahkan method yang dideklarasikan pada interface target ke dalam method dari adaptee.
- Client membungkus objek adaptee ke dalam objek adapter. Client melaksanakan tugasnya dengan memanggil method adapter, dan adapter menerjemahkannya dengan memanggil method adaptee yang bersesuaian.
- Diinginkan untuk menggunakan suatu class dengan antarmuka (method-method public) tertentu tanpa mengubah definisi class tersebut. Class ini kita sebut adaptee.
- Konteks permasalahan dimana kita ingin menggunakan class ini membutuhkan antarmuka yang berbeda dari yang dimiliki class adaptee. Antarmuka yang diperlukan untuk ini kita sebut target.
- Antarmuka untuk target dan antarmuka yang dimiliki adaptee secara konsep berkaitan.
Solusi:
- Antarmuka yang dibutuhkan client (target) didefinisikan sebagai interface dengan method-method yang dibutuhkan untuk menyelesaikan tugas.
- Definisikan sebuah class adapter yang mengimplementasikan interface target ini.
- Class adapter memiliki referensi terhadap objek adaptee (relasi compose a.k.a HAS_A). Class adapter menerjemahkan method yang dideklarasikan pada interface target ke dalam method dari adaptee.
- Client membungkus objek adaptee ke dalam objek adapter. Client melaksanakan tugasnya dengan memanggil method adapter, dan adapter menerjemahkannya dengan memanggil method adaptee yang bersesuaian.
Contoh:
Java Library:
Dalam Java, System.in membaca rentetan byte yang masuk ke dalam komputer (input stream standar). Rentetan byte ini terkandung dalam field System.in yang memiliki tipe data InputStream. Input dari keyboard merupakan karakter yang dikodekan dalam byte-byte yang dikirim oleh keyboard. Dalam program console, kita ingin membaca input dari keyboard sebagai karakter, bukan byte. Untuk itu, kita memakai objek InputStreamReader untuk menerjemahkan byte yang dibaca dari keyboard menjadi karakter.
InputStreamReader reader = new InputStreamReader(System.in);objek InputStreamReader bertindak sebagai adapter yang menerjemahkan antarmuka (operasi) pengambilan rentetan byte input dari keyboard menjadi antarmuka (operasi) yang menghasilkan rentetan karakter. System.in bertindak sebagai objek adaptee yang melakukan "the real deal".
NB: InputStreamReader membaca karakter satu-persatu, tapi tidak bisa membaca string secara sekaligus, sehingga InputStreamReader kurang efisien -- method dari objek InputStreamReader dipanggil untuk tiap karakter yang dimasukkan lewat keyboard. Untuk meningkatkan efisiensi, pembacaan string input dari keyboard dilakukan secara buffered -- karakter yang diketikkan lewat keyboard dimasukkan ke dalam buffer terlebih dahulu untuk kemudian dibaca sekaligus dalam satu pemanggilan method.
new BufferedReader consoleInput = new BufferedReader(reader);// atau seperti ininew BufferedReader consoleInput = new BufferedReader(new InputStreamReader(System.in));Pendekorasian objek InputStreamReader supaya mendukung buffered input dengan menggunakan objek BufferedRead di atas menggunakan design pattern Decorator dan tidak berkaitan dengan Adapter, atau dengan kata lain pembacaan input keyboard secara buffered dilakukan menggunakan pattern Adapter kemudian Decorator.
















Tolong dirapikan Halamannya,,
BalasHapustitanium ring for men - TITONICA-ART
BalasHapusTitanium Ring for titanium grey Men. Tito Titanium 다파벳 Ring for Men. Tito Titanium Ring does titanium set off metal detectors for Men. Tito Titanium Ring for titanium grades Men. Tito Titanium Ring for titanium jewelry Men.
r139c3zrmnx437 strap on vibrator,Rabbit Vibrators,adult sex toys,G-Spot Vibrators,wholesale sex toys,double dildos,dildos,cheap sex toys,wolf dildo y898w7rsoox986
BalasHapus