Sabtu, 25 Februari 2012

Konsep GUI Event Handling

       GUI (Graphical User Interface), adalah antarmuka pada sistem operasi atau komputer yang menggunakan menu grafis agar mempermudah para pengguna-nya untuk berinteraksi dengan komputer atau sistem operasi.
 
Atau dengan kalimat lain GUI adalah Antar muka komputer yang berbasiskan grafis. Adalah citra grafis yang ditampilkan di layar komputer yang memungkinkan untuk mengakses aplikasi software dengan memakai menu dropdown, dialog box, radio button, check box, panel, tabs, toolbar, icon shortcuts dan tool lain. Atau bisa juga dikatakan jenis antarmuka pengguna yang memungkinkan orang untuk berinteraksi dengan program dengan lebih banyak dengan gambar daripada perintah teks. Sebuah GUI grafis menawarkan ikon, dan visual indikator, sebagai lawan dari antarmuka berbasis teks. Contoh perangkat yang menggunakan GUI:  perangkat genggam seperti MP3 Players, Portable Media Player dan perangkat Permainan. GUI ini dimulai pertama kali dengan X Windows hasil penelitian di MIT, kemudian Macintosh, Sun View, lalu disusul oleh Microsoft Windows, dan sistem operasi lainnya.

1.Delegation Event Model
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.

Di bawah ini adalah delegation event model.


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.


2.Class-Class Event
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 :




Selasa, 21 Februari 2012

Contoh Contoh InputStream/OutputStream

Contoh Dasar InputStream/OutputStream

Contoh berikut ini menggunakan class FileInputStream dan FileOutputStream untuk
membaca dari sebuah file khusus dan mengcopy isi dari file ini ke file yang lain.

