Pengenalan Java

Java saat ini sebagai bahasa yang sangat popular digunakan baik dari kalangan
perusahaan kecil hingga perusahaan berskala besar. Dalam bab ini akan dikenalkan
tentang apa itu Java ? Apa saja yang saya butuhkan untuk memulai pemrograman
Java.
Untuk memulai Java anda memerlukan Java 2 SDK dari Sun Microsystems. Anda
dapat mendownloadnya secara free di java.sun.com. Sampai saat ini versi
terbarunya sudah sampai versi 1.5.

Program Java merupakan program yang tergantung pada Runtime Environmentnya
sendiri yang sering disebut JRE ( Java Runtime Environment ), kesimpulannya anda
membutuhkan JRE untuk menjalankan program Java.
Java sendiri bersifat multiplatform di mana anda bebas menentukan operating
system apa yang ingin anda pakai, baik Windows, Linux, Solaris, dan sebagainya.
Masing-masing memiliki JRE yang berbeda, tetapi bytes code yang sama, sehingga
anda hanya perlu menuliskan program sekali dan program dapat dijalankan di
berbagai macam platform yang berbeda.
Memulai pemrograman Java anda kita coba membuat aplikasi yang sederhana.


Save-lah program di atas dengan nama HelloWorld.java. Perhatikan bahwa dalam
file tersebut terdapat sebuah class HelloWorld yang public, nama kelas ini harus
sesuai dengan nama file yang disimpan. Java bersifat case-sensitive, pastikan bahwa
anda menggunakan huruf besar untuk nama sebuah class.
- Java Source
- Code
- Java Bytes
- Code
- Output
- JRE

public class HelloWorld {
public static void main(String[] args){
System.out.println(�Hello World !!!�);
}
}

Kemudian program di awali dengan fungsi main, di dalamnya kita menampilkan
tulisan dalam bentuk console yang berbunyi �Hello World�.
Untuk meng-compile anda dapat menekan Ctrl+1, dan Ctrl+2 untuk menjalankan
program anda.
Seperti halnya pada bahasa pemrograman lainnya, Java juga memiliki tipe data yang
bervariasi. Berikut ini kita akan menggunakan berbagai macam tipe data yang
masing-masing memiliki karakteristik tersendiri.
Kita simpan dengan nama file DataTypeDemo.java. Pada saat program dijalankan
di sini akan mendeklarasikan berbagai macam tipe data, selain itu juga terdapat
wrapped class adalah bentuk class dari tipe-tipe data dasar yang ada. Nilai
MAX_VALUE adalah nilai maksimal dari tipe data tersebut. Wrapped class ini
merupakan class yang memiliki method-method tersendiri. Contohnya class
Character memiliki fungsi isUpperCase yang berguna untuk mengecek apakah
suatu karakter adalah huruf kapital. Nilai yang dikembalikan adalah Boolean yaitu
nilai berupa true atau false.
Setiap variabel di simpan ke dalam memory dan besar pemakaian memory
tergantung dari tipe datanya. Masing-masing tipe data memiliki range value yang
diperbolehkan, sehingga anda sebaiknya menggunakan variabel secukupnya sesuai
dengan kebutuhan, sehingga penggunaan memory lebih hemat dan efisien.
Untuk bilangan numerik dapat menggunakan int, long, dan sebagainya, sedangkan
untuk nilai pecahan / decimal dapat menggunakan single atau double.

public class DataTypeDemo {
public static void main(String[] args){
byte aByte = Byte.MAX_VALUE;
int aInt = Integer.MAX_VALUE;
float aFloat =Float.MAX_VALUE;
double aDouble =Double.MAX_VALUE;
long aLong =Long.MAX_VALUE;
short aShort =Short.MAX_VALUE;
System.out.println("Maximum value of Byte is : "+aByte);
System.out.println("Maximum value of Integer is : "+aInt);
System.out.println("Maximum value of Float is : "+aFloat);
System.out.println("Maximum value of Double is : "+aDouble);
System.out.println("Maximum value of Long is : "+aLong);
System.out.println("Maximum value of Short is : "+aShort);
boolean aBool = true;
char aChar = 'S';
if (Character.isUpperCase(aChar))
System.out.println(aChar +" is UpperCase");
else
System.out.println(aChar + " is LowerCase");
}
}

