MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ......

38
KOMPUTASI BERGERAK MODUL PRAKTIKUM D3 Manajemen Informatika Fakultas Teknik Universitas Trunojoyo

Transcript of MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ......

Page 1: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

KOMPUTASI BERGERAK

MODUL PRAKTIKUM

D3 Manajemen Informatika Fakultas Teknik

Universitas Trunojoyo

Page 2: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

ii

[halaman ini sengaja dikosongkan]

75

Biografi Penulis

Muhammad Fuad, S.Kom

Penulis lahir dan menyelesaikan sekolah hingga SLTA di kota Surabaya. Melanjutkan pendidikan di Teknik Informatika UNITOMO Surabaya dengan bidang minat Komputasi. Sekarang penulis bekerja sebagai dosen Manajemen Informatika Universitas Trunojoyo Madura. Mata kuliah yang pernah diampuh oleh penulis di antaranya adalah Basis Data, Pemrograman Berorientasi Obyek, Komputasi Bergerak.

Page 3: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

74

Daftar Pustaka

· Tremblett P., “Instant Wireless Java with J2ME”, McGraw-Hill/Osborne, 2002

· Rischpater, Ray, “Beginning Java ME Platform”, APRESS, 2008

iii

Kata Pengantar Bismillaahirrohmaanirrohiim,

Alhamdulillah, modul Komputasi Bergerak dapat diselesaikan. Modul ini berisi dua belas bab. Modul Komputasi Bergerak memberikan tuntunan praktis bagaimana membangun aplikasi java yang dapat dijalankan dalam perangkat bergerak atau yang biasa disebut sebagai MIDlet.

Semoga modul Komputasi Bergerak dapat menyediakan tutorial yang bermanfaat bagi prakt ikan yang ingin menekuni pemrograman Java dalam lingkungan perangkat bergerak.

Bangkalan, 19 Januari 2010

Penulis

Page 4: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

iv

[halaman ini sengaja dikosongkan]

73

Tugas Akhir

Buatlah MIDlet untuk mengakses data dari server. Sistem informasi yang dibangun di server harus berbeda antar mahasiswa.

Page 5: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

72

int b; StringBuffer sb = new StringBuffer(); while ( (b = is.read()) != -1) { sb.append((char)b); } socket.close(); siData.setText(sb.toString()); display.setCurrent(outputForm);

5. Build dan Run untuk menguji MIDlet.

Gambar 12. 2 Konfirmasi akses

network

Gambar 12. 3 Menampilkan info dari

server

Tugas

Buatlah MIDlet dengan kemampuan mengakses web server untuk melakukan request harga barang dengan memasukkan nama barang. Untuk database dapat menggunakan DBMS MySQL. Untuk server programming dapat menggunakan PHP atau JSP atau Servlet. Database hanya terdiri dari satu tabel saja dan desain tabel diserahkan ke Anda.

v

Tujuan Umum Mahasiswa mampu memahami teknologi Java Micro Ed ition kemudian mengembangkan aplikasi MIDlet untuk keperluan komputasi

Page 6: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

vi

[halaman ini sengaja dikosongkan]

71

!"); socket.close(); } catch (IOException a) { System.out.println("exception saat menulis data ke ServerSocket: " + a); a.printStackTrace(); }

4. Simpan file, lakukan kompilasi dan jalankan file sehingga akan tampil

seperti di bawah in i.

Gambar 12. 1 Mengaktifkan program server

Pada bagian kedua, kita akan membangun MIDlet dengan kemampuan berkomunikasi lewat network.

1. Dengan menggunakan J2ME WTK, buat project baru dengan nama Pertemuan12 dengan CobaStreamConnection sebagai nama class MIDlet.

2. Siapkan dua variabel bertipe St ring untuk menyimpan informasi tentang host dan port dari server yang akan dihubungi. Informasi d idapatkan dari seting User Defined pada J2ME WTK.

String host = getAppProperty("HOST"); String port = getAppProperty("DAYTIME_PORT"); dayTimeURL = PROTOCOL + "://" + host + ":" + port;

3. Siapkan objek StreamConnection untuk membuka koneksi menuju server

dengan parameter host dan port dalam dayTimeURL. Siapkan objek InputStream untuk menampung aliran data dari server hasil pemanggilan method openInputStream.

socket = (StreamConnection)Connector.open(dayTimeURL,Connector.READ,true); is = socket.openInputStream();

4. Data dari InputStream berupa susunan integer diubah menjadi karakter

dan disusun kembali dalam StringBuffer. Selanjutnya hasil konversi StringBuffer ke St ring ditampilkan pada Form melalui komponen StringItem.

Page 7: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

70

Connector menghasilkan ob jek Connection yang di antara jenisnya adalah StreamConnection yang memiliki kemampuan untuk menangani aliran data masuk dengan InputStream dan aliran data keluar dengan OutputStream. Praktikum Pada pertemuan ke-11, kita akan membangun MIDlet dengan kemampuan untuk berkomunikasi melalui jaringan komputer (network) dengan memanfaatkan paket javax.microedition.io. Pada bagian pertama, perlu d ibangun class DayTimeServer yang bertindak sebagai server yang menyediakan informasi tentang date/time saat ini. ServerSocket adalah class yang digunakan untuk melayani permintaan melalu i network. Method accept dari class ServerSocket bertugas menerima koneksi dan menghasilkan objek Socket sebagai titik akhir komunikasi antar mesin.

1. Buat file DayTimeServer. 2. Siapkan objek ServerSocket, Socket dan DataOutputStream.

ServerSocket serverSocket = null; Socket socket; DataOutputStream dosData; try { serverSocket = new ServerSocket(dayTimePort); System.out.println("Membuka ServerSocket pada port " + dayTimePort); } catch (IOException a) { System.out.println("exception saat membuka ServerSocket: " + a); a.printStackTrace(); System.exit(0); }

3. Menyiapkan data date/time dan mengirimnya lewat OutputStream.