class CopyFile2 {
void copy(String input, String output) {
FileInputStream inputStr;
FileOutputStream outputStr;
int data;
try {
inputStr = new FileInputStream(input);
outputStr = new FileOutputStream(output);
while ((data = inputStr.read()) != -1) {
outputStr.write(data);
}
inputStr.close();
outputStr.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
public static void main(String args[]) {
String inputFile = args[0];
String outputFile = args[1];
CopyFile2 cf = new CopyFile2();
cf.copy(inputFile, outputFile);
}
}










Contoh Modifikasi InputStream/OutputStream

Contoh berikutnya menggunakan class PushbackInputStream yang memanfaatkan
sebuah object FileInputStream dan class PrintStream.

public class CopyFile3 {
void copy(String input) {
PushbackInputStream inputStr;
PrintStream outputStr;
int data;
try {
inputStr = new PushbackInputStream(new
FileInputStream(input));
outputStr = new PrintStream(System.out);
while ((data = inputStr.read()) != -1) {
outputStr.println("read data: " + (char) data);
inputStr.unread(data);
data = inputStr.read();
outputStr.println("unread data: " + (char) data);
}
inputStr.close();
outputStr.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
public static void main(String args[]) {
String inputFile = args[0];
CopyFile3 cf = new CopyFile3();
cf.copy(inputFile);
}
}







Uji kode ini pada sebuah file yang mengandung sedikit baris atau karakter.

Senin, 20 Februari 2012

Stream I/O Lanjut

Tipe-Tipe Stream yang Umum Digunakan

1.Stream Karakter dan Byte
Seperti yang telah disebutkan sebelumnya, secara umum ada dua tipe dari stream, yaitu stream karakter dan byte. Kita hanya mengulang perbedaan mendasar antara
keduanya. Stream byte adalah abstraksi file atau alat untuk data biner sedangkan stream karakter adalah untuk karakter Unicode. Class InputStream adalah abstraksi class root untuk semua input stream byte sedangkan class OutputStream adalah class root abstraksi dari semua output stream byte. Untuk stream karakter, superclasss yang sesuai dari semua class-class secara berturut-turut adalah class Reader dan the Writer. Kedua class-class ini adalah abstraksi class-class untuk membaca dan menulis stream karakter.

2.Input dan Output Stream
Stream juga dikategorikan berdasarkan apakah mereka digunakan untuk membaca atau menulis stream.Walaupun ini sudah cukup nyata, Anda diperbolehkan untuk membaca dari input stream tapi tidak menulisnya. Di lain pihak, Anda diperbolehkan untuk menulis output streams tapi tidak membacanya. Class InputStream dan class Reader adalah superclass-superclass dari semua input stream. Class OutputStream dan class Writer adalah class-class root dari semua output
stream.Input stream juga dikenal sebagai stream sumber (source stream) sejak kita memperoleh informasi dari stream ini. sementara itu output stream disebut juga stream hasil(sink stream).

3.Node dan Stream Filter
Kini package java.io membedakan antara node dan stream filter. Sebuah stream node adalah sebuah stream dengan fungsi dasar berupa fungsi membaca atau menulis dari sebuah lokasi khusus seperti pada disk atau dari jaringan. Tipe-tipe dari stream node
terdiri atas file, memory dan jalur data. Stream filter, di lain pihak, diletakkan pada layer
stream node diantara threads atau proses untuk menyediakan fungsi tambahan yang tidak dapat ditemukan dalam stream node oleh stream node itu sendiri. Penambahan lapisan pada sebuah stream node disebut dengan stream chaining.Sesi ini berturut-turut mempunyai sebuah tujuan dari class-class stream yang berbeda.Untuk melengkapi daftar dari class-class ini, lihatlah pada dokumentasi Java's API.

Class File
Walaupun class File bukan merupakan class stream, ini sesuatu yag penting bahwa kita mempelajari ini sejak class-class stream merupakan file-file yang telah dimanipulasi.Class adalah sebuah perwakilan dari abstraksi dari file-file nyata dan nama path direktori.Untuk meng-instantiate sebuah object File, Anda dapat menggunakan constructor
berikut ini:
1.File(String pathname)
Instantiate sebuah object File dengan nama path khusus sebagai nama filenya. Nama filenya mungkin salah satu menjadi penuh( sebagai contoh, isi dengan path yang lengkap) atau mungkin terdiri atas namafile itu sendiri dan diasumsikan menjadi diisi
dalam direktori tersebut.

Mari kita melihat bagaimana method ini bekerja berdasarkan contoh berikut ini :
Ketikkan coding berikut pada class java di Netbeans IDE
package jeni_intro2_bab12_stream_IO_Lanjut;

import java.io.File;
public class FileInfoClass {
public static void main(String args[]) {
String fileName = "c:\\lachata.txt";
File fn = new File(fileName);
System.out.println("Name: " + fn.getName());
if (!fn.exists()) {
System.out.println(fileName + " does not exists.");
/* membuat sebuah temporary directory . */
System.out.println("Creating temp directory...");
fileName = "d:\\temp";
fn = new File(fileName);
fn.mkdir();
System.out.println(fileName +
(fn.exists()? "exists": "does not exist"));
System.out.println("Deleting temp directory...");
fn.delete();
System.out.println(fileName +
(fn.exists()? "exists": "does not exist"));
return;
}
System.out.println(fileName + " is a " +
(fn.isFile()? "file." :"directory."));
if (fn.isDirectory()) {
String content[] = fn.list();
System.out.println("The content of this directory:");
for (int i = 0; i < content.length; i++) {
System.out.println(content[i]);
}
}
if (!fn.canRead()) {
System.out.println(fileName + " is not readable.");
return;
}
System.out.println(fileName + " is " + fn.length() +
" bytes long.");
System.out.println(fileName + " is " + fn.lastModified()
+ " bytes long.");
if (!fn.canWrite()) {
    System.out.println(fileName + " is not writable.");
}
}
}




Maka output dari program adalah :


Class Reader
Bagian ini menggambarkan stream karakter yang digunakan untuk membaca.
è Class Node Reader
è Class-Class Filter Reader
Untuk menambah fungsi ke class-class dasar Reader, Anda dapat menggunakan class stream filter.



 Class-Class Writer
Pada pembahasan ini menjelaskan tentang stream karakter yang digunakan untuk menulis.
è Writer Method
Class Writer terdiri atas beberapa method untuk menulis karakter
è Node Writer Classes
Filter Writer Classes
Untuk menambah fungsionalitas ke dasar class Writer, Anda dapat menggunakan class stream filter

Sabtu, 18 Februari 2012

Konsep dasar STREAM IO

Stream I/O
->>Semua data di Java dibaca dan ditulis dengan menggunakan stream.
->>Stream adalah representasi abstrak dari aliran data yang berjalan dari sumber (input stream) ke tujuan (output stream).
Contoh:
Membaca dan menulis file di dan ke harddisk
Membaca dan menulis teks ke console.
Membaca dan menulis melalui network

I/O Streams
->>Untuk membaca, program membuka stream pada sumber ( file, memory, socket) dan membaca informasi secara sekuensial. 



->>Untuk menulis, program mengirim informasi ke tujuan dengan cara membuka stream tujuan, selanjutnya menulis informasi secara sekuensial.


Stream
->>Byte stream (8 bit)
          digunakan untuk byte, integer, dan simple data type yang lain.
          Misal: numerical data, executable programs, dll 



->>Character stream (16bit)
          digunakan untuk data tekstual (teks), mendukung unicode.
          Misal: text files




INPUT STREAM
OUTPUT STREAM
1.    Membuat obyek yg berasosiasi dg data source.
          Misal : FileInputStream
1.    Membuat obyek yg berasosiasi dg data destination.
          Misal : BufferedWriter
2.    Membaca informasi dari stream dg menggunakan method obyek tsb.
          Misal: read()

2.    Menulis informasi ke stream tujuan dg menggunakan method obyek tsb.
          Misal: write()

       3.   Bila selesai, panggil method close.

       3.   Bila selesai, panggil method close.


InputStream dan OutputStream
->>InputStream dan OutputStream adalah abstract class untuk stream I/O, yaitu untuk membaca dan menulis data dari dan ke file.
->>Untuk membaca digunakan class yang mengimplementasikan InputStream, contoh : FileInputStream.
->>Untuk menulis digunakan class yang mengimplementasikan OutputStream, contoh : FileOutputStream.

Jumat, 10 Februari 2012

Memulai Kebajikan Walaupun Kecil :D

 Ketika fajar menyingsing, seorang lelaki tua berjalan-jalan dipinggir pantai sambil menikmati angin laut yang segar menerpa bibir pantai. Di kejauhan dilihatnya seorang anak sedang memungut bintang laut dan melemparkannya kembali ke dalam air.
Setelah mendekati anak itu, lelaki tua itu bertanya heran, “Mengapa engkau mengumpulkan dan melemparkan kembali bintang laut itu ke dalam air?” “Karena bila dibiarkan hingga matahari pagi datang menyengat, bintang laut yang terdampar itu akan segera mati kekeringan, “Jawab si kecil itu.
“Tapi pantai ini luas dan bermil-mil panjangnya,” Kata lelaki tua itu sambil menunjukkan jarinya yang mulai keriput ke arah pantai pasir yang luas itu. “Lagi pula ada jutaan bintang laut yang terdampar. Aku ragu apakah usahamu itu sungguh mempunyai arti yang besar,” Lanjutnya penuh ragu.
Anak itu lama memandang bintang laut yang ada di tangannya tanpa berkata sepatahpun. Lalu dengan perlahan ia melemparkannya ke dalam laut agar selamat dan hidup.” kemudian dengan tersenyum pada lelaki tua itu, ia berkata “Aku membuat perubahan untuk satu hal. Satu Tindakan Sebuah kebaikan yang sederhana dapat membuat sebuah perubahan untuk keluargamu, temanmu, bahkan untuk wajah wajah asing yang kadang tidak kita kenal”. Saya yakin usahaku sungguh memiliki arti yang besar sekurang-kurangnya bagi yang satu ini.” Kata si kecil itu.
Pesan Moral : kadang kadang, kita selalu merasa tidak bisa berbuat apa apa seperti layaknya anak kecil itu, namun walaupun itu cuma tindakan kebaikan sederhana, tapi membuat begitu banyak perbedaan untuk Bintang laut itu sendiri
Ketika anda memberikan sedikit senyuman untuk orang lain, baik itu keluarga anda, teman anda ataupun orang asing yang anda temui, anda telah membuat perbedaan besar bagi mereka.
Tindakan kecil yang sederhana dapat membuat perbedaan besar kepada seseorang yang sedang membutuhkan. Menyelamatkan Bintang laut adalah sedikit aksi yang membuktikan kebenaran itu
Kita sering mendambakan untuk melakukan sesuatu yang besar, namun sering kali kita lupa bahwa yang besar itu sering dimulai dengan sesuatu yang kecil. Mulailah berbuat kebajikan pada hal-hal kecil, maka engkau akan diberi dalam hal-hal besar.



Sabtu, 04 Februari 2012

Menggunakan inner join dan outer join

INNER JOIN
-> Inner Join di gunakan untuk menampilkan data dari 2 tabel yang didalamnya berisi data sesuai dengan syarat kondisi berada dalam on atau dengan kata lain semua data dari tabel kiri mendapat pasangan data dari tabel sebelah kanan.
sintaks inner join :
SELECT A1, A2, ......An
  FROM r1
      INNER JOIN r2
          ON r1.join key = r2.join key

hasil inner join dapat diperlihatkan,sebagai bidang terasir,dalam diagram Venn seperti gambar berikut :



Inner join juga dapat direpresentasikan dalam bentuk implisit :
SELECT A1,A2, ...... An
FROM r1, r2
WHERE r1.key = r2.key

Perbedaan Implisit dengan Inner join adalah sebagai berikut :
-> Jika memakai implisit, maka kondisi akan berada dalam sintaks WHERE.
-> Jika memakai Inner join, maka kondisi akan berada dalam sintaks ON.
-> Penulisan relasi tidak diharuskan untuk menulis primary dahulu, jadi menulis foreign key dahulu juga tidak masalah.
misalkan terdapat sintaks seperti berikut :



penulisan relasi dapat dituliskan secara acak(sintaks bergaris bawah merah),dengan menggunakan impilsit.



OUTER JOIN
-> Untuk menuliskan join tabel yang menyediakan informasi tentang baris-baris data sesuai(seperti inner join), tetapi dapat juga mengidentifikasi baris-baris data yang tidak sesuai dengan menyertakan klausa WHERE
-> Outer join dibagi kedalam tiga jenis yaitu LEFT, RIGHT, dan FULL outer join.

LEFT OUTER JOIN
-> Digunakan untuk menampilkan semua data dari tabel sebelah kiri.Meskipun terdapat data dari sebelah kiri tidak memiliki pasangan,tetap akan ditampilkan dengan pasangannya berupa nilai NULL
-> Sintak Left outer join :
SELECT A1, A2, ......, An
   FROM r1
      LEFT OUTER JOIN r2
         ON r1.join key = r2.join key
-> Hasil Left Outer Join dapat diperlihatkan,sebagai bidang terasir,dalam diagram Venn seperti gambar berikut


-> Contoh sintak Left outer join :


RIGHT OUTER JOIN
-> Digunakan untuk menampilkan semua data dari tabel sebelah kanan.Meskipun terdapat data dari sebelah kanan tidak memiliki pasangan,tetap akan ditampilkan dengan pasangannya berupa nilai NULL
 -> Sintak right outer join :
SELECT A1, A2, ......, An
   FROM r1
      RIGHT OUTER JOIN r2
         ON r1.join key = r2.join key
 -> Hasil Right Outer Join dapat diperlihatkan,sebagai bidang terasir,dalam diagram Venn seperti gambar berikut:

 -> Contoh sintak Right outer join :



 FULL OUTER JOIN
-> Pada hakekatnya merupakan kombinasi dari left dan right join
 -> Sintak right outer join :
SELECT A1, A2, ......, An
   FROM r1
      FULL OUTER JOIN r2
         ON r1.join key = r2.join key
 -> Hasil Full Outer Join dapat diperlihatkan,sebagai bidang terasir,dalam diagram Venn seperti gambar berikut: