Programming Java

29
Programming II Page 1 of 29 Bagian 1 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 !!!”); } }

Transcript of Programming Java

Page 1: Programming Java

Programming II Page 1 of 29

Bagian 1 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 !!!”); }

}

Page 2: Programming Java

Programming II Page 2 of 29

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"); } }

Page 3: Programming Java

Programming II Page 3 of 29

Primitive Data Type Data Types

Keyword Description Size/Format

(integers)

byte Byte-length integer 8-bit two's complement

short Short integer 16-bit two's complement

int Integer 32-bit two's complement

long Long integer 64-bit two's complement

(real numbers)

float Single-precision floating point 32-bit IEEE 754

double Double-precision floating point 64-bit IEEE 754

(other types)

char A single character 16-bit Unicode character

boolean A boolean value (true or false) true or false

Examples of Literal Values and Their Data Types

Literal Data Type

178 int

8864L long

37.266 double

37.266D double

87.363F float

26.77e3 double

' c ' char

true boolean

false boolean

Page 4: Programming Java

Programming II Page 4 of 29

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 class-class 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”);

Page 5: Programming Java

Programming II Page 5 of 29

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) {} } }

Page 6: Programming Java

Programming II Page 6 of 29

Bagian 2 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 { ……….. }

Page 7: Programming Java

Programming II Page 7 of 29

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); } } }

Page 8: Programming Java

Programming II Page 8 of 29

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++; };

Page 9: Programming Java

Programming II Page 9 of 29

Bagian 3 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); } }

Page 10: Programming Java

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); } }

Page 11: Programming Java

Programming II Page 11 of 29

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); } }

Page 12: Programming Java

Programming II Page 12 of 29

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); } }

Page 13: Programming Java

Programming II Page 13 of 29

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); } }

Page 14: Programming Java

Programming II Page 14 of 29

Bagian 4 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); } } } }

Page 15: Programming Java

Programming II Page 15 of 29

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.

Page 16: Programming Java

Programming II Page 16 of 29

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); }

Page 17: Programming Java

Programming II Page 17 of 29

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); } }

Page 18: Programming Java

Programming II Page 18 of 29

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);

Page 19: Programming Java

Programming II Page 19 of 29

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"); } } }

Page 20: Programming Java

Programming II Page 20 of 29

Bagian 5 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; } }

Page 21: Programming Java

Programming II Page 21 of 29

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; }

Page 22: Programming Java

Programming II Page 22 of 29

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 ).

Page 23: Programming Java

Programming II Page 23 of 29

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.”); }

Page 24: Programming Java

Programming II Page 24 of 29

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

Page 25: Programming Java

Programming II Page 25 of 29

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.

Page 26: Programming Java

Programming II Page 26 of 29

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.

Page 27: Programming Java

Programming II Page 27 of 29

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(); }

Bagian 6 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 fungsi-fungsi 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.

Page 28: Programming Java

Programming II Page 28 of 29

Bagian 7 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);

Page 29: Programming Java

Programming II Page 29 of 29

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()); } } }