Untuk meminta input dari user dapat kita gunakan BufferedReader seperti contoh
di atas dengan menggunakan method readLine. Nilai yang dikembalikan adalah
berupa String.
Integer.parseInt digunakan untuk mengkonversi nilai string menjadi nilai integer.
Di sini operator matematika yang dapat digunakan di Java adalah + untuk
penjumlahan, - untuk pengurangan, * untuk perkalian, / untuk pembagian dan %
untuk modulus / sisa bagi.
Untuk penggabungan String dapat menggunakan tanda +.
Akan menghasilkan output yang sama dengan
import java.io.*; pada bagian atas program digunakan untuk mengimpor classclass
yang ada dalam package java.io di mana salah satunya adalah BufferedReader.
Jadi untuk menggunakan suatu class, kita perlu mengimpor nama packagenya
terlebih dahulu.
import java.io.*; //disebut namespace
public class OperatorDemo {
public static void main(String[] args){
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String input = "";
try{
System.out.print("Masukkan angka 1 : ");
input=in.readLine();
int angka1 = Integer.parseInt(input);
System.out.print("Masukkan angka 2 : ");
input=in.readLine();
int angka2 = Integer.parseInt(input);
System.out.println(angka1 + "+" + angka2 + "=" +(angka1 + angka2));
System.out.println(angka1 + "-" + angka2 + "=" +(angka1 - angka2));
System.out.println(angka1 + "*" + angka2 + "=" +(angka1 * angka2));
System.out.println(angka1 + "/" + angka2 + "=" +((float)angka1 / angka2));
System.out.println(angka1 + "%" + angka2 + "=" +(angka1 % angka2));
}
catch(IOException e1){}
catch(NumberFormatException e2){}
catch(Exception e3){}
}
}
System.out.println(�Hello � + �Again�);
System.out.println(�Hello Again�);

Untuk tipe data String memiliki fungsi-fungsi yang beraneka ragam.

Latihan
Buatlah program untuk mem-parsing suatu string. Misalkan user input
D:\evo\JavaFundametal\Test.java, maka output yang dihasilkan adalah :
Drive : D
Directory : D:\evo\JavaFundamental
FileName : Test.java
Extension: java
import java.io.*;
public class StringDemo {
public static void main (String[] args) {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("Input : ");
String temp = in.readLine();
System.out.println("Panjang String : " + temp.length());
System.out.println("Huruf Pertama : " + temp.charAt(0));
System.out.println("Huruf Terakhir : " + temp.charAt(temp.length() - 1));
System.out.println("UpperCase : " + temp.toUpperCase());
System.out.println("LowerCase : " + temp.toLowerCase());
System.out.println("Apakah Dimulai Dengan Huruf a ? " + temp.startsWith("a"));
System.out.println("Apakah Diakhiri Dengan Huruf a ? " + temp.endsWith("a"));
System.out.println("Mengganti Semua Huruf a Menjadi $ : " +temp.replace ('a','$'));
System.out.println("Mendapatkan Index Dari Huruf a : " +temp.indexOf("a"));
System.out.println("Mendapatkan Index Dari Huruf a : " +temp.lastIndexOf("a"));
System.out.println("Substring Dari 2 Sampai 4 : " + temp.substring(2,4));
//substring(1) dari 1 sampai habis
}catch (Exception e) {}
}
}


Java Language Fundamental
Struktur Percabangan
Pemrograman Java mengenal dua macam struktur percabangan yaitu if dan switch.
Anda juga dapat menggunakan kata kunci else
Jika terdapat lebih dari dua kondisi dapat menggunakan struktur percabangan
berikut ini.
Sebagai contoh kita akan membuat program yang meminta input user berupa umur
dari user, kemudian jika umur lebih besar sama dengan 17 maka tampilkan �anda
sudah dewasa�, jika lebih kecil sama dengan 5 tahun maka tampilkan �anda
masih balita !!!�, dari umur 6-16 tampilkan �anda masih di bawah umur�.
Di sini kita menggunakan package java.io di mana terdapat class
java.io.BufferedReader yang membantu kita dalam meminta input dari user. Input
user akan diterima berupa string, yang kemudian akan dikonversi ke dalam tipe data
numerik. Namun jika user menginput karakter bukan angka dapat mengakibatkan
kesalahan pada saat pengkonversian antar tipe data, di sini terjadi yang disebut
dengan exception. Kita akan mencoba memberi penanganan di sini.
if (kondisi) {
���..
}
if (kondisi) {
���..
} else {
���..
}
if (kondisi) {
���..
} else if(kondisi2){
���..
} else {
���..
}

Pada program di atas input dari user di dapat dari fungsi readLine yang
mengembalikan nilai berupa string hasil inputan user. Fungsi readLine dapat
menghasilkan IOException sehingga di sini kita gunakan blok try untuk menangani
masalah exception. Jika terjadi IOException maka proses akan loncat ke bagian
catch yang pertama. Jika tidak program akan berlanjut.
Kemudian kita melakukan konversi dari string ke integer. Kemungkinan input dari
user tidaklah valid sehingga proses konversi akan mengalami exception pula, di sini
disebut dengan NumberFormatException, di mana terjadi kesalahan format
numeric pada saat pengkonversian. Jika tidak terjadi ( input user valid ) maka akan
diproses pada struktur percabangannya.
import java.io.*;
public class TesSelection {
public static void main(String[] args){
InputStreamReader in = new InputStreamReader(System.in);
BufferedReader rd = new BufferedReader(in);
String input = null;
int umur = 0;
try{
System.out.println(�Masukkan umur anda : �);
input = rd.readLine();
umur = Integer.parseInt(input); //konversi ke integer
if(umur>=17){
System.out.println(�Anda sudah dewasa�);
} else if(umur>5){
System.out.println(�Anda masih belum cukup umur�);
} else {
System.out.println(�Anda masih balita !!!�);
}
}catch(IOException ioe){
System.out.println(ioe.getMessage());
System.exit(1);
}catch(NumberFormatException nfe){
System.out.println(nfe.getMessage());
System.exit(1);
}
}
}

Perulangan
Struktur perulangan pada Java adalah sebagai berikut :
Pastikan variabel yang digunakan dalam perulangan sudah dideklarasikan. Di sini
nilai i dimulai dari 0, selama i < 10, maka proses di dalam scope {} akan terus
diulang, di mana setiap perulangannya nilai i ditambah 1 ( i++ ). Berarti nilai I
berturut-turut tiap loopingnya adalah 0,1,2,3,4,5,6,7,8,9. Sebanyak 10 kali
perulangan dilakukan, pada layar akan tampil output teks �Hello� dicetak 10 kali.
Selain itu format di atas juga dapat dipakai. Pada bagian di atas ini, perulangan
dilakukan dengan langsung mendeklarasikannya dalam initial value.
Selain penggunaan for masih ada format perulangan dengan do-while dan while.
Dengan menggunakan do-while
Dengan menggunakan while
Pastikan anda melakukan penambahan atas nilai i, jika tidak maka nilai i selalu 0 dan
tidak berubah sehingga kondisi pada while selalu benar. Hal ini akan mengakibatkan
perulangan yang tiada hentinya looping forever.
int i;
for(i=0;i<10;i++){
System.out.println(�Hello�);
}
for(int i=0;i<10;i++){
System.out.println(�Hello�);
}
int i=0;
do {
System.out.println(i);
i++;
}while(i<10);
int i=0;
while (i<10){
System.out.println(i);
i++;
};


Pemrograman GUI di Java (Swing)
Swing package adalah paket kelas untuk tampilan GUI ( Graphical User Interface )
dalam Java 2. Berikut ini kita akan mempelajari terlebih dahulu beberapa komponen
dasar.
Buatlah file bernama TestJFrame.java
Hasilnya
Kemudian kita dapat menambahkan beberapa komponen lain. Di antaranya JLabel,
JTextField, dan JButton. Kita harus membuat instance dari class tersebut kemudian
kita tambahkan ke dalam Container dari JFrame. Kita akan memodifikasi bagian
constructor dengan menambahkan beberapa code lagi.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestJFrame extends JFrame {
public TestJFrame(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle(�Test JFrame�);
setBounds(0,0,300,300);
}
public static void main(String[] args){
TestJFrame theApp = new TestJFrame();
theApp.setVisible(true);
}
}
Programming II Page 10 of 29
Di sini kita menggunakan FlowLayout yang akan membuat mode tampilan pada
JFrame akan menyusun komponen-komponen yang ada secara berturutan. Untuk
mode layout bermacam-macam kita akan belajar merancang dengan menggunakan
LayoutManager untuk menghasilkan beberapa macam tampilan. Cobalah membuat
tampilan berikut dengan menggunakan GridLayout.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestJFrame extends JFrame {
JLabel lblName = new JLabel(�Name�);
JTextField tfName = new JTextField(20);
JButton btnShow = new JButton(�Show�);
public TestJFrame(){
setLayout(new FlowLayout());
//menambahkan komponen ke JFrame
add(lblName);
add(tfName);
add(btnShow);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle(�Test JFrame�);
setBounds(0,0,300,300);
}
public static void main(String[] args){
TestJFrame theApp = new TestJFrame();
theApp.setVisible(true);
}
}

