Thursday, 29 April 2010

Week 12

OOP minggu ini saya belajar bagaimana cara agar JButton yang sudah kita buat bisa melakukan sesuatu. Ada 3 cara yang harus diperhatikan:

1. Implement class kita dengan ActionListener
2. Over ride method actionPerformed
3. Register button yang diinginkan

Dengan melakukan ke tiga cara diatas, maka button yang diregisterkan akan melakuan sesuatu sesuai dengan isi method ActionPerformed.

Langkah - langkah :

1. implement class pada ActionListener

public class Temporary implements ActionListener

2. Over ride method actionPerformed

public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(source == button){
button.setText("I have been Clicked!");
}

else if (source == button2){
button2.setText("You have tried me");
}

}

Object source berfungsi untuk mengetahui sumber dari event yang terjadi.

3. Register button yang diinginkan

button.addActionListener(this);
button2.addActionListener(this);

Selain menggunakan Object source untuk mengetahui sumber event, bisa juga menggunakan inner class. Inner class adalah class yang berada dalam class atau nested class. Inner class memiliki semua instance dan method dari outter class nya. Inner class jg memiliki akses penuh pada instance yang di declare private.

Membuat inner class cukup mudah.

public class MyOutterClass{
private int x;

class MyInnerClass{
x = 5;

}
}

Pada contoh diata MyInnerClass memiliki hak akses pada int x meskipun x di declare private.

public class Temporary{

class Button1 implements ActionListener {

public void actionPerformed(ActionEvent e) {
button2.setText("You have tried me");
}
}

class Button implements ActionListener{

public void actionPerformed(ActionEvent e) {
button.setText("I have been clicked");
}

}
}

Diatas adalah bagaimana mengimplement ActionListener jika menggunakan inner class. yang perlu diperhatikan adalah saat inner class sudah mengimplement ActionListener maka outter class tidak perlu lagi mengimplement ActionListener.

button.addActionListener(new Button());
button2.addActionListener(new Button1());

Diatas adalah cara meregister button pada ActionListener. Jika tidak menggunakan inner class kita pass keyword this pada argument, jika menggukankan inner class yang kita pass pada argument adalah object dari inner class.

Thursday, 22 April 2010

OOP Week 11

GUI adalah singkatan dari Graphical User Interface. Pada awalnya sekitar tahun 1996, java menggunakan java.awt . Versi terbaru dari GUI adalah javax.swing yang lebih powerfull, dengan tampilan yang lebih cantik, dan pilihan widget yang lebih banyak.

public class MySimpleFrame extends JFrame{
public MySimpleFrame()
{
setVisible(true);
setSize(800, 650);
setTitle("MY SIMPLE FRAME");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton ok = new JButton();
JButton cancel = new JButton();
ok.setText("OK");
cancel.setText("CANCEL");
}
public static void main(String[] args) {
MySimpleFrame msf = new MySimpleFrame();
}
}

Untuk membuat GUI class yg ingin kita beri GUI kita extends JFrame. Dengan demikian class kita memiliki instance variable dan method dari class JFrame. Jika tidak mau memanfaatkan inheritance, bisa juga dengan membuat object dari JFrame dengan cara JFrame jframe = new JFrame(); (buat object seperti biasa.

Pada baris code diatas ada beberapa method yang digunakan:
1. setVisible(true) = untuk menampilkan frame
2. setTitle("My Simple Frame") = membuat title dengan judul "My Simple Frame"
3. setSize(800, 650) = menetukan ukuran frame dlm pixel
4. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) = jika user mengklik tombol x pada kanan atas akan langsung menutup frame dengan paksa
5. setLocationRelativeTo(null) = menampilkan frame di tengah layar

Ada pula object untuk membuat button yaitu JButton. Dengan membuat object dari JButton, kita dapat menampilkan button pada frame kita. Fungsi dari method setText() adalah untuk memberi nama dan menampilkan pada button dalam frame kita.

Pada JFrame juga ada pembagian layout.
* Flow layout = menyesuaikan dengan ukuran window
* Grid layout = programmer dapat menentukan berapa grid yang diinginkan
* Border layout = secara default dibagi menjadi 4 yaitu north, south, east, west

Friday, 16 April 2010

Week 10

Pada minggu ini pelajaran OOP membahas tentang array dan array 2 dimensi. Ada beberapa kata kunci seperti final yang berarti method tersebut sudah tidak bisa lagi dirubah.

Contoh:

private final static String[] months = {
"January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November", "December"};
nah,, pada contoh diatas isi dari months sudah final alias tidak dapat diubah lagi. Biasanya kita memakai keyword final jika kita butuh variable yang tidak mau kita ubah2 lagi nilainya.

Deklarasi Array

String[] colors = new String[4];
colors[0] = "Red";
colors[1] = "Green";
colors[2] = "Blue";
colors[3] = "Yellow";

Pada contoh diatas colors memiliki 4 index yang masing2 index berisi
red, green, blue, dan yellow.