while (true) { try { socket = serverSocket.accept(); System.out.println(socket.toString() + " siap menerima request ... "); dosData = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream())); String dateString = new Date().toString(); dosData.write(dateString.getBytes(), 0, dateString.length()); dosData.flush(); System.out.println("Data date/time telah siap diakses

vii

Tujuan Khusus

1. Mampu menggunakan Java 2 Micro Edit ion Wireless Tool Kit untuk membuat project ap likasi MIDlet

2. Mampu menambahkan konten dinamis pada MIDlet 3. Mampu menambahkan kemampuan interaksi user dengan MIDlet 4. Membangun aplikasi MIDlet untuk komputasi dengan memanfaatkan bilangan acak 5. Memanfaatkan MIDP API untuk pembuatan tampilan antar muka pengguna 6. Mampu menggunakan komponen antar muka tingkat mahir untuk mendesain tampilan antar muka pengguna 7. Menggunakan grafik dengan komponen antar muka t ingkat rendah 8. Melengkapi MIDlet dengan notifikasi 9. Menyisipkan Pesan Berjalan pada MIDlet 10. Mengolah Data Persisten 11. Mampu Mengolah Data Persisten 12. Mengakses aplikasi internet dengan MIDlet

Page 8: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

viii

[halaman ini sengaja dikosongkan]

69

Modul XII

Memulai Pemrograman Jaringan Sederhana dengan MIDlet

Dasar Teori Connector adalah sebuah class yang bertindak sebagai pabrik untuk menghasilkan objek Connection. Proses pembuatan Connection membutuhkan beberapa informasi dengan format {scheme}:[{target}][{params}]. Scheme mengacu pada protokol seperti socket dan http. Target berisi network address seperti localhost atau 127.0.0.1 yang mungkin juga dilengkapi dengan informasi port seperti port 80 untuk http dan port 1024 untuk socket (sebagai catatan port 1024 ke bawah digunakan oleh sistem operasi). Parameter boleh dilengkapi dengan satu atau beberapa persamaan seperti type=a atau page=2. Method open digunakan untuk membuka koneksi dengan spesifikasi seperti di bawah ini. In formasi schema, target dan parameter d itampung dalam parameter name bertipe String; parameter mode mengatur hak akses seperti READ, WRITE atau READ_WRITE; parameter timeouts untuk memberi tanda bahwa timeout exception dibutuhkan dalam proses pemanggilan ini.

public static Connection open(String name, int mode, boolean timeouts) throws IOException

Tujuan : v Mahasiswa mampu mengakses aplikasi internet dengan MIDlet

Tugas Pendahuluan 1. Tuliskan properti dan method dari StringBuffer! 2. Tulisan cara mengkonversi dari char ke String!

3. Tuliskan fungsi dari setText dan getText dari StringItem!

Page 9: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

68

[halaman ini sengaja dikosongkan]

ix

Daftar Isi

Modul I : Memulai Pemrograman Komputasi Bergerak .....................................15 Modul II : Melengkapi MIDlet dengan Konten Dinamis .....................................19 Modul III : enggunakan Command dan CommandListener..................................23 Modul IV : Komputasi dengan Bilangan Acak........................................................27 Modul V : Komponen Antar Muka Screen .............................................................31 Modul VI : Komponen Antar Muka Item .................................................................35 Modul VII : Grafik dalam MIDlet ...............................................................................39 Modul VIII : Menambahkan Notifikasi........................................................................45 Modul IX : Menyisipkan Tulisan Berjalan ...............................................................49 Modul X : Mengolah Data Persisten ........................................................................53 Modul XI : Memanfaatkan RecordStore untuk Portable Log................................61 Modul XII : Memulai Pemrograman Jaringan Sederhana dengan MIDlet ...........69 Tugas Akhir …...................................................................................................................73 Daftar Pustaka.....................................................................................................................74 Biografi Penulis ..................................................................................................................75

Page 10: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

x

[halaman ini sengaja dikosongkan]

67

3. Jika record mengandung potongan string yang dicari maka method matches akan menghasilkan nilai true.

public boolean matches(byte[] candidate)

4. Implementasi method matches untuk mencari apakah suatu record mengandung karakter tertentu, menggunakan method indexOf dari class String.

public boolean matches(byte[] suspect) { String string = new String(suspect).toLowerCase(); if (string!= null && string.indexOf(search) != -1) return true; else return false; }

Gambar 11. 7 Menu Cari

Gambar 11. 8 Menampilkan hasil

pencarian

Tugas Sempurnakan MIDlet dari project Pertemuan11 sehingga memiliki kemampuan navigasi record, manajemen record, pengurutan data, dan pencarian data. Data yang ditampilkan adalah record BukuTelepon dengan nama yang diawali dengan karakter-karakter yang dimasukkan melalu i TextField dalam form pencarian.

Page 11: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

66

2. Pengurutan record dalam RecordEnumeration ditangani oleh class yang mengimplementasikan interface RecordComparator dan mengoverride abstract method compare.

public int compare(byte[] rec1, byte[] rec2)

3. Implementasi dari method in i memanfaatkan method compareTo dari class

String.

public int compare(byte[] rec1, byte[] rec2) { String string1 = new String(rec1); String string2 = new String(rec2); int hasilPerbandingan = string1.compareTo(string2); int hasil = 0; if (hasilPerbandingan == 0) { hasil = RecordComparator.EQUIVALENT; } else if (hasilPerbandingan < 0) { hasil = RecordComparator.PRECEDES; } else if (hasilPerbandingan > 0) { hasil = RecordComparator.FOLLOWS; } return hasil; }

4. Method compareTo menghasilkan nilai bertipe integer dengan tiga

kemungkinan, yaitu nol (EQUIVALENT), kurang dari nol dan lebih dari nol. Untuk pengurutan data secara ascending, nilai integer kurang dari nol diset sama dengan field PRECEDES; nilai integer lebih besar dari nol diset sama dengan field FOLLOWS.

Menggunakan RecordFilter:

1. Pencarian record berdasarkan nilai yang terdapat pada kolom tertentu dapat dilakukan dengan memanfaatkan instance dari class yang mengimplementasikan interface RecordFilter.

filter = new Filterku(ygDicari); comparator = new Comparatorku(); recordEnumeration = recordStore.enumerateRecords( filter, comparator, boolUpdate);

2. Method yang perlu dioverride saat mengimplementasikan interface

RecordFilter adalah matches dengan nilai balik boolean. Method ini berfungsi membandingkan antara suatu record dengan potongan string yang mungkin ada di dalam record tersebut.

xi

Daftar Gambar Gambar 1. 1 Mengakses KToolbar..................................................................................16 Gambar 1. 2 Membuat project baru.................................................................................16 Gambar 1. 3 Memilih target platform .............................................................................16 Gambar 1. 4 Laporan hasil pembuatan project..............................................................17 Gambar 1. 5 Tampilan MIDlet .........................................................................................17 Gambar 2. 1 Info penanggalan di console......................................................................19 Gambar 2. 2 Info penanggalan di MIDlet ......................................................................20 Gambar 2. 3 Calendar d i console.....................................................................................20 Gambar 2. 4 Calendar d i MIDlet .....................................................................................21 Gambar 2. 5 Modifikasi aplikasi dengan Calendar.......................................................21 Gambar 2. 6 Modifikasi pertama pada MIDlet .............................................................21 Gambar 2. 7 Modifikasi kedua pada MIDlet .................................................................21 Gambar 3. 1 Command pada MIDlet ..............................................................................25 Gambar 4. 1 Menguji Random di console......................................................................28 Gambar 4. 2 Menguji Random di MIDlet ......................................................................30 Gambar 5. 1 Menu di MIDlet ...........................................................................................33 Gambar 5. 2 TextBox di MIDlet ......................................................................................33 Gambar 5. 3 Form di MIDlet ............................................................................................34 Gambar 5. 4 List di MIDlet ..............................................................................................34 Gambar 6. 1 Menu pada MIDlet ......................................................................................37 Gambar 6. 2 DateField di MIDlet ....................................................................................37 Gambar 6. 3 Memilih tanggal...........................................................................................37 Gambar 6. 4 Hasil pemilihan DateField .........................................................................37 Gambar 6. 5 Pemilihan DateField ditampilkan di form utama...................................38 Gambar 6. 6 Gauge di MIDlet ..........................................................................................38 Gambar 6. 7 Gauge interaktif ...........................................................................................38 Gambar 6. 8 Nilai dari gauge ditampilkan di form utama...........................................38 Gambar 7. 1 Mengatur seting project..............................................................................40 Gambar 7. 2 MIDlet dengan icon ....................................................................................40 Gambar 7. 3 Mencoba ChoiceGroup...............................................................................41 Gambar 7. 4 Mencoba Canvas .........................................................................................42 Gambar 7. 5 Menambah MIDlet ......................................................................................42

Page 12: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

xii

Gambar 7. 6 Project dengan dua MIDlet........................................................................ 43 Gambar 7. 7 Menampilkan grafik ................................................................................... 43 Gambar 7. 8 Image dalam MIDlet .................................................................................. 43 Gambar 8. 1 Splash screen dengan Alert ....................................................................... 46 Gambar 8. 2 Beberapa tipe Alert ..................................................................................... 47 Gambar 8. 3 Alarm pada Alert ......................................................................................... 47 Gambar 9. 1 Ticker pada MIDlet .................................................................................... 49 Gambar 9. 2 Ticker di form pertama .............................................................................. 50 Gambar 9. 3 Ticker di form kedua .................................................................................. 50 Gambar 9. 4 Menu Next .................................................................................................... 50 Gambar 9. 5 Menu Previous............................................................................................. 50 Gambar 9. 6 ChoiceGroup dan Ticker pada form pertama ......................................... 51 Gambar 9. 7 Ticker dengan pesan hasil pilihan dari form pertama........................... 51 Gambar 9. 8 Ticker dengan pesan................................................................................... 51 Gambar 10. 1 Membuka RecordStore ............................................................................ 56 Gambar 10. 2 Membaca record........................................................................................ 56 Gambar 10. 3 Menambah record ..................................................................................... 56 Gambar 10. 4 Menampilkan record ................................................................................ 56 Gambar 10. 5 Record pada StringItem........................................................................... 57 Gambar 10. 6 Memilih record Pertama .......................................................................... 57 Gambar 10. 7 Menampilkan record pertama ................................................................. 57 Gambar 10. 8 Memilih menu Berikutnya ...................................................................... 57 Gambar 10. 9 Menampilkan record terakhir ................................................................. 58 Gambar 10. 10 Memilih menu Sebelumnya.................................................................. 58 Gambar 10. 11 Menampilkan record sebelumnya........................................................ 58 Gambar 10. 12 Memilih menu Baru ............................................................................... 58 Gambar 10. 13 Menampilkan record berikutnya.......................................................... 59 Gambar 10. 14 Memilih menu Terakh ir......................................................................... 59 Gambar 10. 15 Mengosongkan kotak isian ................................................................... 59 Gambar 10. 16 Mengisi data isian baru .......................................................................... 59 Gambar 10. 17 Record baru berhasil d itambahkan ...................................................... 60 Gambar 10. 18 Memilih menu Edit................................................................................. 60 Gambar 10. 19 Mengedit record ...................................................................................... 60 Gambar 10. 20 Record berhasil d iedit ............................................................................ 60 Gambar 11. 1 List sebagai menu ..................................................................................... 61 Gambar 11. 2 Form pencarian.......................................................................................... 62 Gambar 11. 3 Menu navigasi ........................................................................................... 62 Gambar 11. 4 Menu edit ................................................................................................... 64

65

8. Proses edit dan hapus menggunakan method yang sama dengan project Pertemuan10, yaitu setRecord dan deleteRecord. Yang menjadi perhatian di sini adalah nilai indeks yang dikirim sebagai parameter dari dua method tersebut.

Gambar 11. 6 Menu hapus

9. Agar nilai indeks atau recordId tidak berubah maka data ini dapat

disimpan bersama dengan data nama dan telepon ke dalam ob jek BukuTelepon.

public class BukuTelepon { private String nama, telp; private int recordId; public BukuTelepon(int c, String a, String b) { this.recordId = c; this.nama = a; this.telp = b; } //method setXXX(), getXXX(), toString() }

Menggunakan RecordComparator:

1. MIDlet yang telah menggunakan RecordEnumeration tanpa dilengkapi dengan instance dari RecordComparator dalam proses pengolahan record dari RecordStore BukuTelepon akan menampilkan data nama dalam urutan terbalik atau descending.

Page 13: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

64

6. Halaman pencarian data BukuTelepon berisi menu manajemen data yang meliputi Edit Nama, Edit Telp, dan Hapus.

Gambar 11. 4 Menu edit

7. Proses edit dari opsi Edit Nama dan Edit Telp melibatkan halaman lain

yaitu, TextBox untuk data nama dan TextBox untuk data telp. Jika menu Edit Nama diakses maka akan membuka halaman TextBox dengan judul Nama dan dilengkapi dengan dua Command yaitu OK untuk mengeksekusi perubahan data nama dan Command Kembali untuk menampilkan halaman List berisi opsi Cari dan Tambah. Halaman TextBox Nama dan Telp akan digunakan kembali saat opsi Tambah diakses.

Gambar 11. 5 TextBox untuk mengedit

xiii

Gambar 11. 5 TextBox untuk mengedit .........................................................................64 Gambar 11. 6 Menu hapus................................................................................................65 Gambar 11. 7 Menu Cari...................................................................................................67 Gambar 11. 8 Menampilkan hasil pencarian .................................................................67 Gambar 12. 1 Mengaktifkan program server.................................................................71 Gambar 12. 2 Konfirmasi akses network .......................................................................72 Gambar 12. 3 Menampilkan in fo dari server.................................................................72

Page 14: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

xiv

[halaman ini sengaja dikosongkan]

63

diaktifkan. Parameter ketiga mengatur kemutakhiran data, jika diisi t rue maka RecordEnumerator akan selalu mengupdate data sesuai dengan RecordStore. Pembacaan record dari RecordEnumeration melibatkan beberapa method, di antaranya adalah method hasNextElement untuk memeriksa kondisi keberadaan elemen dalam arah next; method nextRecordId untuk mendapatkan recordId dari arah next. Struktur penyimpanan data seperti Vector dapat dimanfaatkan untuk pengolahan data selanjutnya. Data recordId, nama dan telp dienkapsulasi ke dalam objek BukuTelepon dan selanjutnya objek ini d isimpan ke dalam Vector dengan method addElement. Pada proses membaca data dari Vector, elemen Vector d idapatkan dengan memanggil method elementAt. Data diperoleh dari elemen in i dengan mengubah tipenya dengan casting ke class BukuTelepon.

recordEnumeration = recordStore.enumerateRecords( filter, comparator, boolUpdate); vectorBT = new Vector(); byte [] record = new byte[100]; ByteArrayInputStream baisData = new ByteArrayInputStream(record); DataInputStream disData = new DataInputStream(baisData); String nama="", telp=""; while (recordEnumeration.hasNextElement()) { int recordId = recordEnumeration.nextRecordId(); recordStore.getRecord(recordId, record, 0); nama = disData.readUTF(); telp = disData.readUTF(); baisData.reset(); vectorBT.addElement(new BukuTelepon(recordId, nama, telp)); }

public BukuTelepon forwardRS() { String data = null; if ( indeksBT <= vectorBT.size()-1 ) { indeksBT++; } if (indeksBT > vectorBT.size()-1) { indeksBT = 0; } return( (BukuTelepon)vectorBT.elementAt(indeksBT) ); }

Page 15: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

62

3. Eksekusi pada opsi Cari akan menampilkan halaman baru berupa Form berisi StringItem yang akan menampilkan nama dan nomor telepon, dan berisi TextField untuk pencarian record tertentu.

Gambar 11. 2 Form pencarian

4. Halaman pencarian in i berisi menu untuk navigasi dan manajemen record.

Navigasi terdiri dari dua menu yaitu Sebelumnya dan Berikutnya. Dua menu navigasi ini akan menampilkan data dari RecordSource BukuTelepon yang bersifat sirkular, record selanjutnya dari record terakhir adalah record pertama. Record sebelumnya dari record pertama adalah record terakh ir.

Gambar 11. 3 Menu navigasi

5. Fungsi navigasi dibangun dengan memanfaatkan RecordEnumeration

yang diperoleh dengan memanggil method enumerateRecords. Parameter pertama dari method ini boleh diisi dengan RecordFilter, jika diisi null maka fungsi seleksi tidak d iakt ifkan. Parameter kedua boleh d iisi dengan RecordComparator, jika diisi null maka fungsi pengurutan tidak

15

Modul I

Memulai Pemrograman Komputasi Bergerak

Dasar Teori Pemrograman komputasi bergerak memanfaatkan teknologi Java 2 Micro Ed ition (J2ME) untuk menghasilkan aplikasi dengan kemampuan komputasi yang dapat dijalankan pada perangkat bergerak. Aplikasi in i berjalan di atas lapisan Mobile Information Device Profile (MIDP) dan disebut MIDlet. MIDlet adalah sebuat class Java berakses public yang merupakan turunan abstract class javax.microedit ion.mid let.MIDlet dengan mengoverride method pauseApp, startApp, dan destroyApp. MIDlet sebagai class utama dapat bekerja sama dengan class lain beserta sumber daya (image, data dan lain-lain) yang dipaket dalam file Java Archieve (JAR). MIDlet dikembangkan dengan menggunakan Java Development Kit dan J2ME W ireless Tool Kit (WTK). Ada beberapa tahapan yang dibutuhkan dalam proses pengembangan MIDlet. Tahap pertama adalah menulis kode dalam file sumber (.java). Tahap kedua adalah melakukan kompilasi untuk mengubah file java menjadi file class. Tahap ketiga adalah melakukan preverifikasi untuk memodifikasi file class agar dapat berjalan di emulator. Emulator adalah perangkat lunak untuk mensimulasikan jalannya MIDlet di perangkat komputasi ukuran kecil seperti hand phone.

Tujuan : v Mampu menggunakan Java 2 Micro Edit ion Wireless Tool Kit untuk

membuat project ap likasi MIDlet

Tugas Pendahuluan 1. Apa yang dimaksud dengan kompilasi? 2. Apa yang dimaksud dengan interpretasi?

3. Tuliskan macam-macam visibilitas dalam class!

Page 16: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

16

Praktikum Ikutilah langkah-langkah berikut in i untuk membuat sebuah MIDlet yang akan menampilkan tulisan “Salam dari Universitas Trunojoyo Madura” pada emulator.

1. Jalankan program Ktoolbar dari J2ME WTK.

Gambar 1. 1 Mengakses KToolbar

2. Pilih New Project dan isikan Pertemuan1 untuk Project Name dan HelloUTM untuk MIDlet Class Name.

Gambar 1. 2 Membuat project baru

3. Saat jendela Settings for project “Pertemuan1” terbuka, pilih OK untuk menyetujui seting yang telah ditentukan secara default.

Gambar 1. 3 Memilih target platform

61

Modul XI

Memanfaatkan RecordStore untuk Portable Log

Dasar Teori Paket javax.microedit ion.rms menyediakan tidak hanya class RecordStore dan lima class Exception, melainkan juga melengkapi dengan empat interface yaitu RecordEnumeration, RecordComparator, RecordFilter dan RecordListener. Interface RecordEnumerat ion bertindak sebagai enumerator bagi RecordStore, menjaga urutan recordId dari setiap record dalam RecordStore. Untuk melakukan pengurutan record, gunakan interface RecordComparator yang ditambahkan pada enumerator. Untuk melakukan pencarian record tertentu, gunakan interface RecordFilter bersama enumerator. Praktikum Pada pertemuan ke-11 ini, kita akan memanfaatkan paket javax.microedition.rms untuk membuat aplikasi MIDlet sebagai portable log yang akan mencatat data telepon sebagai penyempurna dari p roject Pertemuan10. Menggunakan interface RecordEnumerat ion:

1. Jalankan J2ME WTK dan buat project baru dengan nama Pertemuan11 dengan CobaRMS sebagai nama class MIDlet.

2. MIDlet CobaRMS menampilkan halaman pertama berupa List dengan dua opsi yaitu: Cari dan Tambah, List ini memiliki tipe IMPLICIT. Selain menampilkan dua opsi di atas, List juga berisi sebuah tombol Exit .

Gambar 11. 1 List sebagai menu

Tujuan : v Mahasiswa mampu mengolah data persisten

Tugas Pendahuluan 1. Tuliskan properti dari RecordComparator! 2. Tuliskan properti dari RecordFilter! 3. Tuliskan method dari Vector yang digunakan untuk menambah

dan membaca record!

Page 17: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

60

Gambar 10. 17 Record baru berhasil

di tambahkan

Gambar 10. 18 Memilih menu Edit

Gambar 10. 19 Mengedit record

Gambar 10. 20 Record berhasil diedit

17

4. Jendela J2ME WTK menampilkan pesan tentang lokasi untuk menyimpan file kode sumber (source code) di direktori src, file sumber daya (resource) di d irektori res dan file pustaka (library) di direktori lib.

Gambar 1. 4 Laporan hasil pembuatan project

5. Gunakan sembarang editor teks untuk menuliskan kode sumber bahasa java. Simpan file dengan nama HelloUTM.java.

import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HelloUTM extends MIDlet { public HelloUTM() { } public void pauseApp() {} public void startApp() { Display.getDisplay(this).setCurrent( new Alert("Salam dari Universitas Trunojoyo Madura"); } public void destroyApp(boolean kondisi) {} }

6. Dengan menggunakan J2ME WTK, lakukan Build yang merupakan kombinasi langkah kompilasi dan preverifikasi. Pilih Run untuk menjalankan MIDlet dengan emulator.

Gambar 1. 5 Tampilan MIDlet

Page 18: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

18

Tugas 1. Beri tanda komentar pada kedua baris import. Ada berapa jumlah error

yang terjadi? Apa makna tanda bintang (*) pada kedua baris import? Gantilah tanda bintang (*) dengan suatu cara lain agar program tetap dapat berjalan dengan baik!

2. Hilangkan kata kunci public yang tertulis sebelum kata kunci class dalam file kode sumber HelloUTM.java kemudian lakukan Build! Apakah ada error yang terjad i? Apakah MIDlet berjalan dengan baik sebagaimana pada hasil dari Praktikum langkah ke-6 di atas? Tuliskan kesimpulan Anda berkaitan dengan uji coba ke-2 in i!

3. Gantilah kata kunci MIDlet setelah kata kunci extends dengan midlet kemudian Build! Ada berapa error yang terbit? Tuliskan kesimpulan Anda mengenai hal ini!

4. Beri tanda komentar agar bagian constructor dari class HelloUTM tidak dieksekusi kemudian Build! Apakah MIDlet tetap berjalan dengan baik? Beri tanda komentar pada method pauseApp atau destroyApp kemudian Build? Apakah J2ME WTK menampilkan pesan kesalahan? Bandingkan kedua percobaan pada langkah keempat ini dan tuliskan kesimpulan Anda!

59

Gambar 10. 13 Menampilkan record

berikutnya

Gambar 10. 14 Memilih menu

Terakhir

Gambar 10. 15 Mengosongkan kotak

isian

Gambar 10. 16 Mengisi data isian

baru

Page 19: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

58

Gambar 10. 9 Menampilkan record

terakhir

Gambar 10. 10 Memilih menu

Sebelumnya

Gambar 10. 11 Menampilkan record

sebelumnya

Gambar 10. 12 Memilih menu Baru

19

Modul II

Melengkapi MIDlet dengan Konten Dinamis

Dasar Teori Package atau paket java.util pada J2SE menyediakan beberapa class dengan fungsi layanan tertentu. Di antara layanan yang diberikan adalah menyajikan data tanggal dan waktu. Layanan ini d isediakan oleh dua class Date dan Calendar. J2ME melalui Mobile Informat ion Device Profile mendukung pengembangan konten dinamis dari MIDlet dengan menyediakan class Date dan Calendar.

Praktikum Menggunakan class Date pada aplikasi J2SE:

1. Buat class TanggalHariIni dan lengkapi dengan main method. 2. Tambahkan paket java.util untuk mengakses class Date.

import java.util.Date;

3. Cetak data tanggal ke layar dengan memanggil konstruktor class Date.

System.out.println("Tanggal hari ini: " + new Date());

4. Simpan file TanggalHariIni kemudian lakukan kompilasi dan jalankan.

Gambar 2. 1 Info penanggalan di console

Menggunakan class Date pada MIDlet:

Tujuan : v Mahasiswa mampu menambahkan konten dinamis pada MIDlet

Tugas Pendahuluan 1. Apa yang dimaksud dengan paket atau package? 2. Tuliskan properti dari class Date dan Calendar?

3. Tuliskan properti atau method dari Date yang telah obsolete?

Page 20: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

20

1. Dengan menggunakan J2ME WTK, buat project Pertemuan2 dan lengkapi dengan class MIDlet dengan nama CobaDate.

2. Tambahkan defin isi method pauseApp, startApp dan destroyApp dalam body class CobaDate.

3. Boleh menambahkan paket javax.microedition.midlet dan javax.microedition.lcdui dan paket java.util untuk dapat mengakses class MIDlet, Display dan Date.

4. Pada method startApp, tambahkan kode untuk menampilkan pesan/notifikasi dengan class Alert. Letakkan konstruktor class Date sebagai parameter dari konstruktor class Alert.

Display.getDisplay(this).setCurrent(Alert(/*letakkan

konstruktor class Date di sini!*/));

5. Simpan file CobaDate.java. Kemudian lakukan Build dan Run untuk

menguji MIDlet dengan emulator.

Gambar 2. 2 Info penanggalan di MIDlet

Menggunakan class Calendar pada aplikasi J2SE:

1. Pada class TanggalHariIni, ganti konstruktor class Date dengan menggunakan pemanggilan method statik getInstance dari class Calendar.

System.out.println("Tanggal hari ini: " +

Calendar.getInstance());

2. Dengan demikian perlu dilakukan penyesuaian pada baris perintah import

dari paket java.util.

import java.util.Calendar;

3. Simpan file CobaData.java. Selanjutnya lakukan kompilasi dan jalankan

class TanggalHariIni.

Gambar 2. 3 Calendar di console

57

Modifikasilah project Pertemuan10 untuk menambahkan kemampuan untuk mengedit dan menghapus data pada RecordStore. Lengkapi MIDlet dengan kemampuan untuk mengosongkan TextField dan navigasi pada record. Untuk fitur navigasi, diperkenankan menggunakan struktur data Vector guna menampung data dari RecordStore, diperkenankan menggunakan perulangan dengan for untuk loop dari record pertama sampai dengan record terakhir.

Gambar 10. 5 Record pada

StringItem

Gambar 10. 6 Memilih record

Pertama

Gambar 10. 7 Menampilkan record

pertama

Gambar 10. 8 Memilih menu

Berikutnya

Page 21: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

56

public void setRecord(int recordId, byte[] newData, int offset, int numBytes) throws RecordStoreNotOpenException, InvalidRecordIDException,

RecordStoreException, RecordStoreFullException

11. Record dapat dihapus dengan memanggil method deleteRecord.

public void deleteRecord(int recordId) throws RecordStoreNotOpenException, InvalidRecordIDException, RecordStoreException

12. MIDlet di atas telah memiliki kemampuan untuk membaca dan menulis

data pada RecordStore. Simpan kemudian lakukan Build dan Run untuk menguji MIDlet.

Gambar 10. 1 Membuka RecordStore

Gambar 10. 2 Membaca record

Gambar 10. 3 Menambah record

Gambar 10. 4 Menampilkan record

Tugas

21

Menggunakan class Calendar pada MIDlet: 1. Buka p roject Pertemuan2 pada J2ME WTK. 2. Buka file CobaDate.java yang terletak di dalam direktori src,

menggunakan editor teks. 3. Edit kode dalam file CobaDate.java. Gant ikan konstruktor class Date

dengan pemanggilan method static getInstance dari class Calendar. 4. Simpan file CobaDate.java yang telah diedit kemudian lakukan Build dan

Run untuk menguji MIDlet.

Gambar 2. 4 Calendar di MIDlet

Tugas

1. Perhatikan tampilan pada saat aplikasi J2SE yang menggunakan class Calendar dijalankan. Modifikasilah kode TanggalHariIni.java agar class TanggalHariIni hanya menampilkan data tanggal dalam format <tanggal>-<nomor_bulan>-<tahun>

Gambar 2. 5 Modifikasi aplikasi dengan Calendar

2. Perhatikan tampilan MIDlet CobaDate saat dijalankan. Modifikasilah kode

CobaDate.java agar tampilan tanggal mengikuti format seperti pada soal nomor dua.

Gambar 2. 6 Modifikasi pertama pada MIDlet

3. Dari hasil jawaban soal nomor dua, lakukan pengembangan dengan

menuliskan data bulan dengan menggunakan nama bulan.

Gambar 2. 7 Modifikasi kedua pada MIDlet

Page 22: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

22

[halaman ini sengaja dikosongkan]

55

berturut-turut adalah nilai indeks awal dari array t ipe byte dan berikutnya adalah jumlah byte yang digunakan. Untuk menggunakan semua byte, gunakan field length dari array tipe byte sebagai parameter ketiga.

String nama = tfNama.getString(); String telp = tfTelp.getString(); ByteArrayOutputStream baosData = new ByteArrayOutputStream(); DataOutputStream dosData = new DataOutputStream(baosData); dosData.writeUTF(nama); dosData.writeUTF(telp); dosData.flush(); byte [] record = baosData.toByteArray(); recordStore.addRecord(record, 0, record.length);

8. Record dapat ditampilkan dengan memanggil method getRecord.

public int getRecord(int recordId, byte[] buffer, int offset)

throws RecordStoreNotOpenException, InvalidRecordIDException, RecordStoreException

9. Membaca dan menampilkan data dari RecordStore menggunakan alur

yang merupakan kebalikan dari proses menulis ke RecordStore. Method getRecord menghasilkan data yang disimpan dalam array satu dimensi bertipe array. Array ini harus sudah terhubung dengan instance dari ByteArrayInputStream yang harus dihubungkan juga dengan instance dari DataInputStream. Berikutnya data dibaca dengan method readUTF. Proses pembacaan dilakukan mulai record pertama dengan id 1 hingga record terakhir dengan id yang didapatkan dengan method getNumRecords.

byte [] record = new byte[100]; ByteArrayInputStream baisData = new ByteArrayInputStream(record); DataInputStream disData = new DataInputStream(baisData); siHasil.setText("\n"); for (int a=0; a<recordStore.getNumRecords(); a++) { recordStore.getRecord(a+1, record, 0); siHasil.setText(siHasil.getText() + disData.readUTF() + "\n"); siHasil.setText(siHasil.getText() + disData.readUTF() + "\n"); baisData.reset(); }

10. Record dapat diedit dengan memanggil method setRecord.

Page 23: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

54

Praktikum Pada pertemuan ke-10, kita akan menggunakan RecordStore untuk melakukan manajemen data dengan studi kasus Buku Telepon. MIDlet yang dibangun memiliki kemampuan untuk menyimpan data berupa nama beserta nomor telepon, menampilkan data, mengedit data dan menghapus data.

1. Jalankan J2ME WTK dan buat project baru dengan nama Pertemuan10 dengan CobaRecordStore sebagai nama class MIDlet.

2. Tambahkan lima Command pada Form mainForm, yaitu exitCommand, selectCommand, insertCommand, updateCommand, deleteCommand.

3. Deklarasikan instance dari class RecordStore dengan nama recordStore. 4. Lengkapi Form dengan StringItem siHasil, dan dua buah TextField

tfNama dan tfTelp. 5. Langkah pertama dalam berinteraksi dengan RMS adalah membuat atau

membuka RecordStore dengan memanggil openRecordStore. Hasil dari pemanggilan method ini adalah sebuah instance dari RecordStore.

public static RecordStore openRecordStore( String recordStoreName, boolean createIfNecessary) throws RecordStoreException, RecordStoreFullException,

RecordStoreNotFoundException

6. Record baru d itambahkan ke dalam RecordStore dengan memanggil method addRecord dari RecordStore.

public int addRecord(byte[] data, int offset, int numBytes) throws RecordStoreNotOpenException, RecordStoreException,

RecordStoreFullException

7. Data disimpan dan diambil dari RecordStore dengan menggunakan array

satu dimensi bertipe byte. Data bertipe String dituliskan ke dalam instance dari class DataOutputStream yang telah dihubungkan dengan instance dari class ByteArrayOutputStream. Data bertipe String didapatkan dari TextField dengan memanggil method getString. Method yang digunakan untuk menuliskan data tipe String ke DataOutputStream di antaranya adalah writeUTF. Semua data yang telah ditampung dalam DataOutputStream ditarik masuk ke dalam ByteArrayOutputStream dengan memanggil method flush. Selanjutnya data dalam ByteArrayOutputStream d iubah ke dalam array t ipe byte dengan menjalankan method toByteArray. Array tipe byte ditambahkan ke dalam RecordStore dengan method addRecord dengan mengirimkan variabel array tipe byte sebagai parameter pertama, parameter kedua dan terakhir

23

Modul III

Menggunakan Command dan CommandListener

Dasar Teori Untuk menambahkan kemampuan berinteraksi dengan user, J2ME menyediakan paket javax.microedition.lcdui. Class Command yang berada dalam paket ini membungkus informasi tentang nama atau label dari aksi. Sedangkan informasi mengenai aksi yang sebenarnya diletakkan dalam implementasi dari interface CommandListener. Aplikasi dapat menangkap event dari komponen antar muka tingkat mahir/tinggi dengan langsung mengimplementasikan interface CommandListener. Atau dapat juga dengan menambahkan inner class sebagai implementasi CommandListener. Praktikum Menggunakan class Command dan mengimplementasi interface CommandListener:

1. Jalankan J2ME WTK dan buat sebuah project baru dengan nama Pertemuan3. Beri nama class MIDlet dengan CobaCommand.

public final class CobaCommand extends MIDlet

implements

CommandListener {

private final Command exitCommand;

private final Form mainForm;

Tujuan : v Mahasiswa mampu menambahkan kemampuan interaksi user dengan

MIDlet

Tugas Pendahuluan 1. Tuliskan pengertian event! 2. Tuliskan pengertian listener!

3. Tuliskan cara mengimplementasikan interface!

Page 24: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

24

public CobaCommand() {

mainForm = new Form("Pertemuan3");

exitCommand = new Command("Exit",

Command.EXIT, 1);

mainForm.addCommand(exitCommand);

mainForm.setCommandListener(this);

Display.getDisplay(this).setCurrent(mainForm);

}

protected void startApp() {}

protected void pauseApp() {}

protected void destroyApp(boolean unconditional)

{}

public void commandAction(Command c, Displayable

d) {

if (c == exitCommand) {

destroyApp(false);

notifyDestroyed();

}

}

}

2. Lakukan Build dan Run untuk menguji MIDlet.

53

Modul X

Mengolah Data Persisten

Dasar Teori MIDP menyediakan mekanis me untuk menyimpan data secara persisten. Persisten berarti kemampuan untuk menggenggam struktur data dengan cara menyimpan data ke dalam fasilitas penyimpanan yang bersifat non-volatile seperti file sistem, atau relational database. Sifat non-volatile art inya data yang telah tersimpan tidak akan hilang walaupun listrik t idak tersedia. Fasilitas penyimpanan yang digunakan dalam J2ME d ikenal dengan Record Management System (RMS). RecordStore terdiri dari sekumpulan record yang dapat diakses oleh MIDlet Suite. Penamaan bersifat unik, case-sensitive, terdiri dari maksimal 32 karakter. Set iap record merupakan array dengan tipe byte, memiliki primary key berupa recordId dengan tipe integer. Recod pertama dalam RecordStore memiliki recordId sama dengan satu ( 1 ), berikutnya recordId akan bertambah satu ( n + 1 ). Mekanisme yang digunakan untuk mengelola RecordStore melibatkan proses membuka RecordStore dengan openRecordStore; dapat melakukan manipulasi record seperti menampilkan data dalam array tipe byte dengan getRecord, menambah dengan addRecord, mengedit dengan setRecord, menghapus dengan deleteRecord; menutup RecordStore dengan closeRecordStore.

Tujuan : v Mahasiswa mampu mengolah data persisten

Tugas Pendahuluan 1. Tuliskan properti dan method dari class ByteArrayInputStream

dan ByteArrayOutputStream! 2. Tuliskan properti dan method dari class DataInputStream dan

DataOutputStream! 3. Jelaskan cara konversi dari ByteArrayOutputStream ke array of

byte!

Page 25: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

52

[halaman ini sengaja dikosongkan]

25

Gambar 3. 1 Command pada MIDlet

Memanfaatkan inner class sebagai listener:

1. Buka file CobaCommand.java dan beri tanda komentar pada method commandAction.

2. Edit file CobaCommand.java untuk menambahkan inner class yang akan difungsikan sebagai listener. Beri nama inner class dengan CobaInnerCL.

class CobaInnerCL implements CommandListener {

public void commandAction(Command c,

Displayable d) {

if (c == exitCommand) {

destroyApp(false);

notifyDestroyed();

}

}

}

Page 26: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

26

3. Tambahkan deklarasi variabel bert ipe CobaInnerCL dan beri nama cobaInnerCL.

4. Ganti variabel this dengan variabel cobaInnerCL. 5. Simpan file CobaCommand.java kemudian lakukan Build dan Run untuk

menguji MIDlet.

Tugas 1. Buka file CobaCommand.java dan edit dengan memberi tanda komentar

pada inner class CobaInnerCL. Tanda komentar juga diletakkan di awal baris deklarasi dan definisi variabel cobaInnerCL.

2. Buat sebuah class baru dengan nama CobaListener dan tempatkan dalam direktori yang sama dengan direktori di mana class CobaCommand berada.

3. Modifikasilah class CobaListener untuk mengimplementasikan interface CommandListener sehingga dapat menggantikan fungsi dari inner class CobaInnerCL.

51

Gambar 9. 6 ChoiceGroup dan

Ticker pada form pertama

Gambar 9. 7 Ticker dengan pesan

hasil pilihan dari form pertama

Gambar 9. 8 Ticker dengan pesan

hasil pilihan yang lain dari form pertama

Page 27: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

50

Menambahkan satu Ticker untuk beberapa Screen: 1. Tambahkan sebuah class FormKedua yang merupakan subclass Form dan

mengimplementasikan CommandListener. CobaTicker berisi screen utama, screen berikutnya ditambahkan dengan memuat instance dari class FormKedua. Sehingga FormKedua harus memiliki kemampuan untuk berkomunikasi dengan MIDlet CobaTicker.

2. Setiap Form harus dapat menampilkan informasi tentang Form itu sendiri (Misal: “Anda sedang berada pada form ke...“).

3. Setiap instance dari class FormKedua harus dapat berkomunikasi dengan objek Ticker dari class CobaTicker. Sehingga dengan memanfaatkan referensi dari objek Ticker yang sama, setiap Form dapat menampilkan pesan berjalan yang sama.

4. Setiap instance dari class FormKedua harus memiliki tiga Command yaitu exitCommand untuk keluar dari program, nextCommand untuk menuju ke Form berikutnya, dan previousCommand untuk kembali menampilkan Form sebelumnya.

Gambar 9. 2 Ticker di form pertama

Gambar 9. 3 Ticker di form kedua

Gambar 9. 4 Menu Next

Gambar 9. 5 Menu Previous

Tugas Modifikasilah class CobaTicker sehingga pada Form pertama akan tampil dua opsi yaitu “S1 TI” dan “D3 MI”. Hasil pilihan pada Form pertama akan mengupdate tulisan berjalan yang ditampilkan pada semua Form.

27

Modul IV

Komputasi dengan Bilangan Acak

Dasar Teori Instance dari class Random digunakan untuk menghasilkan bilangan acak palsu atau pseudorandom. Jika dua instance class Random dibuat dengan menggunakan angka yang sama sebagai benih (seed) dan dengan mengerjakan urutan pekerjaan yang sama maka akan dihasilkan deret bilangan acak yang identik. Praktikum Menggunakan class Random pada aplikasi J2SE:

1. Buat class RandomGenerator. 2. Untuk dapat menggunakan class Random yang berada di dalam paket

java.util, lakukan import pada paket tersebut. 3. Dalam main method buat instance dari class Random dengan nama

bilanganAcak dan masukkan nilai 123 dalam konstruktor Random. 4. Lakukan perulangan untuk mencetak data ke layar sebanyak sepuluh kali

(10 x). Set iap perulangan dikerjakan dengan memanggil method nextInt dari instance bilanganAcak.

Tujuan : v Mahasiswa mampu memanfaatkan b ilangan acak untuk melakukan

komputasi

Tugas Pendahuluan 1. Apa pengertian dari instance? 2. Tuliskan cara pembuatan instance!

3. Tuliskan cara penulisan konstanta di Java!

Page 28: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

28

Gambar 4. 1 Menguji Random di console

Menggunakan class Random pada MIDlet:

1. Jalankan J2ME WTK dan buat project baru dengan nama Pertemuan4 dengan nama class MIDlet CobaRandom.

2. Untuk kode program dapat memodifikasi file CobaCommand pada Pertemuan3, sehingga didapatkan konstruktor seperti di bawah in i.

public CobaRandom() {

mainForm = new Form("Pertemuan4");

exitCommand = new Command("Exit", Command.EXIT,

1);

mainForm.addCommand(exitCommand);

mainForm.setCommandListener(this);

Display.getDisplay(this).setCurrent(mainForm);

}

3. Kode yang berfungsi untuk menghasilkan bilangan acak dapat disalin dari

file RandomGenerator. Letakkan kode in i ke dalam suatu method dengan nama buatBilanganAcak. Method buatBilanganAcak berfungsi menghasilkan nilai bert ipe String yang memiliki tampilan yang sama dengan hasil running dari class RandomGenerator.

4. Lakukan percobaan dengan membandingkan penggunaan variabel penampung bilangan acak. Bandingkan unjuk kerja variabel penampung bilangan acak jika menggunakan tipe String dan jika menggunakan tipe StringBuffer. Perbesar jumlah peru langan sehingga mencapai seribu kali (1000 x) dan bandingkan kembali unjuk kerja di antara dua tipe data tersebut.

49

Modul IX

Menyisipkan Tulisan Berjalan

Dasar Teori Ticker adalah sebuah class yang dapat menambahkan tulisan yang berjalan secara kontinu dari kiri ke kanan Screen, d i mana pada saat yang sama Display menampilkan Displayabel tertentu. Ticker ditambahkan ke layar dengan memanggil method setTicker. Ticker dengan pesan yang sama dapat ditampilkan pada beberapa Screen sekaligus. Ticker juga dapat didesain untuk tampil dengan pesan yang berbeda bila Screen yang berbeda tampil. Praktikum Pada pertemuan ke-9 in i, kita akan belajar menambahkan sebuah Ticker ke suatu Screen dan menampilkan Ticker yang sama untuk Screen yang berbeda. Menambahkan sebuah Ticker untuk sebuah Screen:

1. Jalankan J2ME WTK, dan buat project dengan nama Pertemuan9 dengan CobaTicker sebagai nama class MIDlet.

2. Pada MIDlet tambahkan sebuah Screen yang akan ditampilkan o leh Display. Anda boleh menambahkan sebuah Form sebagai Screen utama.

3. Tambahkan sebuah variabel dengan tipe Ticker. Sesuaikan pckage yang perlu diimport untuk dapat mengakses class Ticker.

4. Anda boleh menambahkan sebuah variabel String untuk menjadi parameter bagi constructor Ticker.

5. Objek Ticker dapat ditambahkan dalam method startApp dengan memanggil method setTicker dari Screen yang aktif saat itu.

Gambar 9. 1 Ticker pada MIDlet

Tujuan : v Mahasiswa mampu menyisipkan pesan berjalan pada MIDlet

Tugas Pendahuluan 1. Tuliskan cara menambahkan ChoiceGroup pada MIDlet!

2. Tuliskan komponen apa saja yang bisa memiliki Ticker!

Page 29: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

48

[halaman ini sengaja dikosongkan]

29

Membangun MIDlet untuk Komputasi yang memanfaatkan bilangan acak: Pada bagian ini, kita akan memodifikasi class MIDlet CobaRandom untuk membuat aplikasi “Pengacak Nomor Lotere”.

1. Buka file CobaRandom.java dari pro ject Pertemuan4. Modifikasilah judul mainForm menjadi “Pertemuan 4: Pengacak Nomor Lotere”.

2. Tambahkan sebuah command dengan nama acakCommand yang memiliki label “Acak”. Jika acakCommand dipilih maka akan memanggil method acakNomorLotere. Method ini berfungsi menghasilkan deret bilangan acak dengan jumlah suku deret yang ditetapkan dalam konstanta JML_BIL_ACAK sejumlah lima (5). Bilangan acak yang dihasilkan ada di dalam batasan 0 sampai dengan nilai maksimum yang ditetapkan dalam konstanta NILAI_MAX yaitu enam puluh tiga (63).

3. Deret bilangan yang dihasilkan oleh method acakNomorLotere harus muncul di dalam mainForm. Dengan memilih command “Acak”, tampilan mainForm akan berisi deret bilangan baru tanpa menampilkan deret bilangan sebelumnya.

4. Algoritma untuk membuat deret bilangan acak dalam aplikasi “Pengacak Nomor Lotere” kita adalah sebagai berikut:

· Buat array untuk menampung data yang mewakili kondisi apakah dalam suatu sesi pengacakan suatu bilangan telah muncul atau belum pernah muncul. Karena bilangan terbesar yang boleh muncul adalah 63 maka jumlah elemen array ini ditentukan dalam konstanta NILAI_MAX.

· Inisialisasi setiap elemen array agar bernilai false. Artinya, dalam kondisi awal belum ada bilangan yang muncul dalam pengacakan.

· Lakukan pengacakan untuk menghasilkan 5 suku dalam deret bilangan acak sesuai dengan yang ditetapkan dalam NILAI_MAX.

· Dalam setiap loop pengacakan, untuk setiap bilangan acak yang dihasilkan harus berada antara 0 sampai dengan 63.

· Setelah satu suku deret bilangan acak didapatkan berart i bilangan ini telah muncul dalam deret sehingga harus ditandai sebagai true.

· Tampung setiap suku dari deret bilangan acak ke dalam variabel bertipe String agar dapat dicetak ke mainForm.

Page 30: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

30

Gambar 4. 2 Menguji Random di MIDlet

5. Simpan file CobaRandom.java. Lakukan Build dan Run untuk menguji MIDlet.

Tugas 1. Lakukan modifikasi pada class MIDlet CobaRandom agar dapat

menampilkan informasi sesi pengacakan.

47

Gambar 8. 2 Beberapa tipe Alert

Gambar 8. 3 Alarm pada Alert

Page 31: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

46

Alert(String title, String alertText,

Image alertImage, AlertType alertType)

3. Setelah Alert sampai pada posisi timeout, akan muncul sebuah instance dari class Form. Di dalam Form ini terdapat sebuah Command yang digunakan untuk keluar dari program.

4. Simpan file CobaAlertDanAlertType. Build dan Run untuk menguji MIDlet.

Gambar 8. 1 S plash screen dengan Alert

5. Lakukan percobaan dengan menampilkan berapa milisecond timout yang

diberikan oleh constructor tersebut. Tampilkan besarnya timeout dalam splash screen Alert. Perhatikan, apakah MIDlet menghasilkan notifikasi suara?

Tugas Modifikasilah pro ject Pertemuan8 sehingga pada saat MIDlet dijalankan akan menampilkan daftar Alert berdasarkan tipe AlertType yaitu: ALARM, CONFIRMATION, ERROR, INFO, dan WARNING. Daftar Alert dibuat dengan menggunakan List tipe IMPLICIT yang berfungsi sebagai menu. Untuk menangkap menu item yang dipilih pada commandAction, gunakan field SELECT_COMMAND. Setiap tipe AlertType ditampilkan dalam dua jenis timeout yaitu: FOREVER dan 5000 millisecond.

31

Modul V

Komponen Antar Muka Screen

Dasar Teori Class Display bertindak sebagai manager yang mengatur objek apa yang akan ditampilkan di layar. Hanya ada satu instance dari class Display untuk setiap MIDlet. Tampilan antar muka yang digunakan oleh MIDlet untuk berinteraksi dengan user termasuk kategori objek Displayable. Hanya ada satu objek Displayable yang ditampilkan ke layar dalam setiap waktu tertentu. Screen dan Canvas adalah subclass dari abstract class Displayable. Screen dikenal sebagai superclass dari komponen antar muka tingkat tinggi. Canvas dikenal sebagai komponen antar muka tingkat rendah. Screen memiliki beberapa subclass, di antaranya adalah Alert, Form, List dan TextBox. TextBox adalah Screen yang memungkinkan user memasukkan dan mengedit teks. Form adalah Screen yang dapat berisi beberapa item: image, text field yang hanya dapat dibaca, text field yang dapat diedit, gauge, choice group dan custom item. List adalah Screen yang berisi beberapa opsi. List adalah subclass dari Screen yang mengimplementasikan interface Choice. ChoiceGroup adalah implementasi Choice yang merupakan subclass dari abstract class Item. Item adalah superclass dari semua komponen yang dapat ditambahkan ke dalam Form. Beberapa subclass dari Item antara lain adalah ChoiceGroup, CustomItem, DateField, Gauge, ImageItem, Spacer, StringItem, TextField.

Tujuan : v Mahasiswa mampu memanfaatkan MIDP API untuk pembuatan antar

muka pengguna

Tugas Pendahuluan 1. Tuliskan pengertian superclass dan subclass! 2. Tuliskan pengertian override berikut cara mengoverride! 3. Tuliskan fungsi dari method setCurrent!

Page 32: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

32

Praktikum Pada bagian ini, kita akan membangun MIDlet yang dapat memanggil beberapa class yang masing-masing digunakan untuk mencoba class TextBox, Form, dan List atau ChoiceGroup.

1. Jalankan J2ME WTK dan buat project dengan nama Pertemuan5 dengan class MIDlet dengan nama CobaScreenDanItem.

2. Class CobaScreenDanItem adalah turunan MIDlet dan implementasi CommandListener.

3. Pada bagian deklarasi variabel, tambahkan sebuah Form bernama mainForm; tambahkan empat buah Command yaitu exitCommand, cobaTextBoxCommand, cobaFormCommand, cobaListCommand; tambahkan deklarasi instance class CobaTextBox dengan nama cobaTextBox, instance class CobaForm dengan nama cobaForm, dan instance class CobaList dengan nama cobaList.

4. Pada konstruktor class CobaScreenDanItem, definisikan semua variabel yang telah dideklarasikan pada langkah ketiga. Tambahkan semua objek Command pada mainForm. Atur agar mainForm menjadi objek yang ditampilkan pertama kali.

5. Pada method commandAction, jika cobaTextBoxCommand dip ilih maka tampilkan cobaTextBox pada Display; jika cobaFormCommand dipilih maka tampilkan cobaForm pada Display; jika cobaListCommand dipilih maka tampilkan cobaList.

Menggunakan class TextBox:

1. Buat class CobaTextBox yang merupakan turunan class TextBox dan implementasikan interface CommandListener.

2. Pada bagian deklarasi variabel, tambahkan variabel kembaliCommand bertipe Command.

3. Pada konstruktor class CobaTextBox, panggil superclass dengan mengirimkan empat parameter yaitu judul bertipe String (contoh: “Mencoba TextBox”), teks bertipe String (contoh: “TextBox adalah subclass Screen”), jumlah karakter maksimal bertipe int (contoh: 33), dan constraint bertipe int (contoh: TextField.ANY); tambahkan Command kembaliCommand.

4. Overridlah method commandAction dengan menuliskan fungsi untuk kembali ke mainForm jika kembaliCommand dipilih.

Menggunakan class Form:

1. Buat class CobaForm yang merupakan turunan class Form dan implementasikan interface CommandListener.

2. Pada bagian deklarasi variabel, tambahkan variabel kembaliCommand bertipe Command.

45

Modul VIII

Menambahkan Notifikasi

Dasar Teori Alert adalah subclass Screen yang digunakan untuk menampilkan data ke user dan menunggu sampai beberapa saat untuk kemudian menampilkan objek Displayable yang berikutnya. Alert memiliki fungsi untuk mengirim notifikasi atau pesan berisi peringatan tentang error atau kondisi exception. Untuk melengkapi notifikasi yang ditampilkan secara visual maka class AlertType dapat digunakan untuk menyediakan notifikasi secara audio. Praktikum Pada pertemuan ke-8, kita akan menggunakan notifikasi dalam bentuk audio visual.

1. Jalankan J2ME WTK dan buat project baru dengan nama Pertemuan8 dengan CobaAlertDanAlertType sebagai nama class MIDletnya.

2. Modifikasilah file CobaAlertDanAlertType.java agar saat MIDlet dijalankan, yang pertama kali muncul adalah sebuah instance dari Alert yang dibuat dengan constructor empat parameter. Sehingga Alert akan menampilkan judul, teks, image dalam format .png dan AlertType. Lakukan percobaan dengan mengganti jenis AlertType. Perhatikan notifikasi berupa suara yang dikeluarkan dari hasil pemilihan masing-masing AlertType.

Tujuan : v Mahasiswa mampu melengkapi MIDlet dengan notifikasi

Tugas Pendahuluan 1. Jelaskan kegunaan Exception! 2. Tuliskan cara menangani suatu Exception! 3. Jelaskan perbedaan antara throws dan try-catch!

Page 33: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

44

[halaman ini sengaja dikosongkan]

33

3. Pada konstruktor class CobaForm, panggil superclass dengan mengirimkan sebuah parameter yaitu judul bertipe St ring (contoh: “Mencoba Form”); tambahkan Command kembaliCommand.

4. Overridlah method commandAction dengan menuliskan fungsi untuk kembali ke mainForm jika kembaliCommand dipilih.

Menggunakan class List:

1. Buat class CobaList yang merupakan turunan class List dan implementasikan interface CommandListener.

2. Pada bagian deklarasi variabel, tambahkan variabel kembaliCommand bertipe Command.

3. Pada konstruktor class CobaList, panggil superclass dengan mengirimkan empat parameter yaitu judul bertipe St ring (contoh: “Mencoba Form”), tipe List (contoh: List.EXCLUSIVE), pilihan yang ditampilkan dalam bentuk array tipe String (contoh: new String [] {“opsi 1”, “opsi 2”, “opsi 3”}), image yang menyertai opsi (contoh: null, jika image tidak ditambahkan); tambahkan Command kembaliCommand.

4. Overridlah method commandAction dengan menuliskan fungsi untuk kembali ke mainForm jika kembaliCommand dipilih.

5. Simpan semua file di atas, kemudian Build dan Run untuk menguji MIDlet.

Gambar 5. 1 Menu di MIDlet

Gambar 5. 2 TextBox di MIDlet

6. Jalankan MIDlet dengan mengakses Menu. Terdapat tiga opsi dalam Menu. Ujilah masing-masing menu!

Page 34: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

34

Gambar 5. 3 Form di MIDlet

Gambar 5. 4 List di MIDlet

Tugas

1. Buatlah sebuah project J2ME untuk melakukan konversi temperatur (Celcius, Fahrenheit, Reamur, Kelvin ). Project terdiri dari sebuah class MIDlet, sebuah class turunan List yang berisi pilihan konversi, sebuah class turunan TextBox yang meminta inputan untuk temperatur yang akan dikonversi, dan sebuah class turunan Form yang menampilkan informasi temperatur asal dan hasil konversi.

2. Buatlah sebuah project J2ME untuk konversi bilangan (desimal, b iner, oktal, heksa) dengan konstruksi class yang sama dengan soal nomor satu.

43

3. Modifikasilah kode CobaCanvas agar saat dipanggil dari CobaMIDletSuite dapat menampilkan icon Maze.png.

4. Simpan semua file kemudian BUILD dan RUN untuk menguji MIDlet.

Gambar 7. 6 Project dengan dua

MIDlet

Gambar 7. 7 Menampilkan grafik

Tugas Modifikasilah pro ject Pertemuan7 sehingga CobaCanvas dapat menampilkan image sesuai pilihan pada ChoiceGroup.

Gambar 7. 8 Image dalam MIDlet

Page 35: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

42

drawLine dan drawRoundRect. Pertama, layar dikosongkan dengan memanggil method fillRect dengan warna putih. Kedua, gambar garis dan kotak beru jung bundar dengan warna hitam. Warna putih didapatkan dengan mengisi parameter dari method setColor dengan data 255 untuk red, 255 untuk green dan 255 untuk blue. Sedangkan untuk warna hitam diperoleh dengan membuat semua nilai menjadi nol ( 0 ). Method drawLine digunakan untuk menggambar garis, method drawRoundRect untuk menggambar kotak berujung bundar. Semua pekerjaan yang dilakukan untuk melukis Canvas dilakukan dengan memanfaatkan class Graphics.

Gambar 7. 4 Mencoba Canvas

Memanfaatkan MIDlet suite:

1. Pada J2ME WTK ktoolbar, pilih menu MIDlets dan tambahkan MIDlet dengan memilih Add. Masukkan in formasi untuk pengenal/name dari MIDlet, icon, dan nama class MIDlet. Simpan informasi dengan memilih OK.

Gambar 7. 5 Menambah MIDlet

2. Pada constructor CobaMIDletSu ite, tambahkan instance dari CobaCanvas.

35

Modul VI

Komponen Antar Muka Item

Dasar Teori Class DateField adalah subclass Item berupa komponen yang dapat diedit untuk menampilkan data tanggal dan waktu. DateField memiliki tiga mode input yaitu DATE, TIME dan DATE_TIME. Class Gauge adalah subclass Item yang memiliki tampilan berupa grafik batang yang mewakili nilai integer tertentu.Gauge dapat digunakan dalam mode interaktif maupun non-interaktif. Mode interakt if memungkinkan user untuk mengedit nilai Gauge dengan memanggil method setValue. Mode non-interaktif biasa digunakan untuk indikator akt ifitas dengan memanfaatkan Thread. Interface ItemStateListener digunakan untuk membaca perubahan yang terjadi pada Gauge mode interaktif. Hanya ada satu abstract method yang perlu dioverride yaitu itemStateChanged. Method setItemStateListener digunakan untuk menambahkan listener bagi subclass Item in i. Praktikum Pada bagian ini, kita akan membangun MIDlet yang dapat memanggil beberapa class yang masing-masing digunakan untuk mencoba class DateField, Gauge interaktif dan Gauge non-interaktif, serta mengimplementasikan interface ItemStateListener.

1. Jalankan J2ME WTK dan buat project baru dengan nama Pertemuan6 dengan CobaDateFieldDanGauge sebagai nama class MIDletnya.

2. MIDlet berisi mainForm yang akan tampil pada saat MIDlet dijalankan pertama kali. Class ini juga berisi instance dari class CobaDateField,

Tujuan : v Mahasiswa mampu menggunakan komponen antar muka tingkat

mahir untuk mendesain tampilan antar muka pengguna

Tugas Pendahuluan 1. Jelaskan perbedaan antara Display dan Displayable! 2. Tuliskan cara penggunaan method sleep dari Thread! 3. Tuliskan cara membuat Thread!

Page 36: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

36

CobaGaugeInteraktif dan CobaGaugeNonInteraktif. Set iap instance diakses dengan menggunakan Command cobaDateFieldCmd, cobaGaugeInteraktifCmd, cobaGaugeNonInterakt if sedangkan Command exitCommand digunakan untuk keluar dari ap likasi.

3. Lengkapi mainForm dengan itemData, instance dari StringItem, yang akan digunakan untuk menampilkan data dari class lain (CobaDateField, CobaGaugeInteraktif dan CobaGaugeNonInterakt if).

Menggunakan class DateField:

1. Buat class CobaDateField yang merupakan subclass dari Form. 2. Tambahkan sebuah instance dari class DateField dengan tipe DATE. 3. Tambahkan sebuah Command kembaliCmd untuk kembali ke mainForm.

Menggunakan class Gauge mode interaktif:

1. Buat class CobaGaugeInteraktif yang merupakan subclass dari Form. 2. Tambahkan sebuah instance dari class Gauge dengan tipe interakt if

dengan nilai batas bawah sama dengan 0 dan batas atas 10. 3. Tambahkan sebuah Command kembaliCmd untuk kembali ke mainForm.

Menggunakan class Gauge mode non-interaktif:

1. Buat class CobaGaugeNonInteraktif yang merupakan subclass dari Form. 2. Tambahkan sebuah instance dari class Gauge dengan tipe non-interaktif

dengan batas bawah 0 dan batas atas 10. 3. Tambahkan sebuah Command kembaliCmd untuk kembali ke mainForm. 4. Untuk dapat menampilkan efek progress, class ini harus

mengimplementasikan interface Runnable. Dalam method run, beri jeda satu detik untuk setiap pertambahan nilai pada grafik batang. Gunakan method sleep dari Thread untuk mengatur jeda. Gunakan method setValue untuk mengatur nilai Gauge. Gunakan variabel jen is static untuk menyimpan n ilai yang akan disetkan pada Gauge (ingat nilai ini terus bertambah dari nilai batas bawah sehingga mencapai nilai batas atas).

5. Simpan semua file kemudian BUILD dan RUN untuk menguji MIDlet.

41

Melengkapi ChoiceGroup dengan image: 1. Pada class CobaGrafik, tambahkan sebuah Form mainForm, sebuah

Command exitCommand, dan sebuah ChoiceGroup choice . 2. Pada constructor CobaGrafik, defin isikan Form, Command dan

ChoiceGroup. 3. Definisi ChoiceGroup menggunakan constructor dengan empat parameter.

ChoiceGroup(String label, int choiceType, String[] stringElements,

Image[] imageElements)

4. Untuk menambahkan Image, gunakan method createImage. Perhatikan,

pemanggilan method in i harus diletakkan dalam penanganan kesalahan dengan merujuk pada NullPo interException dan IOException.

public static Image createImage(String name) throws IOException

5. Tambahkan instance dari Command dan ChoiceGroup pada Form. 6. Simpan file CobaGrafik. Buil dan Run untuk menguji MIDlet. Jika MIDlet

dilaunch maka akan tampil tiga opsi Pilihan1, Pilihan2, dan Pilihan3 yang masing-masing dilengkapi dengan icon.

Gambar 7. 3 Mencoba ChoiceGroup

Menggunakan class Canvas:

1. Buat class CobaCanvas yang merupakan subclass dari Canvas. Letakkan file ini di d irektori src dari p roject Pertemuan7.

2. Tambahkan sebuah Command untuk mengarahkan Displayable ke tampilan sebelumnya.

3. Definisikan ulang method paint dalam CobaCanvas.

protected abstract void paint(Graphics g)

4. Di dalam definisi method paint, panggillah method setColor, fillRect,

Page 37: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

40

dengan CobaGrafik sebagai nama class MIDletnya. 2. Gunakan J2ME WTK – ktoolbar, pilih Settings, pilih menu MIDlets

sehingga terbuka panel berisi Key, Name, Icon dan Class. 3. Pilih MIDlet yang akan d iisi dengan icon kemudian pilih Edit sehingga

terbuka jendela Enter MIDlet Details. Pada jendela Enter MIDlet Details, masukkan nama file image tipe PNG yang akan menjad i icon dari midlet. Perhatikan, sebelumnya file icon harus sudah tersedia di dalam d irektori res dari project Pertemuan7. Jika file image diletakkan langsung di dalam direktori res, awali nama file dengan tanda slash ( / ).

Gambar 7. 1 Mengatur seting project

4. Setelah nama file icon dimasukkan, pilih OK. Lakukan Build dan Run

untuk menguji MIDlet. Emulator akan menampilkan sebuah MIDlet dengan judul yang dilengkapi icon Opt ional.png.

Gambar 7. 2 MIDlet dengan icon

37

Gambar 6. 1 Menu pada MIDlet

Gambar 6. 2 DateField di MIDlet

Gambar 6. 3 Memilih tanggal

Gambar 6. 4 Hasil pemilihan

DateField

Page 38: MODUL PRAKTIKUM KOMPUTASI BERGERAK · PDF filesekolah hingga SLTA di kota Surabaya. ... penulis di antaranya adalah Basis Data, ... Tugas Akhir Buatlah MIDlet untuk

38

Gambar 6. 5 Pemilihan DateField

di tampilkan di form utama

Gambar 6. 6 Gauge di MIDlet

Gambar 6. 7 Gauge interaktif

Gambar 6. 8 Nilai dari gauge di tampilkan di form utama

Tugas

Buatlah MIDlet untuk melakukan perkiraan kelahiran bayi. Inputan yang dibutuhkan adalah tanggal menstruasi terakhir. Output yang ditampilkan adalah tanggal kelahiran bayi. MIDlet boleh dilengkapi dengan halaman yang bertindak sebagai splash screen saat aplikasi pertama kali dibuka. MIDlet boleh dilengkapi dengan halaman progress yang muncul di antara halaman input dan halaman output.

39

Modul VII

Grafik dalam MIDlet

Dasar Teori Portable Network Graphics (PNG) adalah file format untuk image dengan kompresi dan fitur lain yang lebih baik bila dibandingkan dengan image GIF. Class Image digunakan untuk mengolah image yang berjenis immutable dan mutable. Image yang diload dari sumber daya midlet, file atau pun network disebut immutable image. Sedangkan image yang dirender dengan memanggil method getGraphic disebut mutable image. Image dapat ditambahkan ke dalam mid let dengan mengatur MIDlet-Icon yang akan mempengaruhi file MANIFEST.MF dan file jad. Image juga dapat ditambahkan ke dalam ChoiceGroup dengan menggunakan method createImage dari class Image. Canvas menyediakan kemampuan untuk membuat MIDlet yang membutuhkan penanganan low level event dan pengolahan grafik. Abstract method paint harus didefinisikan saat abstract class Canvas dijadikan sebagai superclass. Method paint memiliki parameter bertipe Graphics. Class Graphics berisi method-method yang digunakan untuk menggambar pada area Canvas, di antaranya adalah drawImage, drawLine, d rawRoundRect, drawString, fillRect, dan setColor.

Praktikum Pada pertemuan ke-7 in i, kita akan menambahkan icon ke dalam MIDlet, melengkapi ChoiceGroup dengan image, menggunakan Canvas dan memanfaatkan MIDlet suite. Menambahkan icon ke dalam MIDlet :

1. Jalankan J2ME WTK dan buat project baru dengan nama Pertemuan7

Tujuan : v Mahasiswa mampu menggunakan grafik pada MIDlet

Tugas Pendahuluan 1. Tuliskan fungsi dari method paint dari class Canvas! 2. Tuliskan cara penggunaan method paint! 3. Tuliskan cara penggunaan method drawRoundRect!