TesGrid.java
Buatlah tampilan berikut ini dengan menggunakan BorderLayout.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestGrid extends JFrame {
JButton[][] btn = new JButton[3][3];
public TestGrid(){
setLayout(new GridLayout(3,3));
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
btn[i][j] = new JButton();
add(btn[i][j]);
}
}
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("Test Grid");
setBounds(0,0,300,300);
}
public static void main(String[] args){
TestGrid theApp = new TestGrid();
theApp.setVisible(true);
}
}
TesBorder.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestBorder extends JFrame implements ActionListener {
JButton[][] btn = new JButton[3][3];
JPanel pnl = new JPanel();
JButton btnBawah = new JButton("RED");
JButton btnAtas = new JButton("BLUE");
JButton btnKiri = new JButton("ORANGE");
JButton btnKanan = new JButton("GREEN");
public TestBorder(){
pnl.setLayout(new GridLayout(3,3));
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
btn[i][j] = new JButton();
btn[i][j].setBackground(Color.blue);
pnl.add(btn[i][j]);
}
}
add(pnl, BorderLayout.CENTER);
add(btnAtas, BorderLayout.NORTH);
add(btnBawah, BorderLayout.SOUTH);
add(btnKanan, BorderLayout.EAST);
add(btnKiri, BorderLayout.WEST);
btnAtas.addActionListener(this);
btnBawah.addActionListener(this);
btnKanan.addActionListener(this);
btnKiri.addActionListener(this);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("Test Border");
setBounds(0,0,300,300);
}
public static void main(String[] args){
TestBorder theApp = new TestBorder();
theApp.setVisible(true);
}
//implements ActionListener interface
public void actionPerformed(ActionEvent e){
JButton obj = (JButton)e.getSource();
if(obj==btnBawah){
setButtonColor(Color.red);
}else if(obj==btnAtas){
setButtonColor(Color.blue);
}else if(obj==btnKiri){
setButtonColor(Color.orange);
}else{
setButtonColor(Color.green);
}
}
public void setButtonColor(Color c){
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
btn[i][j].setBackground(c);
}
}
Untuk membuat event handler kita dapat mengimplementasi interface ActionListener,
kemudian kita membuat fungsi actionPerformed dan memberikan code untuk event
handlernya. Untuk mendapatkan objek di mana terjadi kejadiannya menggunakan
fungsi getSource. Jangan lupa untuk menambahkan addActionListener untuk
memberikan event handler untuk objek yang bersangkutan.
Untuk mendapatkan input teks yang bersifat multiline, kita dapat menggunakan
JTextArea dan menggabungkannya dengan JScrollPane.
TestJTextArea.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestJTextArea extends JFrame {
public TestJTextArea(){
JTextArea ta = new JTextArea(5,10);
JScrollPane scrl = new JScrollPane(ta);
add(scrl);
setBounds(0,0,200,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args){
TestJTextArea theApp = new TestJTextArea();
theApp.setVisible(true);
}
}

Menggunakan Komponen Lanjutan
JComboBox
Kita juga dapat menggunakan JComboBox untuk mengimplementasi berbagai
macam pilihan. Kemudian kita juga dapat memberikan event handler dengan
menggunakan ItemListener.
TestJComboBox.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestJComboBox extends JFrame implements ItemListener {
String[] items = { "Red","Green","Blue","Black" };
JComboBox cbo = new JComboBox(items);
public TestJComboBox(){
getContentPane().setBackground(Color.red);
setLayout(new FlowLayout());
add(cbo);
cbo.addItemListener(this);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("Test Combobox");
setBounds(0,0,200,200);
}
public static void main(String[] args){
TestJComboBox theApp = new TestJComboBox();
theApp.setVisible(true);
}
public void itemStateChanged(ItemEvent e){
if(e.getStateChange()==ItemEvent.SELECTED){
String item = (String)e.getItem();
if(item.equals("Red")){
getContentPane().setBackground(Color.red);
} else if(item.equals("Green")){
getContentPane().setBackground(Color.green);
} else if(item.equals("Blue")){
getContentPane().setBackground(Color.blue);
} else {
getContentPane().setBackground(Color.black);
}
}
}
}

JRadioButton dan JCheckBox
Kita menggunakan JRadioButton untuk mengimplementasi pilihan yang hanya boleh
dipilih salah satu saja. Dan JCheckBox untuk dapat dipilih lebih dari satu.
ButtonGroup digunakan untuk mengelompokkan RadioButton yang ada. Di sini kita
juga akan menggunakan JOptionPane untuk menampilkan kotak pesan.

TestRadioCheck.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestRadioCheck extends JFrame implements ActionListener {
JRadioButton radMale = new JRadioButton("Male");
JRadioButton radFemale = new JRadioButton("Female");
JRadioButton radMember = new JRadioButton("Member");
JRadioButton radNonMember = new JRadioButton("Non-Member");
JPanel pnlRadio = new JPanel();
JPanel pnlCheck = new JPanel();
JCheckBox haveCC = new JCheckBox("Have Credit Card");
JButton btnShow = new JButton("Show");
public TestRadioCheck(){
//SET RADIO BUTTON
pnlRadio.setLayout(new GridLayout(2,3));
pnlRadio.add(new JLabel("Gender"));
pnlRadio.add(radMale);
pnlRadio.add(radFemale);
pnlRadio.add(new JLabel("Membership"));
pnlRadio.add(radMember);
pnlRadio.add(radNonMember);
ButtonGroup grpGender = new ButtonGroup();
grpGender.add(radMale);
grpGender.add(radFemale);
ButtonGroup grpMembership = new ButtonGroup();
grpMembership.add(radMember);
grpMembership.add(radNonMember);
radMale.setSelected(true);
radMember.setSelected(true);
//SET CHECK
pnlCheck.setLayout(new FlowLayout());
pnlCheck.add(haveCC);
pnlCheck.add(btnShow);
btnShow.addActionListener(this);
setLayout(new FlowLayout());
add(pnlRadio);
add(pnlCheck);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("Test Combobox");
setBounds(0,0,350,150);
}
public static void main(String[] args){
TestRadioCheck theApp = new TestRadioCheck();
theApp.setVisible(true);
}

public void actionPerformed(ActionEvent e){
String str = "";
if(radMale.isSelected()) str += "You are male\n";
else str += "You are female\n";
if(radMember.isSelected()) str += "You are our member\n";
else str += "You are not our member\n";
if(haveCC.isSelected()) str +="You have credit card\n";
else str += "You don\'t have credit card";
JOptionPane.showMessageDialog(this,str);
}
}

JMenu
Kita dapat membuat menu seperti contoh di bawah ini.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestMenu extends JFrame
implements ActionListener {
JMenuBar menuBar = new JMenuBar();
JMenu mnuWindow = new JMenu("Window");
JMenu mnuHelp = new JMenu("Help");
JMenuItem mnuNew = new JMenuItem("New");
JMenuItem mnuClose = new JMenuItem("Close");
JMenuItem mnuAbout = new JMenuItem("About");
public TestMenu(){
mnuWindow.setMnemonic('W');
mnuHelp.setMnemonic('H');
mnuNew.setMnemonic('N');
mnuClose.setMnemonic('C');
mnuAbout.setMnemonic('A');
mnuNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
InputEvent.CTRL_MASK));
mnuClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
InputEvent.CTRL_MASK));
mnuAbout.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,0));
mnuWindow.add(mnuNew);
mnuWindow.addSeparator();
mnuWindow.add(mnuClose);
mnuNew.setActionCommand("New");
mnuClose.setActionCommand("Close");
mnuAbout.setActionCommand("About");
mnuNew.addActionListener(this);
mnuClose.addActionListener(this);
mnuAbout.addActionListener(this);

