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.

Friday, 26 March 2010

Week 7

Minggu ini adalah minggu UTS. Soal-soalnya cukup sulit bagi saya, apalagi tidak boleh menggunakan komputer. Soal TTS banyak ada beberapa yang saya lupa. Kalo soal koding yang bisa saya kerjakan hanya no 1 dan no 3, yang no 2 ga ngerti soalnya belum diajarin. hehe..

Friday, 19 March 2010

Week 6

Pada minggu ini cukup banyak materi yang diberikan Pak Alfon. Dan seperti biasa kelas Pak Alfon banyak di isi dengan koding. Berikut adalah materi yang dibawakan.


This

this digunakan agara tidak membuat terlalu banyak variable.

tanpa 'this' :

public void setLength(double l){
length = l;
}


diatas kita harus menuliskan sebuah variable baru yaitu l.

dengan 'this' :

public void setLength(double length){
this.length = length;
}

diatas kita dapat menggunakan length lagi tanpa harus membuat variable baru.


Static Initializers

Kelebihanya adalah dapat menghemat memori, karena object yang biasa kita buat memakan memori, dengan static kita tidak perlu membuat object baru yang berate lebih hemat dalam penggunaan memori.


Overloaded method

Ini berarti kita membuat method yang sama dengan argumen berbeda. Biasanya digunakan untuk memudahkan dalam inputan


public void setLength(double length){
this.length = length;
}
public void setLength(String length){
this.length = Double.parseDouble(length);
}


x++ dan ++x

Perbedaan z=x++ dengan z=++x adalah z=x++ berarti nilai x dimasukan dulu ke z baru x di ++. Sedangkan z=++x nilai yang diterima z adalah hasil dari x++.


Multiple constructors

Ini berarti kita memasukan 2 atau lebih constructor ke dalam sebuah class.

public Main(){
this(0., 0.);
}
public Main(double length){
this(length, length);
}
public Main(double length, double width){
setLength(length);
setWidth(width);
}



Pada minggu ini saya juga sempat belajar sendiri dari buku yang sama minggu lalu yaitu Schaum’s outlines yang saya pinjam dari perpustakaan UC. Minggu ini saya mempelajari tentang string dari buku ini dan akan saya tampilkan beberapa yang saya pelajari.



class TestStringClass {

public static void main(String[] args) {


String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

System.out.println("This is string: " + alphabet);

System.out.println("This is the lenght: " + alphabet.length());

System.out.println("The charactert at index 4 is: " +alphabet.charAt(4));

System.out.println("The index of the character Z is: " + alphabet.indexOf('Z'));

System.out.println("Its lowercase version is: " + alphabet.toLowerCase());

System.out.println("This string is still: " + alphabet);

}

}


Pada baris koding diatas ada beberapa perintah unik string.


* Yang pertama adalah alphabet.length yang mengambil berapa panjang dari string yang telah dideklarasikan.


* Alphabet.charAt(4) mengambil string pada index ke 4.


* Alphabet.indexOf(‘Z’) mengambil index dari alphabet Z. alphabet.toLowerCase() berarti membuat String menjadi lower case.



class Replacing{

public static void main(String[] args){


String inventor = "Charles Babbage";

System.out.println(inventor);

System.out.println(inventor.replace('B', 'C'));

System.out.println(inventor.replace('a', 'c'));

System.out.println(inventor);

}

}


Perintah lain seperti replace berarti mengganti huruf dalam string dengan huruf baru yang kita inginkan. Contohnya:


System.out.println(inventor.replace('B', 'C'));


Baris ini berarti mengganti ‘B’ menjadi ‘C’.