31/03/09

Start from the basic: Java input & Graphic2D

Cuma sedikit protes dengan beberapa buku java dari Indonesia yang agak sedikit ngawur, dari segi pemrograman. Tentu karena bahasanya yang lebih sesuai dibandingkan dengan buku buku terjemahan buatan orang asing, yang dengan isi yang sangat berbobot, harga lebih mahal, tapi karena terjemahan, ada beberapa hal yang agak sulit dimengerti. Dimulai dengan buku java 2 - AK yang sangat banyak digunakan untuk panduan belajar di kampus.

Start from the basic!
Membaca input dari keyboard
Pada C ada scanf, pada C++ ada cin, pada pascal ada readln, pada basic ada input, tapi di java tidak ada perintah khusus untuk melakukan input data dari keyboard. Padahal, perintah ini sangat berguna untuk melakukan trial and error terutama pada saat proses awal belajar java. Sun sendiri tidak pernah memberikan caranya secara official, paling tidak saya belum pernah menemuainya di dokumentasi resmi java. Bahkan di ebook yang lain. Mungkin cuma karena saya belum pernah punya buku java, dan jarang lihat ebook java dasar.
Tapi, yang ada di buku ini sudah jelas ngawur, bagaimana bisa mengajarkan java dasar tapi sudah harus membuat object bacaKeyboard dari class di file yang berbeda untuk mendapatkan input data, padahal konsep OOP sangat menyulitkan untuk proses awal belajar. Menurut versi bukunya dengan membuat kelas baru khusus untuk input,

public class BacaKeyboard{ public static String bacaString(){ perintah...; } }

sehingga cara pemanggilannya karena berjenis static function:

String nama = BacaKeyboard.bacaString;

Dan selalu diperlukan file class aslinya untuk bisa dicoba di program lain, yang sebetulnya sangat sederhana misalkan tentang kondisi if dan perulangan for, tapi sudah disulitkan dengan hal dasar seperti ini.
Supaya tidak membutuhkan file lain, dan cuma membutuhkan satu file tanpa perlu konsep OOP, tinggal gunakan saja class BufferedReader:

String nama="";
try{
java.io.BufferedReader br=new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
nama=br.readLn();
System.out.println("Hasil input:\""+nama+"\"");
}catch(java.io.IOException e){}

Perintah ini bisa diterapkan dimana saja dalam program, sehingga memudahkan proses input data tanpa perlu kelas tambahan. atau kalau dalam fungsi main yang bisa langsung jalan:

import java.io.*;
public class contoh{
public static void main(String[]a)throws IOException{
BufferedReader br=new BufferedReader(InputStreamReader(System.in));
String nama=br.readLn();
System.out.println("Hasil input:\""+nama+"\"");
}
}

Graphic2D untuk menggambar
Graphic2D digunakan untuk menggambar obyek garis atau gambar kotak dan semacamnya dalam bentuk dua dimensi dengan cepat.
Entah kenapa di buku ini prosesnya begitu rumit. Buat object Canvas atau Applet, setelah itu di-add-kan ke Container, baru bisa digambar. Padahal sederhananya, inheritance dari Frame, sebuah container, juga menurunkan fungsi paint() yang bisa langsung digunakan. Perintah yang ada di class java.awt.Graphics bisa langsung dipanggil disini. Contoh penggunaannya ada di program jam analog, yang menggunakan package Graphic2D untuk menggambar jarum jam dan lingkarannya.

public class Ana extends Frame {
public void paint(Graphics G){
G.drawOval(100,100,300,300);
}
public Ana(){
super("om_agus Klok_klok");
setSize(800,600);
}
public static void main(String[]a){
new Ana().setVisible(true);
}
}

Karena tidak pernah menggunakan bukunya sebagai panduan, mungkin cuma ini saja yang sering ditemui oleh penggunanya. Ini berdasarkan pertanyaan yang paling sering keluar saja. Mungkin masih banyak yang lainnya, selain juga ingin membahas habis bukunya janet--, tapi sepertinya tidak terlalu penting juga.
by : Sofa Zainuddin

1 komentar:

  1. AVG (Anti Virus Gebleg)21 Agustus 2009 pukul 04.00

    tak wenehi "keren" pak!!..

    heheh..


    4121F

    BalasHapus