Untuk memberikan event handler kita dapat menggunakan ActionListener seperti
contoh di atas.
Tampilan showMessageDialog akan menghasilkan tampilan seperti di atas. Ini
menggunakan class JOptionPane.
mnuHelp.add(mnuAbout);
menuBar.add(mnuWindow);
menuBar.add(mnuHelp);
setJMenuBar(menuBar);
setBounds(0,0,250,250);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args){
TestMenu theApp = new TestMenu();
}
public void actionPerformed(ActionEvent e){
String action = ((JMenuItem)e.getSource()).getActionCommand();
if(action.equals("New")){
new TestMenu();
}else if(action.equals("Close")){
this.dispose();
}else{
JOptionPane.showMessageDialog(this,"evo Team 2005");
}
}
}
Class Concept
Pada bab ini kita akan mempelajari lebih jauh tentang pembuatan class dalam Java.
Di sini terdapat berbagai macam istilah yang harus dipahami. Dalam Object Oriented
Programming ada istilah class dan object/instance. Apa perbedaan antara
keduanya ?
Class adalah rancangan / desain / blue-print di mana mendefinisikan data dan
method yang dimiliki.
Object / Instance adalah bentuk jadi / hasil jadi dari class.
Berikut ini adalah contoh penggunaan class dalam program.
Buatlah file Person.java
Class
Instance 1
Instance 2
Instance 3
Instance n
class Person {
private String name;
private int age;
public Person(){ //default Constructor
this.name=��;
this.age=0;
}
public Person(String name,int age){ //Overloading Constructor
this.name=name;
this.age=age;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return this.age;
}
}

