java modul

Upload: deshwitat-l-rubdich

Post on 12-Jul-2015

173 views

Category:

Documents


0 download

TRANSCRIPT

PIL: Programming with Java

1

Modul Pemrograman Java Daftar IsiModul Pemrograman Java...........................................................................1 Daftar Isi........................................................................................................ 1 1. Program Konsole........................................................................................2 2. Data/Field dan Function/Method................................................................. 4 3. Applet........................................................................................................ 8 4. Penggunaan Parameter dalam Program Konsole dan Applet....................11 5. Basics Graphics in Java Applet................................................................. 16 6. Windows Application................................................................................18 7. Simple Animation..................................................................................... 20 8. Graphics Animation.................................................................................. 22 9. Package...................................................................................................25 10. Contoh Aplikasi: Kalkulator..................................................................... 30

2

PIL: Programming with Java

1. Program KonsoleProgram Java terdiri atas beberapa bentuk. Bentuk yang akan pertama kita pelajadi adalah program Konsole, yang dijalankan melalui command prompt (untuk lingkungan Microsoft/Windows) atau user console (untuk lingkungan Unix/Linux). Program/kelas konsole setidaknya tersusun dengan kerangka sbb: class namakelas { [ [private] static kelas objek;] public static void main (String args[]){ instruksi_bahasa_Java; } } // deklarasi kelas // deklarasi data/field, boleh ada/tidak // deklarasi function/method // instruksi-instruksi bahasa Java

Contoh, kelas yang akan kita buat pertama, untuk mencetak kata "Hai, apa kabar" di layar monitor. Buatlah dengan sebuah teks editor kelas berikut, simpan dengan nama checkSound.java. Perhatikan bahwa apabila dalam satu program hanya terdapat satu kelas, maka sebaiknya nama programnya sama persis dengan nama kelasnya, termasuk huruf kapital-nya, dengan tambahan ekstesi .java. Contoh 1. Program Konsole Sederhana class checkSound { static String suara; public static void main(String args[]) { suara = "petok, petok, petok..!"; System.out.println(suara); } } Simpan dengan nama file: checkSound.java Untuk menjalankan program ini, terlebih dulu lakukan kompilasi program: d:\modul> javac checkSound.java (perhatikan huruf kapital dan ekstensi). Bila tidak ada pesan kesalahan, akan muncul sebuah kelas java pada direktori ybs. dengan nama checkSound.class Jalankan program pertama ini dengan perintah: d:\modul> java checkSound (perhatikan huruf kapital, dan tanpa ekstensi). petok, petok, petok..! Tips: Cara memeriksa kesalahan program Pada saat kompilasi, bila pada program yang kita ketik masih ada kesalahan sintaks, maka akan muncul pesan-pesan kesalahan. Misal pada pogram di atas kita ketik sbb: class checkSound {

PIL: Programming with Java static string suara; public static void main(String args[]) { suara = "petok, petok, petok..!"; System.out.println(suara); } } Kita lakukan kompilasi: d:\modul>javac checkSound.java Maka akan muncul kesalahan sbb: Pesan Kesalahan checkSound.java:2: cannot find symbol symbol : class string location: class checkSound static string suara; ^ 1 error

3

Makna jenis kesalahan dan nomor baris kode yang salah kelas yang mengalami kesalahan tanda ^ menunjukkan kolom terjadinya kesalahan. jumlah kesalahan yang terjadi

Dari kesalahan itu ditemukan kata string, Kita tahu bahwa bahasa Java bersifat casesensitive, alias membedakan huruf besar dan huruf kecil. Jadi, kesalahan terjadi karena kata/keyword String ditulis dengan huruf kecil. Perhatikan baik-baik setiap kesalahan yang muncul, baris dan kolomnya. Lakukan perbaikan secara menyeluruh terhadap setiap baris yang salah, baru lakukan kompilasi lagi. Ingat: Jangan biasakan mengoreksi satu kesalahan, lalu kompail, cari salah lagi, koreksi satu kesalahan, kompail lagi, dst Cara ini akan sangat memboroskan waktu. Baca satu persatu pesan kesalahan, dan koreksi dulu semua kesalahan yang disebutkan, baru lakukan kompilasi ulang.

