Skip to main content

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.

Comments

  1. Suka ngoprek ya bang?

    tulisannya bagus2 dan "berisi"
    banyak yg sangat membantu saya untuk belajar java.
    terutama pembuatan jar dan exe-nya Java ^^
    Salute

    Nyot

    ReplyDelete

Post a Comment

Popular posts from this blog

KISS: Complete Ubuntu Server Configuration

The Simplest way to install and configure our Ubuntu Server Edition. With this step-by-step manual instalation, we can configure Network, Internet, APT instalation source, XAMPP for Linux, Apache Web server, ProFtpd Ftp Server, PHP, MySql Database Server, Samba file sharing, Squid proxy server. A. Network And Internet Configuration 1. Intall Ubuntu Server Edition, I prefer using 8.04 LTS, a stable build with long time support, even better than the newer ones, in my opinion. Login as root or use this command to become root for user in sudoers list. # sudo su 2. Now, Change the hostname # pico /etc/hosts 127.0.0.1 localhost //Don't change this 192.168.1.12 hercules //Change with your ip address and hostname ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts 3. Make configuration for network interfaces # pico /etc/network/interfaces # This file describes the network interfaces available on your s...

Java: Pengiriman Parameter antar Frame

Sebenarnya konsep ini berlaku bukan hanya pada frame, tapi bisa dilakukan antar object dari class yang sifatnya umum, karena Java yang sifatnya sudah full OOP. Tapi, karena lebih sering diterapkan dalam pemrograman GUI desktop, khususnya dengan Netbeans, maka dicontohkan dengan class javax.swing.JFrame. Setiap bentuk code java harus dibentuk dalam bentuk class, biar sebagaimanapun sederhananya. Tidak seperti pemrograman lainnya yang menggunakan konsep OOP sebagai tambahan dan pengembangan dari yang sudah ada sebelumnya. Itulah sebabnya kita mengenal class di C++, Pascal, PHP, tapi masih diperbolehkan untuk tetap menggunakan konsep primitif. Sedangkan pada kasus java dan .NET, OOP merupakan inti utamanya yang harus selalu diikuti dan diterapkan. Awalnya akan sangat membingungkan, tapi sangat mudah untuk langkah pengembangan selanjutnya. Sudah lihat JavaDoc? itu adalah dokumen pemrograman yang paling aneh didunia, pada pandangan pertama. Coba bandingkan dengan MSDN-nya .NET, PHP Manual, ...

Java-MySql: Aplikasi Database dengan Data Gambar (Updated)

Untuk update metode simpan gambar lihat di appGambar 2.0 Bagaimana caranya menyimpan data yang membutuhkan penyimpanan data gambar? Misalkan data pegawai yang membutuhkan penyimpanan gambar dari setiap pegawai. Alternatifnya ada dua, dengan kelebihan dan kekurangan masing-masing. Cara yang pertama adalah dengan membuat field dengan tipe data binary, kemudian menyimpan gambar yang dibutuhkan dalam field di database tersebut. Cara ini membutuhkan manajemen program yang lebih rumit, tapi data gambar akan terjamin, karena tersimpan didalam database yang terintegrasi dengan data lainnya. Kekurangan lainnya adalah ukuran database yang akan membesar dan lambat. Bayangkan saja, sebuah field membutuhkan gambar dengan format jpeg, 200kB. Apabila ada 200 juta record, maka ukuran field yang diperuntukan khusus untuk gambar dengan perhitungan kasar adalah 0.2 MB x 200M = 40 x 10^12 = 40 TB. Belum ditambah dengan ukuran data dari field lainnya, kalau misalkan untuk menyimpan data penduduk Indonesia....