Kemudian compilelah menjadi Person.class
Kemudian buatlah file TesClass.java
Di sini kita menemukan beberapa istilah baru.
Dalam hal ini constructor dibuat sesuai dengan nama classnya. Di dalam constructor
default ini nilai name dan age diberi inisialisasi. this adalah objek yang merujuk
pada instance yang aktif. this.name dan this.age berarti adalah variabel yang
disimpan dalam class yang bersifat private.
Pada fungsi setName this digunakan untuk menghilangkan ambiguitas pada
statement berikut ini.
Pada fungsi ini terjadi ambiguitas pada baris name = name , compiler akan bingung
dalam menentukan mana name yang merupakan data member dan mana yang
merupakan parameter fungsi. Di sini kita gunakan this sehingga fungsi ini menjadi
seperti di bawah ini.
Constructor adalah prosedur yang pasti dijalankan secara otomatis tanpa harus
dipanggil pada saat instance dibuat.
public Person(){ //default Constructor
this.name=��;
this.age=0;
}
public class TesClass {
public static void main(String[] args){
//membuat objek dari class Person
Person p1 = new Person(); //constructor otomatis dijalankan
p1.setName(�Aldi�);
p1.setAge(19);
System.out.println(p1.getName() + � umur � + p1.getAge() + � tahun.�);
//membuat objek dengan parameter
Person p2 = new Person (�Boboho�,25); //constructor kedua dijalankan
//nama dan age sudah diset
System.out.println(p2.getName() + � umur � + p2.getAge() + � tahun.�);
}
}
public void setName(String name){
this.name=name;
}
public void setName(String name){
name=name;
}

Di mana this menunjuk pada instance-nya, sehingga this.name merupakan data
membernya sedangkan name merupakan parameter fungsinya.
Constructor dijalankan secara otomatis pada saat instance / objek dibuat.
atau
Kedua perintah di atas maksudnya adalah sama yaitu ingin menciptakan instance
dari class Person yang diberi nama p1. Pada saat objek dibuat maka constructor
akan secara otomatis dijalankan. Perhatikan bahwa tadi kita membuat dua buah
constructor. Satu tanpa parameter ( default constructor ) dan yang menggunakan
parameter.
Baris di atas adalah membuat instance dan langsung mengirimkan parameter berupa
nama dan umurnya. Di sini constructor yang dijalankan adalah constructor yang
kedua ( yang menggunakan parameter ).
Pada saat pembuatan program Anda melihat keyword private dan public. Ini
disebut dengan access modifier. Access modifier dalam Java ada tiga, yaitu private,
public, dan protected.
Person p1 = new Person();
Person p1;
p1 =new Person();
Person p1;
p1 =new Person(�Aldi�,19);
private � berarti hanya dapat diakses di dalam class di mana ia
dideklarasikan, tidak dapat diakses dari luar class.
protected � berarti hanya dapat diakses di dalam class di mana ia
dideklarasikan dan class-class turunannya saja.
public � berarti bebas diakses baik dari luar class ( class lain ).