Deklarasi Array 2D

int[][] m = new int[2][2];
m[0][0] = 0;
m[0][1] = 1;
m[1][0] = 0;
m[1][1] = 1;

Deklarasi array 2 dimensi tidak jauh beda dengan deklarasi array 1 dimensi.
Pada contoh diatas Array memiliki 2 x 2. Array diatas pada index 0,0
memiliki nilai o.
Pada indexke 0,1 memiliki nilai 1. Pada index ke 1,0 memiliki nilai 0
dan pada index ke 1,1 nilainya 1.

Pada minggu ini saya juga sempat belajar sendiri dari buku Head First Java.
Saya belajar 2 tempat dimana method dan object hidup.

1. Stack adalah tempat method tinggal pada waktu dipanggil
2. Heap adalah tempat dimana object hidup saat kita membuat object baru.

Ada juga yang namanya "Garbage Collector Heap".
Garbage Collector Heap
bertugas untuk membuang object yang
sudah tidak dipakai lagi dan memberi ruang baru untuk memori.
Cara GCH menentukan mana object yang sudah
tidak dipakai lagi:

1. Jika object tersebut tidak lagi memiliki reference variable.
2. Jika reference variable diset ke null.

Thursday, 8 April 2010

Week 9

Minggu ini materi OOP adalah tentang String. Sebagai pembuka Pak Alfon mengenalkan dan menjelaskan tentang kode ASCII.

public class Main {

public static void main(String[] args) {

char ch = 'Z';

byte b = 65;

JOptionPane.showMessageDialog(null, "ASCII code of character " + ch + " is "+(int)ch);

JOptionPane.showMessageDialog(null, "Characters with ASCII code " + b + " is "+(char)b);

JOptionPane.showMessageDialog(null, ch + " is " + ((ch>b)?"bigger" : "smaller") + " than " + (char)b);

}

}

Pada baris kode diatas kita memprint kode ASCII dari 'Z'. Kita juga tahu bahwa bilangan ASCII 65 adalah 'a'. kemudian kita membandingkan mana yang lebih besar 'Z' atau 'a'.

((ch>b)?"bigger" : "smaller")

sama dengan

if (ch>b)
{
"bigger";
}
else
{
smaller;
}

String

String adalah gabungan dari char yang dianggap 1 kesatuan. Contoh: String name = "Kevin";
sama dengan char name = {"K", "e", "v", "i", "n"};

Beberapa perintah dalam penggunaan String.

charAt() = mereturn character yang berada pada index argument
.length = mereturn jumlah character dalam String
.toLowerCase = membuat String menjadi lower case
.toUpperCase = membuat String menjadi upper case

Substring

String name = "Jojon";
String nick = name.substring(0, 2);

System.out.pritnln(nick);

hasilnya adalah "Jo"

cara kerja substring adalah mengambil sebagian dari String sesuai dengan argument.
substring(0, 2) berarti mengambil String dari index ke 0 sampai index ke 1.


Thursday, 1 April 2010

Week 8

Minggu ini materi adalah tentang bagaimana menghindari program kita agar tidak mengalami "blue screen error". Di java digunakan syntax try dan catch.

------------------------------------------------------------------------------------------------
age = Integer.parseInt(inputStr);
try
{
age = Integer.parseInt(inputStr);
}
catch(NumberFormatException e)
{
JOptionPane.showMessageDialog(null, "'"+inputStr+"' is invalid/n"+"Please enter digits only");
}
------------------------------------------------------------------------------------------------

Contoh diatas akan menjalankan terlebih dahulu statement yang berada di dalam try. Jika mengalami error maka statement yang berada di dalam catch akan dijalankan. Tapi jika statement dalam try tidak mengalami error maka statement dalam catch tidak dijalankan.

* catch(NumberFormatException e) digunakan untuk mendapat error dari kesalahan penggunaan integer.

* catch(ArrayIndexOutOfBoundsExceptions e) digunakan untuk menangkap error jika menggunakan array lebij dari yang tersedia.

Ada juga method yang berfungsi untuk menjelaskan masalah apa yang terjadi jika seandainya terjadi error.

* getMessage : hanya menjelaskan kesimpulan apa yang terjadi dengan error program.

* printStackTrace : menjelaskan secara detail apa yg terjadi pada error program. Biasanya digunakan oleh admin program atau pembuat program.

Propagation Exception--------------------------------------

Propagation berarti melempar tanggung jawab kepada method lain yang mampu menghandlenya.

contoh:
siswa xyx sakit -> Nyoto -> Bu Lita -> Dokter

Pada contoh diatas ada siswa xyz yang sakit lalu minta bantuan Nyoto untuk mengobati, tapi Nyoto tidak bisa mengobati maka Nyoto minta bantuan Bu Lita, tapi Bu Lita pun tidak bisa mengobati yang kemudian menelfon dokter.

Pada contoh diatas propagator adalah Nyoto dan Bu Lita. Sedangkan catcher adalah dokter.