4

PIL: Programming with Java

2. Data/Field dan Function/MethodJava, seperti C++, adalah bahasa pemrograman yang berorientasi objek, berbeda dengan pemrograman visual yang rata-rata berbasis objek, misalnya VB, Delphi, JavaScript, dsb. Dalam bahasa berorientasi objek, program dijalankan oleh kelas-kelas yang mengolah data-data melalui perintah-perintah tertentu di dalam kelas itu sendiri. Karena itu, dikenal 2 komponen utama kelas, yaitu data/field dan function/method. Misalnya, kita memiliki sebuah kelas theMonster, yang dapat ditulis sbb: Contoh 2.1 Kelas theMonster secara standar class theMonster { private String sex; private String color; private boolean hungry; // deklarasi kelas the Monster // deklarasi field sex // deklarasi field color // deklarasi field hungry

public theMonster() { // konstruktor tanpa parameter gunanya } // untuk menentukan nilai-nilai default public theMonster(String sx, String cl, boolean hg) { } // konstruktor dengan parameter public void setSex(String cl) { // method setSex, mengisi nilai sex } public String getSex() { // method getSex, mengambil nilai sex } public void setColor(String cl) { // method setColor, mengisi nilai Color } public String getColor() { // method getColor, mengambil nilai Color } public void setHungry(String cl) { // method setHungry, mengisi nilai Hungry } public String getHungry() { // method getHungry, mengambil nilai } // Hungry } Simpan dengan nama theMonster.java. Lakukan kompilasi: d:\modul> javac theMonster.java, hingga tidak ada error lagi dan muncul sebuah file theMonster.class di direktori aktif. d:\modul> dir theMonster.* theMonster.java theMonster.class 2 files.

PIL: Programming with Java Contoh 2.1b Kelas MonsterApp untuk memanggil kelas theMonster class MonsterApp{ private static theMonster Ogre; public static void main(String args[]) { print("Mengisi data Ogre...!"); Ogre.setSex("betina"); Ogre.setColor("koneng"); Ogre.setHungry(false); print("\nMelihat data Ogre...!"); print("Jenis kelamin: " + Ogre.getSex()); print("Warna: " + Ogre.getColor()); print("Status: " + ((Ogre.getHungry())?"Lapar":"Kenyang")); } public static void print(String teks){ System.out.println(teks); } }

5

Simpan dengan nama MonsterApp.java, lalu lakukan kompilasi: d:\modul> javac MonsterApp.java, hingga tidak ada error lagi dan muncul sebuah file MonsterApp.class di direktori aktif. Jalankan program: d:\modul> java MonsterApp. Mengisi data Ogre...! Melihat data Ogre...!"; Jenis kelamin: Betina Warna: Koneng Status: Kenyang. Jadi, secara umum, data dalam field diisi melalui konstruktor, atau dengan method setData, sedangkan nilainya diakses melalui method getData. Tapi itu adalah cara umum. Di sini kita mencoba cara lain untuk mengatur dan mengambil nilai field. Buatlah program ini, simpan dengan nama theMonster.java. Contoh 2.2.a Kelas theMonster (modifikasi) class theMonster { private String color; private String sex; private boolean hungry; public theMonster(){ sex = "jantan"; color = "hijau"; hungry = true; } public theMonster(String sx, String cl, boolean hg){ sex = sx; color = cl; hungry = hg. }

6

PIL: Programming with Java public String feedMonster(String teks) { String tx; if (hungry) { hungry = false; tx = "Hmmm... enaknya "+teks+" ini!"; } else { tx = "Maaf... udah kenyang nih!"; } return tx; } public String showAtts() { String teks="Ada seekor monster "+sex+" berwarna "+color+". "; teks = teks + ((hungry)? "Monster ini lapar.":"Monster sudah kenyang."); return teks; } }

Lakukan kompilasi: d:\modul> javac theMonster.java, Buatlah sebuah program baru, untuk memanggil kelas theMonster yang telah dibuat, simpan dengan nama MonsterApp.java Contoh 2.2.b. Kelas MonsterApp untuk memanggil kelas theMonster class MonsterApp{ private static theMonster Ogre; private static theMonster Jabberwock("betina","koneng",false); public static void main(String args[]) { print("Check Status Ogre...!"); print(Ogre.showAtts()); print("Coba kita kasih makan"); print(Ogre.feedMonster("bayi unta")); print("Lihat status baru ..."); print(Ogre.showAtts()); print("\nCheck Status Jabberwock...!"); print(Jabberwock.showAtts()); print("Coba kita kasih makan"); print(Jabberwock.feedMonster("bayi vampir")); } public static void print(String teks){ System.out.println(teks); } } Lakukan kompilasi: d:\modul> javac MonsterApp.java, hingga tidak ada error lagi dan muncul sebuah file MonsterApp.class di direktori aktif. Jalankan program:

PIL: Programming with Java d:\modul> java MonsterApp. Check Status Ogre ...! Ada seekor monster jantan berwarna hijau. Monster ini lapar. Coba kita kasih makan Hmmm... enaknya bayi unta ini! Lihat status baru Ada seekor monster jantan berwarna hijau. Monster ini sudah kenyang. Check Status Jabberwock ...! Ada seekor monster betina berwarna koneng. Monster ini sudah kenyang. Coba kita kasih makan Maaf... udah kenyang nih! Contoh kedua, lebih bercerita daripada contoh pertama, kan?

7

8

PIL: Programming with Java

3. AppletClass dari program Java dapat dipanggil melalui browser internet bila disisipkan sebagai aplet yang dipanggil dengan TAG dalam HTML: Contoh 3.1a: File HTML pemanggil aplet Contoh 3.1b: File checkSoundApplet.class checkSoundApplet.java memanggil applet yang bernama checkSoundApplet.clas s, yang tersimpan pada direktori yang sama dengan file checkSound.html. sebagai sumber dari

//checkSoundApplet.java import java.applet.Applet; import java.awt.Graphics; public class checkSoundApplet extends Applet { public void paint (Graphics g) { g.drawString ("GRRRAAAHHHUGH!!",0,50); } } Program di atas dapat dijalankan dengan perintah sbb: d:\modul>javac checkSoundApplet.java Apabila tidak ada pesan error, dari perintah javac (java compiler) ini dihasilkan sebuah file baru: checkSoundApplet.class. Untuk menjalankannya ketikkan: d:\modul>appletviewer checkSoundApplet.html Dapat pula dipanggil melalui web browser, pilih File Open File checkSoundApplet.html. Catatan: 1. Bila nama kelas applet-nya adalah checkSoundApplet, maka nama filenya harus checkSoundApplet.java 2. Pada saat kompilasi dengan javac perhatikan baik-baik huruf kapital atau tidaknya. SANGAT DIANJURKAN penulisan huruf kapital atau tidaknya agar TEPAT SAMA dengan nama file dan kelas applet-nya. Contoh 2a: File HTML pemanggil aplet

PIL: Programming with Java Contoh 2b: File MonsterApplet.java sebagai sumber MonsterApplet.class // kita sudah punya kelas theMonster, jadi tidak usah dibuat lagi. public class MonsterApplet extends java.applet.Applet { private Monster Ogre; private Monster Jabberwock; public void paint(Graphics g) { Ogre = new Monster; Jabberwock = new Monster("betina","koneng",false); print("Check Status Ogre...!", 20); print(Ogre.showAtts(),30); print("Coba kita kasih makan",40); print(Ogre.feedMonster("bayi unta"),50); print("Lihat status baru ...",60); print(Ogre.showAtts(),70); print("Check Status Jabberwock...!",90); print(Jabberwock.showAtts(),100); print("Coba kita kasih makan",110); print(Jabberwock.feedMonster("bayi vampir"),120); } public void print(Graphics g,String teks,int y){ g.drawString(teks, 5, y); } } Petunjuk lengkap tentang penggunaan tag dalam HTML [] [] [ ... ] Keterangan:

9

10 CODE= classFileName HEIGHT= height WIDTH= width MAYSCRIPT NAME= appletName CODEBASE= classFileDirectory ALT= alternateText ALIGN= alignment HSPACE= spaceInPixels VSPACE= spaceInPixels

PIL: Programming with Java nama kelas applet ber-ekstensi .class yang akan ditampilkan. menentukan tinggi applet di dalam browses dalam ukuran pixel. menentukan lebar applet di dalam browses dalam ukuran pixel. mengijinkan applet mengakses Java Script nama Applet. letak direktori kelas applet (.class), jika berbeda dengan lokasi file html yang dipanggil. teks yang akan ditampilkan bila browser tidak mendukung tag . perataan applet pada HTML. margin horisontal dari tepi kiri dan kanan browser ke applet. margin vertikal dari tepi atas dan bawah browser ke applet menentukan parameter applet. nama parameter. nilai parameter.

PIL: Programming with Java

11

4. Penggunaan Parameter dalam Program Konsole dan AppletParameter adalah data yang disertakan dalam pemanggilan program/perintah. Misal perintah DOS: C:\>dir *.exe, dir adalah perintah, *.exe adalah parameter. Atau misalnya perintah: C:\> win.com /D:M, win.com adalah program, dan /D:M adalah parameter. Contoh 4.1a. Kelas konsole sederhana yang menggunakan parameter class Hello { static String teks; public static void main(String args[]){ teks = "Hello, "; for(int i = 0;ijava Hello 2. d:\modul>java Hello Budi Santoso Hello, Budi! Hello, Santoso! d:\modul>java Hello "Budi Santoso" Hello Budi Santoso

3.

Contoh 4.1b Kelas konsole yang menggunakan parameter class Banding { static float Monster1; static float Monster2; public static void main(String args[]){ // args adalah array dari if (args.length !=2){ // parameter, print("Cara penggunaan:"); // args.length adalah jumlah print("java Banding angka1 angka2"); // parameter yang disertakan System.exit(1); // dlm pemanggilan program } Monster1 = Float.parseFloat(args[0]); Monster2 = Float.parseFloat(args[1]); print("Tinggi Monster 1: " + Monster1 + "meter"); print("Tinggi Monster 2: " + Monster2 + "meter"); if (Monster1>Monster2) { print("Monster 1 lebih besar dari Monster 2.");

12 } else if (Monster1java Banding Cara penggunaan: java Banding angka1 angka2 2. d:\modul>java Banding 10 20 Tinggi Monster 1: 10 meter Tinggi Monster 2: 20 meter Monster 1 lebih kecil dari Monster 2

PIL: Programming with Java

Contoh 4.2a. Applet sederhana menggunakan parameter //checkSoundAppletParam.java import java.applet.Applet; import java.awt.Graphics; public class checkSoundApplet extends Applet { String teks; public void init(){ teks = getParameter("teks"); if (teks == null) { teks = "Anda harus memasukkan tag "; } } public void paint(Graphics g) { g.drawString("checkSound, "+teks,0,50); } } Contoh 4.2b. File html pemanggil Applet dengan parameter

PIL: Programming with Java Kompilasi: javac checkSoundAppletParam.java Eksekusi: d:\modul> appletviewer checkSoundAppletParam.html Contoh 4.3a. Applet menggunakan parameter //BandingApplet.java import java.applet.*; import java.awt.*; public class BandingAppletParam extends Applet{ float Monster1=0; float Monster2=0; public void init(){ String tx1 = getParameter("Monster1"); String tx2 = getParameter("Monster2"); if (tx1==null | tx2==null){ Monster1 = -99999; Monster2 = -99999; } else { Monster1 = Float.parseFloat(tx1); Monster2 = Float.parseFloat(tx2); } } public void paint(Graphics g){ if (Monster1==-99999) { print("Tambahkan parameter pada tag applet:",5); print(" Berikut ini contoh applet untuk menampilkan String yang terformat di dalam grafik. Contoh 5.2 Menampilkan String terformat dalam Grafis import java.applet.*; import java.awt.*; public class DrawText extends Applet { public void paint(Graphics g) { Font font = new Font("Helvetica", Font.BOLD + Font.ITALIC, 22); FontMetrics fm = g.getFontMetrics(font); String str = new String("The highest result of education is.."); g.setFont(font); g.drawString(str, (size().width - fm.stringWidth(str)) / 2, ((size().height - fm.getHeight()) / 2) + fm.getAscent()); } } Buatlah file HTML untuk memanggil applet ini.

17

Sumber: Java Unleashed 2nd Edition, Michael Morrison

18

PIL: Programming with Java

6. Windows ApplicationAplikasi berbasis Windows dalam Java dapat dibuat secara mudah dengan menggunakan editor NETBEANS IDE, suatu tool development Java yang berbasis GUI. Jalankan Netbeans Ide, dan pilih: FileNewJava GUI Forms JDialog Form. Kemudian letakkan komponen-komponen berikut pada form yang ada:

Kotak putih besar di atas adalah komponen Jpanel dari package javax.swing. Kemudian tambahkan variabel sbb pada deklarasi kelas: private static Graphics g; private boolean LetsGo=false; private static float x, StartPoint,StopPoint;. Tambahkan pula method berikut: private int mySin(float x, int scale){ return (int) (scale*Math.sin(Math.PI*x/180)); }

PIL: Programming with Java

19

Ganti text pada button Cancel dengan Stop, atau hapus button Cancel, buat jButton baru dengan label text Stop. Untuk window utama, jDialog, pilih: Set Layout Absolute Layout. Aktifkan event berikut: private void formWindowActivated(java.awt.event.WindowEvent evt) { this.setBackground(Color.WHITE); this.setTitle("MyDialogs.."); g = jPanel1.getGraphics(); g.setColor(Color.BLACK); timer1.start(); } Untuk button Run, aktifkan eventnya: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // Add your handling code here: g.clearRect(0,0, jPanel1.getWidth(), jPanel1.getHeight()-30); StartPoint = Float.parseFloat(textField1.getText()); StopPoint = Float.parseFloat(textField2.getText()); x = StartPoint; LetsGo = true; } Untuk Button Stop: private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) { x = 0; LetsGo=false; } Untuk Button OK: private void okButtonActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } Untuk komponen jSlider, atur nilai maksimumnya=200 Tambahkan komponen Timer, set inteval-nya ke 10, dan aktifkan eventnya: // Add your handling code here: x+=jSlider1.getValue()/40.0; int tengah = jPanel1.getHeight()/2; int scale = Integer.parseInt(textField3.getText()); if (LetsGo){ g.drawLine(Math.round(x), tengah, Math.round(x+1), tengah); g.drawLine(Math.round(x), tengah-mySin(x,scale), Math.round(x+1), tengah-mySin(x+1,scale)); if (x>=StopPoint) { x = 0; LetsGo=false; } } Jalankan. Mudah kan? Untuk latihan, silahkan buat program di atas menjadi Applet.

20

PIL: Programming with Java

7. Simple AnimationKelas di bawah ini akan menghasilkan sebuah tanda * yang berubah-ubah dari satu buah menjadi 2, 3, 4, 3, 2, dan kembali ke satu lagi, terus berulang-ulang. Di sini konsep animasi frame digunakan. Frame-frame berupa array String frames, dan diisi dengan tanda * berjumlah 1, 2, 3, 4, 3, 2, dan 1. Dapat pula diganti dengan teks lain. Misal nama: b, bu, bud, budi, budim, budima, budiman, budima, budim, budi, bud, bu, dan b. Atau bila diisi dengan , budiman, udimanb, dimanbu, imanbud, manbudi, anbudim, dan nbudima, tentunya akan berubah menjadi tulisan budiman yang terus bergerak ke kiri. //SimpleAnimation.java import java.awt.*; // baris ini tdk diperlukan bila pendeklarasian objek // dilakukan dengan menyertakan kelas dan package public class SimpleAnimation extends Frame implements Runnable { Thread animation; int frameDelay = 100; String frames[] = {"*", "**", "****", "****", "*****", "****", "***", "**", "*"}; int numFrames = frames.length; int currentFrame = 0; long lastDisplay = 0; int screenWidth = 200; int screenHeight = 200; private java.awt.Menu menu1; // deklarasi objek dg kelas dan private java.awt.MenuBar menuBar1; // package private java.awt.MenuItem menuItem1; public static void main(String args[]) { SimpleAnimation app = new SimpleAnimation(); } public SimpleAnimation() { super("Simple Animation"); setup(); pack(); resize(screenWidth,screenHeight); show(); animation = new Thread(this); animation.start(); } void setup() { menuBar1 = new java.awt.MenuBar(); menu1 = new java.awt.Menu(); menuItem1 = new java.awt.MenuItem();

PIL: Programming with Java menu1.setLabel("File"); menuItem1.setLabel("Exit"); menu1.add(menuItem1); menuBar1.add(menu1); setMenuBar(menuBar1); //setFont(new Font("default",Font.BOLD,18)); } public void paint(Graphics g) { g.drawString(frames[currentFrame],60,60); } public void run() { do { long time = System.currentTimeMillis(); if(time - lastDisplay > frameDelay) { repaint(); try { Thread.sleep(frameDelay); }catch(InterruptedException ex){ } ++currentFrame; currentFrame %= numFrames; lastDisplay = time; } } while (true); } public boolean handleEvent(Event event) { if(event.id==Event.WINDOW_DESTROY){ System.exit(0); return true; }else if(event.id==Event.ACTION_EVENT){ if(event.target instanceof MenuItem){ String arg = (String) event.arg; if("Exit".equals(arg)) { System.exit(0); return true; } } } return false; } }

21

Sumber: Java Unleashed 2nd Edition, Michael Morrison

22

PIL: Programming with Java

8. Graphics AnimationMasih menggunakan konsep animasi frame, kelas/program ini akan menampilkan gambar stickman1.gif stickman4.gif secara berganti-ganti. Ingat bahwa file stickman.gif harus berada satu direktori dengan program yang dijalankan. //GraphicAnimation.java import java.awt.*; public class GraphicAnimation extends Frame implements Runnable { Thread animation; int frameDelay = 200; Image frames[]; int numFrames; int currentFrame = 0; long lastDisplay = 0; boolean fullDisplay = false; MediaTracker tracker; String menuItems[][] = {{"File","Exit"}}; int screenWidth = 400; int screenHeight = 400; private java.awt.Menu menu1; private java.awt.MenuBar menuBar1; private java.awt.MenuItem menuItem1; public static void main(String args[]) { GraphicAnimation app = new GraphicAnimation(); } public GraphicAnimation() { super("Graphic Animation"); setup(); pack(); resize(screenWidth,screenHeight); show(); animation = new Thread(this); animation.start(); } void setup() { menuBar1 = new java.awt.MenuBar(); menu1 = new java.awt.Menu(); menuItem1 = new java.awt.MenuItem(); menu1.setLabel("File"); menuItem1.setLabel("Exit"); menu1.add(menuItem1); menuBar1.add(menu1); setMenuBar(menuBar1); Toolkit toolkit = this.getToolkit();

PIL: Programming with Java frames = new Image[4]; frames[0] = toolkit.getImage("stickman1.gif"); frames[1] = toolkit.getImage("stickman2.gif"); frames[2] = toolkit.getImage("stickman3.gif"); frames[3] = toolkit.getImage("stickman4.gif"); numFrames = frames.length; tracker = new MediaTracker(this); for(int i=0;i javac app/MyAgent.java Kompilasi file kedua dari direktori aktif (package/): d:\modul> javac app/IntroduceApp.java Lihat package file pertama (dari direktori aktif), gunakan perintah javap (jangan lupa tulis nama package app di depan nama file dengan titik). sbb: d:\modul> javap app.MyAgent. Lihat package file kedua (dari direktori aktif), gunakan perintah javap (jangan lupa tulis nama package app di depan nama file dengan titik). sbb: d:\modul> javap app.IntroduceApp. Eksekusi (dari direktori aktif dan jangan lupa tulis nama package app di depan nama file dengan titik), sbb: d:\modul> java app.IntroduceApp] Contoh 9.3a. Penggunaan Package: app.FileInfoApp.java //filename:d:\modul\app\FileInfoApp.java package app; import java.io.File; import java.util.Date; public class FileInfoApp { public static void main(String[] args) { String fileName=args[0]; File file = new File(fileName); if(file.isFile()) { System.out.println("is a file"); } else { System.out.println("is a directory"); } System.out.println("can read : "+file.canRead());

PIL: Programming with Java System.out.println("can write: "+file.canWrite()); System.out.println("length : "+file.length()); System.out.println("last modified : " + new Date(file.lastModified())); } }//end of class and file Kompilasi (dari direktori aktif): d:\modul> javac app/FileInfoApp.java. Eksekusi-1 (dari direktori aktif) : d:\modul> java app.FileInfoApp app Eksekusi-2 (dari direktori aktif) : d:\modul> java app.FileInfoApp app/FileInfoApp.java] Contoh 9.3a. Penggunaan Package: my.FileCommand.java //filename:d:\modul\my\FileCommand.java (file-1) package my; import java.io.*; public class FileCommand { private FileCommand(){}; public static void ls(String dirName) { File dir=new File(dirName); if (dir.exists()) { String[] list=dir.list(); for(int i=0;i=2) { my.FileCommand.ls(args[1]); } else if(args[0].equals("view") && args.length>=2) { my.FileCommand.view(args[1]); } else if(args[0].equals("mkdir") && args.length>=2) { my.FileCommand.mkdir(args[1]); } else if(args[0].equals("mv") && args.length>=2) { my.FileCommand.mv(args[1], args[2]); } else if(args[0].equals("rm") && args.length>=2) { my.FileCommand.rm(args[1]); } else { usage(); } } private static void usage() { System.out.println( "Usage: \n" + "List dir contents : \n" + " java app.FileCommandApp ls dirName\n" +

PIL: Programming with Java "View text file :\n" + " java app.FileCommandApp view fileName\n" + "Make dir :\n" + " java app.FileCommandApp mkdir dirName\n" + "Rename files :\n" + " java app.FileCommandApp mv Path1 Path2\n" + "Remove files or dir :\n" + " java app.FileCommandApp rm path\n"); } } Kompilasi (dari direktori aktif): d:\modul> javac app/FileCommandApp.java Eksekusi-1 (dari direktori aktif): d:\modul> java app.FileCommandApp ls app Eksekusi-2 : d:\modul> java app.FileCommandApp view app/FileCommandApp.java Eksekusi-3 (dari direktori aktif): d:\modul> java app.FileCommandApp mkdir newdir Eksekusi-4 (dari direktori aktif): d:\modul> java app.FileCommandApp rm newdir

29

30

PIL: Programming with Java

10. Contoh Aplikasi: KalkulatorBuatlah tampilan berikut dengan NetBeans IDE. Gunakan: File New Java GUI Form JappletForm.

Atur komponen-komponen dengan layout di atas. Kalkulator ini berfungsi sebagai kalkulator dagang. Karakteristiknya: operator diproses sesuai urutan masuk. Hasil operasi sebelumnya akan muncul setiap tanda operator ditekan. Misal: 1 + 2 * 3 = , akan diolah sebagai: 1 + 2 = 3 (angka 3 muncul pada saat tanda * ditekan) 3 * 3 = 9 (angka 9 akan muncul pada saat tanda = atau operator lain ditekan). Tambahkan data-data berikut dibawah deklarasi kelas: boolean opr_pressed; // flag bahwa tanda operator sudah ditekan boolean is_leading; // flag bahwa angka 0 terletak paling depan char prev_opr; // operator yang disimpan untuk dioperasikan double memory; // memory untuk menyimpan hasil perhitungan Pada method init, tambahkan: public void init() { initComponents(); opr_pressed = false; is_leading = true; prev_opr = ' '; memory = 0.0; }

// di awal running, belum ada operator yg ditekan // di awal running, 0 pasti terletak paling depan // (karakter spasi)

Terutama pada JApplet, pilih Absolute Layout. Pada button-button: 1 9, aktifkan event ActionPerformed: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { jTextField1.setText((opr_pressed)? "1":(jTextField1.getText()+"1")); opr_pressed = false; is_leading = false; } Sesuaikan angka '1' dengan angka yang sesuai dengan button-nya.

PIL: Programming with Java Pada button 0 aktifkan event ActionPerformed: private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) { jTextField1.setText((is_leading)?"0":(jTextField1.getText()+"0")); } Untuk button ".": private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) { if (opr_pressed){ jTextField1.setText("0."); } else if (jTextField1.getText().indexOf('.')==-1) { jTextField1.setText(jTextField1.getText()+"."); } is_leading = false; opr_pressed = false; } Untuk button-button: +, -, *, dan /: private void jButton15ActionPerformed(java.awt.event.ActionEvent evt) { opr_pressed = true; is_leading = true; if (prev_opr == ' ') { memory = Double.parseDouble(jTextField1.getText()); } else { memory = operate(memory,prev_opr, Double.parseDouble(jTextField1.getText())); jTextField1.setText(Double.toString(memory)); } prev_opr = '+'; } Sesuaikan tanda '+' dengan tanda yang sesuai button-nya. Untuk button '=': private void jButton12ActionPerformed(java.awt.event.ActionEvent evt) { opr_pressed = true; is_leading = true; if (prev_opr == ' '){ memory = Double.parseDouble(jTextField1.getText()); } else { memory = operate(memory,prev_opr, Double.parseDouble(jTextField1.getText())); } jTextField1.setText(Double.toString(memory)); prev_opr = ' '; } Tambahkan method berikut di akhir kelas: private double operate(double x, char opr, double y){ double z=0.0; switch (opr){

31

32 case '+' case '-' case '*' case '/' } return z; : z = x + y; break; : z = x - y; break; : z = x * y; break; : z = x / y; break;

PIL: Programming with Java

} Latihan: Lengkapi kalkulator di atas dengan tombol C untuk membersihkan memory, dan tombol untuk menghapus angka terakhir. Bila sudah, ubahlah menjadi kalkulator aritmetika, yang beroperasi dengan menggunakan aturan aritmetika. Karakteristiknya: operator diproses sesuai aturan aritmetika. Hasil total operasi biasanya hanya muncul setelah tanda = diitekan, dan hasil operasi sementara akan muncul setelah tanda + atau ditekan.. Misal: 1 + 2 * 3 = , akan diolah sebagai: 1+ 2 * 3 = 6 (angka 6 tidak muncul) 1 + 6 = 7 (angka 7 akan muncul pada saat tanda = atau operator lain ditekan).