Pengaksesan indeks array yang di luar batas akan mengakibatkan
IndexOutOfBoundsException.
int[][] arr = new int[3][3];
arr[0][0] = 9;
Array
Dalam pemrograman Java juga mendukung penggunaan struktur array seperti
bahasa lainnya.
Pada baris perintah di atas menyatakan kita mengalokasikan objek array bernama p
berupa kumpulan-kumpulan dari objek-objek dari class Person sebanyak 3 buah
elemen. Selanjutnya kita dapat menggunakan elemen tersebut dari indeks arraynya.
Jika kita ingin menampilkan nama dan umurnya masing-masing dapat menggunakan
struktur perulangan sebagai berikut.
Sebuah array memiliki data bernama length untuk mendapatkan jumlah elemen
dalam arraynya.
Kita dapat membuat array yang bersifat multidimensi.
Pada baris perintah di atas akan menghasilkan jumlah elemen sebanyak 9 di mana
disimpan dengan cara sebagai berikut.
0 1 2
0
1
2
Cara pengaksesannya adalah sebagai berikut.
Person[] p = new Person[3];
p[0] = new Person(�Aldi�,19);
p[1] = new Person(�Boboho�,16);
p[2] = new Person(�Charles�,27);
for(int i=0; i<p.length ; i++){
System.out.println( p[i].getName() + � umur � + p[i].getAge() + � tahun.�);
}

class Person {
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void speak(){
System.out.println( getName() + � speaks.�);
}
}
class Man extends Person {
}
Inheritance dan Polymorphism
Salah satu feature utama dari OOP adalah pewarisan sifat / inheritance. Di sini kita
membuat class baru yang menjadi turunan dari class-class yang sudah ada atau
pernah kita buat. Di mana class yang baru akan mewarisi sifat yaitu berupa data dan
method yang dimiliki class induknya. Kemudian pada class baru hanya perlu
melakukan modifikasi sedikit sesuai kebutuhan.
Pada struktur hierarki di atas menggambarkan class Cat dan Dog diturunkan dari
class Animal, berarti semua data dan method yang dimiliki Animal dimiliki pula oleh
class Cat dan Dog. Access modifier di sini sangat berperan. Semua yang
dideklarasikan dengan privat dalam class Animal tidak dapat langsung diakses dalam
class Cat dan Dog. Hanya protected dan public saja yang dapat langsung diakses.
Buatlah file Person.java
Kemudian buatlah sebuah class Man yang diinherits dari class Person dengan
menggunakan keyword extends.
class Man akan mempunyai semua yang dimiliki oleh class Person. Kita tidak perlu
mengcoding ulang lagi. Selanjutnya kita bisa membuat program untuk membuat
objek dari class Man dan langsung menggunakan fungsi-fungsi yang ada dalam class
tersebut.
Animal
Cat Dog

public class TesInherits {
public static void main(String args[]){
Man obj = new Man();
obj.setName(�Boboho�);
System.out.println(�Your name is � + obj.getName());
obj.speak();
}
}
Overriding Method adalah fungsi yang dibuat pada class Anak di mana
sebenarnya sudah diturunkan dari class induknya, sehingga fungsi pada
anaknya meng-override ( menimpa ) fungsi dari induknya.
class Man extends Person {
public void speak(){
System.out.println( this.name + � speaks like a man.�);
}
}
class Woman extends Person {
public void speak(){
System.out.println( this.name + � speaks like a woman.�);
}
}
Buatlah sebuah file dengan nama TesInherits.java
Di sini terlihat bahwa fungsi-fungsi yang dimiliki oleh class Person akan diturunkan
ke class Man. Selain itu kita juga dapat membuat overriding method.
Sebagai contoh kita modifikasi pada class Man menjadi sebagai berikut :
Method speak sebenarnya sudah ada di mana diturunkan dari class Person, namun
sekarang kita membuat fungsi speak lagi dengan nama yang sama sehingga fungsi
ini meng-override fungsi yang diturunkan dari induknya.
Buatlah class Woman yang merupakan turunan dari class Person juga.

public class TesPolymorph {
public static void main ( String[] args ) {
Person a = new Person();
Person b = new Man(); //polymorphism
Person c = new Woman(); //polymorphism
a.setName(�A Person�);
b.setName(�A Man�);
c.setName(�A Woman�);
a.speak();
b.speak();
c.speak();
}
}
Selanjutnya kita akan melihat penggunaan Polymorphism.
Dalam program di atas objek b dideklarasikan sebagai Person tapi sebenarnya
merupakan objek Man. Di sini adalah letak sifat polymorphism di mana sebuah objek
dapat memiliki beberapa bentuk. Objek dari Man dapat menjadi Person, objek dari
Woman juga dapat menjadi Person. Tetapi objek Person tidak bias menjadi Man atau
Woman.

interface Flyable {
public void fly();
}
class Pigeon extends Aves implements Flyable {
public void fly(){
System.out.println(�Pigeon fly�);
}
}
public class TesInterface {
public static void main(String[] args){
Flyable a = new Pigeon();
Flyable b = new Bee();
a.fly();
b.fly();
b.makeHoney(); //ERROR
}
}
class Bee extends Insect implements Flyable {
public void fly(){
System.out.println(�Bee fly�);
}
public void makeHoney(){
System.out.println(�Make honey�);
}
}
interface Flyable {
final static int STATUS = 1;
public void fly();
}

Interface
Dalam pemrograman Java sebuah class hanya bisa menjadi turunan dari satu class
namun dapat mengimplementasi beberapa interface. Sebagai contoh kita akan
membuat sebuah interface.
Class Pigeon adalah turunan dari class Aves dan mengimplementasi interface Flyable
berarti semua fungsi di dalamnya harus diimplementasi codenya. Sebuah class boleh
mengimplementasi beberapa interface dan wajib mengimplementasi semua fungsifungsi
yang ada di dalam interface. Dalam interface semua fungsi sifatnya abstrak,
di mana tidak boleh ada body implementasinya, hanya boleh header functionnya.
Selain itu dapat juga dibuat varibel yang bersifat konstan dengan menggunakan
keyword final.
Semua class yang mengimplementasi interface Flyable akan dapat menggunakan
variabel STATUS.
Contoh penggunaan dalam program.


File Operation
Kita dapat menyimpan data pada file secara permanent, berbeda halnya dengan
memory yang bersifat sementara saja. Di sini kita menggunakan paket class java.io.
Sekarang kita akan mencoba membuat program kamus, sebelumnya kita buat dulu
file kamus.txt untuk menyimpan data kata-kata dan terjemahannya.
kamus.txt
Kita akan membuat program kamus. User dapat memasukkan kata bahasa
inggrisnya kemudian akan dicari di dalam file, jika ditemukan maka akan ditampilkan
terjemahannya dalam bahasa indonesia.
Kamus.java
cat$kucing
dog$anjing
elephant$gajah
tiger$harimau
giraffe$jerapah
apple$apel
purple$ungu
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class Kamus extends JFrame implements ActionListener {
JTextField txtIng = new JTextField(20);
JTextField txtInd = new JTextField(20);
JLabel lblIng = new JLabel("Inggris");
JLabel lblInd = new JLabel("Indonesia");
JButton btnTerjemah = new JButton("Terjemah");
public static void main(String[] args){
Kamus theApp = new Kamus();
}
public Kamus(){
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,2));
panel.add(lblIng);
panel.add(txtIng);
panel.add(lblInd);
panel.add(txtInd);
txtInd.setEditable(false);

Untuk membuka stream file kita menggunakan FileReader diikuti dengan parameter
file yang ingin dibuka. Jangan lupa untuk menggunakan try-catch untuk mengatasi
jika terjadi exception.
Untuk menyimpan ke file kita gunakan class FileWriter.
add(panel,BorderLayout.NORTH);
add(btnTerjemah,BorderLayout.SOUTH);
btnTerjemah.addActionListener(this);
setBounds(0,0,300,100);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
try{
FileReader fr = new FileReader("Kamus.txt");
BufferedReader br = new BufferedReader(fr);
boolean ketemu = false;
String temp = null;
temp = br.readLine();
while(temp!=null){
int index = temp.indexOf("$");
String ing = temp.substring(0,index);
String ind = temp.substring(index+1);
if(ing.toLowerCase().equals(txtIng.getText().toLowerCase())){
ketemu = true;
txtInd.setText(ind);
}
temp = br.readLine();
}
if(ketemu==false){
JOptionPane.showMessageDialog(this,"Tidak ketemu");
}
}catch(Exception ex){
System.out.println(ex.getMessage());
}
}
}
import java.io.*;
public class TesWriteFile {
public static void main(String[] args){
try{
FileWriter wr = new FileWriter("test.txt");
PrintWriter pr = new PrintWriter(wr);
wr.write("Testing baris 1\r\n");
wr.write("Testing baris 2\r\n");
wr.close();
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}

0 komentar:

Posting Komentar

BErIkAn LaCh KoMeNtAr YsNg SePaNtAsX y0oW.,.,