• Tidak ada hasil yang ditemukan

KOMPUTASI BERGERAK. D3 Manajemen Informatika Fakultas Teknik Universitas Trunojoyo

N/A
N/A
Protected

Academic year: 2021

Membagikan "KOMPUTASI BERGERAK. D3 Manajemen Informatika Fakultas Teknik Universitas Trunojoyo"

Copied!
38
0
0

Teks penuh

(1)

KOMPUTASI BERGERAK

MODUL PRAKTIKUM

D3 Manajemen Informatika

Fakultas Teknik

(2)

[hala man ini sengaja dikosongkan]

Biografi Penulis

Muhammad Fuad, S.Kom

Penulis lahir dan menyelesaikan sekolah hingga SLTA di kota Surabaya. Melanjutkan pendidikan di Te knik Informatika UNITOM O Surabaya dengan bidang minat Ko mputasi. Sekarang penulis bekerja sebagai dosen Manajemen Info rmatika Un iversitas Trunojoyo Madura.

Mata kuliah yang pernah diampuh oleh penulis di antaranya adalah Basis Data, Pe mrogra man Berorientasi Obyek, Ko mputasi Bergera k.

(3)

Daftar Pustaka

· Tre mblett P., “ Instant Wireless Java with J2M E”, Mc Gra w-Hill/Osborne, 2002

· Rischpater, Ray, “ Beginning Java M E Platform”, APRESS, 2008

Kata Pengantar

Bismillaahirrohmaanirrohiim,

Alhamdulillah, modul Ko mputasi Be rgerak dapat diselesaikan. Modul ini berisi dua belas bab. Modul Ko mputasi Bergera k me mbe rikan tuntunan praktis bagaimana me mbangun aplikasi java yang dapat dijalankan dala m perangkat bergerak atau yang biasa disebut sebagai MIDlet.

Se moga modul Ko mputasi Bergera k dapat menyedia kan tutorial yang bermanfaat bagi prakt ikan yang ingin menekuni pe mrogra man Java dala m lingkungan perangkat bergerak.

Bangkalan, 19 Januari 2010

(4)

[hala man ini sengaja dikosongkan]

Tugas Akhir

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

(5)

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 Konfir masi akses network

Gambar 12. 3 Menampilkan info dari server

Tug as

Buatlah MIDlet dengan ke ma mpuan mengakses web server untuk me la kukan request harga barang dengan me masukkan na ma barang. Untuk database dapat menggunakan DBMS MySQL. Untuk server programming dapat menggunakan PHP atau JSP atau Se rvlet. Database hanya terdiri dari satu tabel saja dan desain tabel diserahkan ke Anda.

Tujuan Umum

Mahasiswa ma mpu me maha mi teknologi Java Micro Ed ition ke mudian menge mbangkan aplikasi M IDlet untuk keperluan ko mputasi

(6)

[hala man ini sengaja dikosongkan]

!");

socket.close();

} catch (IOException a) {

System.out.println("exception saat menulis data ke ServerSocket: " + a);

a.printStackTrace(); }

4. Simpan file, laku kan ko mpilasi dan ja lankan file sehingga akan tampil seperti di bawah in i.

Gambar 12. 1 Meng aktifkan pr ogram ser ver

Pada bagian kedua, kita akan me mbangun MIDlet dengan ke ma mpuan berko munikasi le wat network.

1. Dengan menggunakan J2M E WTK, buat project baru dengan nama Perte muan12 dengan CobaStrea mConnection sebagai nama c lass MIDlet. 2. Siapkan dua variabe l bertipe St ring untuk menyimpan informasi tentang

host dan port dari server yang akan dihubungi. Informasi d idapatkan dari seting User Defined pada J2M E WTK.

String host = getAppProperty("HOST");

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

3. Siapkan obje k Strea mConnection untuk me mbu ka koneksi menuju server dengan parameter host dan port dalam dayTimeURL. Siapkan objek InputStream untuk mena mpung aliran data dari server hasil pemanggilan method openInputStream.

socket =

(StreamConnection)Connector.open(dayTimeURL,Connector.READ,t rue);

is = socket.openInputStream();

4. Data dari InputStream berupa susunan integer diubah menjadi kara kter dan disusun kembali dala m StringBuffer. Se lanjutnya hasil konversi String Buffer ke St ring dita mp ilkan pada Form mela lui ko mponen StringIte m.

(7)

Connector menghasilkan ob jek Connection yang di antara jenisnya adalah Strea mConnection yang me miliki ke ma mpuan untuk menangani aliran data masuk dengan InputStream dan aliran data keluar dengan OutputStream.

Praktikum

Pada pertemuan ke -11, kita a kan me mbangun MIDlet dengan ke ma mpuan untuk berkomunikasi mela lui jaringan ko mputer (network) dengan me manfaat kan paket java x.mic roedition.io.

Pada bagian pertama, perlu d ibangun class DayTimeSe rver yang bertindak sebagai server yang menyediakan informasi tentang date/time saat ini. ServerSocket adalah class yang digunakan untuk me layani permintaan me lalu i network. Method accept dari c lass ServerSocket bertugas menerima koneksi dan menghasilkan objek Soc ket sebagai titik a khir ko munikasi antar mesin.

1. Buat file DayTimeSe rver.

2. Siapkan obje k ServerSocket, Soc ket 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 le wat OutputStrea m.

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

Tujuan K husus

1. Mampu menggunakan Java 2 M icro Edit ion Wire less Tool Kit untuk me mbuat project ap likasi MIDlet

2. Mampu mena mbahkan konten dinamis pada MIDlet 3. Mampu mena mbahkan ke ma mpuan intera ksi user dengan MIDlet

4. Membangun aplikasi MIDlet untuk ko mputasi dengan me manfaat kan bilangan acak

5. Memanfaatkan M IDP API untuk pe mbuatan tampilan antar muka pengguna

6. Mampu menggunakan ko mponen antar muka tingkat mah ir untuk mendesain tampilan antar mu ka pengguna

7. Menggunakan grafik dengan komponen antar muka t ingkat rendah

8. Melengkapi MIDlet dengan notifikasi 9. Menyisipkan Pesan Berja lan pada MIDlet 10. Mengolah Data Persisten

11. Mampu Mengolah Data Pe rsisten

(8)

[hala man ini sengaja dikosongkan]

Modul XII

Memulai Pe mrograman Jaringan Sede rhana dengan MIDlet

Dasar Te ori

Connector adalah sebuah class yang bertindak sebagai pabrik untuk menghasilkan objek Connection. Proses pembuatan Connection me mbutuhkan beberapa informasi dengan format {scheme}:[{target}][{para ms}].

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). Para meter boleh dilengkapi dengan satu atau beberapa persamaan seperti type=a atau page=2.

Method open digunakan untuk me mbuka koneksi dengan spesifikasi seperti di bawah ini. In formasi schema, target dan parameter d ita mpung dalam parameter na me bertipe String; parameter mode mengatur hak akses seperti READ, WRITE atau READ_WRITE; para meter timeouts untuk me mberi tanda bahwa timeout e xception dibutuhkan dalam proses pemanggilan ini.

public static Connectionopen(String name, int mode,

boolean timeouts) throws IOException

Tujuan :

v Mahasiswa ma mpu mengakses aplikasi internet dengan MIDlet

Tug as Pendahuluan

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

(9)

[hala man ini sengaja dikosongkan]

Daftar Isi

Modul I : Me mu lai Pe mrogra man Ko mputasi Be rgerak ...15

Modul II : Me lengkapi MIDlet dengan Konten Dinamis ...19

Modul III : enggunakan Co mmand dan Co mmandListener...23

Modul IV : Ko mputasi dengan Bilangan Acak...27

Modul V : Ko mponen Antar Muka Screen ...31

Modul VI : Ko mponen Antar Muka Item ...35

Modul VII : Grafik dala m MIDlet ...39

Modul VIII : Mena mbahkan Notifikasi...45

Modul IX : Menyisipkan Tu lisan Be rja lan ...49

Modul X : Mengolah Data Pe rsisten ...53

Modul XI : Me manfaatkan RecordStore untuk Portable Log...61

Modul XII : Me mu lai Pe mrogra man Jaringan Sederhana dengan MIDlet ...69

Tugas Akhir …...73

Daftar Pustaka ...74

(10)

[hala man ini sengaja dikosongkan] 3. Jika record mengandung potongan string yang dicari ma ka method matches akan menghasilkan nila i true.

public boolean matche s(byte[] candidat e)

4. Imple mentasi method matches untuk mencari apakah suatu record mengandung karakter tertentu, menggunakan method indexOf dari c lass 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

pe ncari an Tug as

Se mpurnakan MIDlet dari project Perte muan11 sehingga me miliki ke ma mpuan navigasi record, manaje men record, pengurutan data, dan pencarian data. Data yang ditamp ilkan adalah record Bu kuTelepon dengan nama yang diawali dengan karakter-ka rakter yang dimasukkan me lalu i Te xt Fie ld dala m form pencarian.

(11)

2. Pengurutan record dalam Record Enume ration ditangani oleh class yang mengimp le mentasikan interface RecordCo mparator dan mengoverride abstract method compare.

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

3. Imple mentasi dari method in i me manfaatkan method compareTo dari c lass 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 nila i bertipe integer dengan tiga ke mungkinan, yaitu nol (EQUIVA LENT), kurang dari nol dan lebih dari nol. Untuk pengurutan data secara ascending, nilai integer kurang dari nol diset sama dengan field PRECEDES; nila i integer lebih besar dari nol diset sama dengan field FOLLOWS.

Menggunakan RecordFilter:

1. Pencarian record berdasarkan nila i yang terdapat pada kolo m tertentu dapat dilakukan dengan me manfaatkan instance dari class yang mengimp le mentasikan interface RecordFilte r.

filter = new Filterku(ygDicari); comparator = new Comparatorku();

recordEnumeration = recordStore.enumerateRecords(

filter, comparator, boolUpdate);

2. Method yang perlu dioverride saat mengimp le mentasikan interface RecordFilter ada lah matches dengan nilai ba lik boolean. Method ini berfungsi me mbandingkan antara suatu record dengan potongan string yang mungkin ada di dala m record tersebut.

Daftar Gambar

Ga mbar 1. 1 Mengakses KToolbar...16

Ga mbar 1. 2 Me mbuat project baru...16

Ga mbar 1. 3 Me milih target platform ...16

Ga mbar 1. 4 Laporan hasil pe mbuatan project...17

Ga mbar 1. 5 Ta mpilan MIDlet ...17

Ga mbar 2. 1 Info penanggalan di console...19

Ga mbar 2. 2 Info penanggalan di MIDlet ...20

Ga mbar 2. 3 Calendar d i console...20

Ga mbar 2. 4 Calendar d i MIDlet ...21

Ga mbar 2. 5 Modifikasi aplikasi dengan Ca lendar...21

Ga mbar 2. 6 Modifikasi perta ma pada MIDlet ...21

Ga mbar 2. 7 Modifikasi kedua pada MIDlet ...21

Ga mbar 3. 1 Co mmand pada MIDlet ...25

Ga mbar 4. 1 Menguji Random di console...28

Ga mbar 4. 2 Menguji Random di M IDlet ...30

Ga mbar 5. 1 Menu di MIDlet ...33

Ga mbar 5. 2 Te xt Bo x di M IDlet ...33

Ga mbar 5. 3 Form di MIDlet ...34

Ga mbar 5. 4 List di M IDlet ...34

Ga mbar 6. 1 Menu pada MIDlet ...37

Ga mbar 6. 2 DateFie ld di M IDlet ...37

Ga mbar 6. 3 Me milih tanggal...37

Ga mbar 6. 4 Hasil pe milihan DateFie ld ...37

Ga mbar 6. 5 Pe milihan DateFie ld dita mp ilkan di form uta ma ...38

Ga mbar 6. 6 Gauge di MIDlet ...38

Ga mbar 6. 7 Gauge intera ktif ...38

Ga mbar 6. 8 Nilai dari gauge ditamp ilkan di form uta ma ...38

Ga mbar 7. 1 Mengatur seting project...40

Ga mbar 7. 2 MIDlet dengan icon ...40

Ga mbar 7. 3 Mencoba Choice Gro up...41

Ga mbar 7. 4 Mencoba Canvas ...42

(12)

Ga mbar 7. 6 Project dengan dua MIDlet... 43

Ga mbar 7. 7 Menamp ilkan gra fik ... 43

Ga mbar 7. 8 Image da la m M IDlet ... 43

Ga mbar 8. 1 Splash screen dengan Alert ... 46

Ga mbar 8. 2 Beberapa tipe Alert ... 47

Ga mbar 8. 3 Alarm pada Alert ... 47

Ga mbar 9. 1 Tic ker pada MIDlet ... 49

Ga mbar 9. 2 Tic ker di form perta ma ... 50

Ga mbar 9. 3 Tic ker di form kedua ... 50

Ga mbar 9. 4 Menu Ne xt ... 50

Ga mbar 9. 5 Menu Previous... 50

Ga mbar 9. 6 Choice Group dan Ticker pada form perta ma ... 51

Ga mbar 9. 7 Tic ker dengan pesan hasil pilihan dari form perta ma ... 51

Ga mbar 9. 8 Tic ker dengan pesan... 51

Ga mbar 10. 1 Me mbuka RecordStore ... 56

Ga mbar 10. 2 Me mbaca record... 56

Ga mbar 10. 3 Mena mbah record ... 56

Ga mbar 10. 4 Mena mpilkan record ... 56

Ga mbar 10. 5 Record pada StringIte m... 57

Ga mbar 10. 6 Me milih record Pe rta ma ... 57

Ga mbar 10. 7 Mena mpilkan record perta ma ... 57

Ga mbar 10. 8 Me milih menu Be rikutnya ... 57

Ga mbar 10. 9 Mena mpilkan record tera khir ... 58

Ga mbar 10. 10 Me milih menu Sebelu mnya ... 58

Ga mbar 10. 11 Mena mpilkan record sebelumnya ... 58

Ga mbar 10. 12 Me milih menu Baru ... 58

Ga mbar 10. 13 Mena mpilkan record berikutnya ... 59

Ga mbar 10. 14 Me milih menu Terakh ir... 59

Ga mbar 10. 15 Mengosongkan kotak isian ... 59

Ga mbar 10. 16 Mengisi data isian baru ... 59

Ga mbar 10. 17 Record baru berhasil d ita mbahkan ... 60

Ga mbar 10. 18 Me milih menu Ed it... 60

Ga mbar 10. 19 Mengedit record ... 60

Ga mbar 10. 20 Record berhasil d iedit ... 60

Ga mbar 11. 1 List sebagai menu ... 61

Ga mbar 11. 2 Form pencarian... 62

Ga mbar 11. 3 Menu navigasi ... 62

Ga mbar 11. 4 Menu edit ... 64

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

Gambar 11. 6 Menu hapus

9. Agar nila i indeks atau recordId tidak berubah ma ka data ini dapat disimpan bersama dengan data nama dan telepon ke dala m ob jek BukuTe lepon.

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 RecordCo mparator:

1. MIDlet yang telah menggunakan RecordEnume ration tanpa dilengkapi dengan instance dari RecordCo mparator dala m proses pengolahan record dari RecordStore BukuTe lepon akan mena mpilkan data nama dala m urutan terbalik atau descending.

(13)

6. Hala man pencarian data BukuTelepon berisi menu manaje men data yang me liputi Edit Na ma , Edit Telp, dan Hapus.

Gambar 11. 4 Menu e di t

7. Proses edit dari opsi Edit Na ma dan Ed it Telp melibatkan hala man la in yaitu, Te xt Bo x untuk data nama dan Te xtBo x untuk data telp. Jika menu Ed it Na ma diakses maka a kan me mbu ka hala man Te xtBo x dengan judul Na ma dan dilengkapi dengan dua Command yaitu OK untuk mengeksekusi perubahan data nama dan Co mmand Ke mba li untuk mena mp ilkan hala man List berisi opsi Cari dan Tambah. Hala man Te xtBo x Na ma dan Telp a kan digunakan ke mbali saat opsi Ta mbah diakses.

Gambar 11. 5 Te xtB ox untuk menge dit

Ga mbar 11. 5 Te xt Bo x untuk mengedit ...64

Ga mbar 11. 6 Menu hapus...65

Ga mbar 11. 7 Menu Cari...67

Ga mbar 11. 8 Mena mpilkan hasil pencarian ...67

Ga mbar 12. 1 Mengaktifkan progra m server...71

Ga mbar 12. 2 Konfirmasi a kses network ...72

(14)

[hala man ini sengaja dikosongkan] diaktifkan. Pa ra meter ketiga mengatur ke mutakhiran data, jika diisi t rue ma ka RecordEnu merator a kan selalu mengupdate data sesuai dengan RecordStore. Pe mbacaan record dari Record Enume ration me libatkan beberapa method, di antaranya adalah method hasNext Ele ment untuk me meriksa kondisi keberadaan ele men dala m a rah next; method next RecordId untuk mendapatkan recordId dari arah next. Struktur penyimpanan data seperti Vector dapat dimanfaatkan untuk pengolahan data selanjutnya. Data recordId, nama dan telp dienkapsulasi ke dala m objek Bu kuTelepon dan selanjutnya objek ini d isimpan ke dala m Vector dengan method addEle ment. Pada proses membaca data dari Vector, ele men Vector d idapatkan dengan me manggil method ele mentAt. Data diperoleh dari e le men 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) ); }

(15)

3. Eksekusi pada opsi Cari akan mena mpilkan hala man baru berupa Form berisi StringIte m yang akan mena mpilkan nama dan nomor te lepon, dan berisi Te xt Field untuk pencarian record tertentu.

Gambar 11. 2 For m penc arian

4. Hala man pencarian in i berisi menu untuk navigasi dan manaje men record. Navigasi terdiri dari dua menu yaitu Sebelu mnya dan Berikutnya. Dua menu navigasi ini akan mena mp ilkan data dari RecordSource BukuTe lepon yang bersifat sirkular, record selanjutnya dari record terakhir adalah record perta ma. Record sebelu mnya dari record perta ma adalah record terakh ir.

Gambar 11. 3 Menu navigasi

5. Fungsi navigasi dibangun dengan me manfaatkan Record Enume ration yang diperoleh dengan me manggil method enumerateRecords. Para meter pertama dari method ini boleh diisi dengan RecordFilter, jika diisi null ma ka fungsi seleksi tida k d iakt ifkan. Para meter kedua boleh d iisi dengan RecordCo mparator, jika diisi null ma ka fungsi pengurutan tidak

Modul I

Memulai Pe mrograman Komputasi Bergerak

Dasar Te ori

Pe mrogra man ko mputasi bergerak me manfaat kan teknologi Java 2 Micro Ed ition (J2M E) untuk menghasilkan aplikasi dengan kema mpuan ko mputasi yang dapat dijalan kan pada perangkat bergerak. Aplikasi in i berja lan di atas lapisan Mobile Info rmation 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-la in) yang dipaket dala m file Java Archieve (JAR).

MIDlet dike mbangkan dengan menggunakan Java Development Kit dan J2M E W ire less Tool Kit (WTK). Ada beberapa tahapan yang dibutuhkan dalam proses pengembangan MIDlet. Tahap pertama adalah menulis kode dala m file sumber (.java). Tahap kedua adalah me la kukan ko mpilasi untuk mengubah file java men jadi file c lass. Tahap ketiga adalah melakukan preverifikasi untuk me mod ifikasi file class agar dapat berjalan di emu lator. Emulator adalah perangkat lunak untuk mensimu lasikan ja lannya MIDlet di perangkat ko mputasi ukuran kecil seperti hand phone.

Tujuan :

v Mampu menggunakan Java 2 Micro Edit ion Wire less Tool Kit untuk me mbuat project ap likasi MIDlet

Tug as Pendahuluan

1. Apa yang dimaksud dengan kompilasi? 2. Apa yang dimaksud dengan interpretasi? 3. Tuliskan maca m-maca m visibilitas dala m c lass!

(16)

Praktikum

Ikutilah langkah-langkah berikut in i untuk me mbuat sebuah MIDlet yang akan mena mpilkan tulisan “Sala m dari Universitas Trunojoyo Madura” pada emu lator.

1. Jalankan progra m Ktoolbar dari J2M E WTK.

Gambar 1. 1 Me ngakses KTool bar

2.Pilih Ne w Project dan isikan Perte muan1 untuk Project Name dan HelloUTM untuk MIDlet Class Name.

Gambar 1. 2 Me mbuat pr oject baru

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

Gambar 1. 3 Me milih target pl atfor m

Modul XI

Memanfaatkan RecordStore untuk Portable Log

Dasar Te ori

Paket java x.microedit ion.rms menyediakan tidak hanya class RecordStore dan lima class Exception, me la inkan juga me lengkapi dengan empat interface yaitu Record Enume ration, Record Co mparator, RecordFilter dan Record Listener.

Interface RecordEnu merat ion bertindak sebagai enumerator bagi RecordStore, menjaga urutan recordId dari setiap record dalam RecordStore. Untuk me la kukan pengurutan record, gunakan interface RecordCo mparator yang ditambahkan pada enumerator. Untuk mela kukan pencarian record tertentu, gunakan interface RecordFilter bersa ma enu merator.

Praktikum

Pada pertemuan ke-11 ini, kita akan me manfaatkan paket java x.mic roedition.rms untuk me mbuat aplikasi MIDlet sebagai portable log yang akan mencatat data telepon sebagai penyempurna dari p roject Pe rte muan10.

Menggunakan interface RecordEnu merat ion:

1. Jalankan J2M E WTK dan buat project baru dengan nama Perte muan11 dengan CobaRMS sebagai nama c lass MIDlet.

2. MIDlet CobaRMS mena mp ilkan hala man pertama berupa List dengan dua opsi yaitu: Cari dan Tambah, List ini me miliki tipe IMPLICIT. Selain mena mp ilkan dua opsi di atas, List juga berisi sebuah tombol Exit .

Gambar 11. 1 List se bag ai menu Tujuan :

v Mahasiswa ma mpu mengolah data persisten

Tug as Pendahuluan

1. Tuliskan properti dari RecordCo mparator! 2. Tuliskan properti dari RecordFilter!

3. Tuliskan method dari Vector yang digunakan untuk mena mbah dan me mbaca record !

(17)

Gambar 10. 17 Recor d baru berhasil di tambahkan

Gambar 10. 18 Me milih menu Edit

Gambar 10. 19 Menge dit recor d Gambar 10. 20 Recor d ber hasil die dit

4. Jendela J2M E WTK mena mpilkan pesan tentang lokasi untuk

menyimpan file kode sumber (source code) di dire ktori src, file sumber daya (re source) di d ire ktori res dan file pustaka (library) di direktori li b.

Gambar 1. 4 Lapor an hasil pe mbuatan pr oject

5.Guna kan sembarang editor te ks untuk menuliskan kode sumber bahasa java. Simpan file dengan nama He llo UTM.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, la kukan Buil d yang me rupakan ko mbinasi langkah ko mp ilasi dan preverifikasi. Pilih Run untuk menja lankan MIDlet dengan e mulator.

(18)

Tug as

1. Beri tanda ko mentar pada kedua baris import. Ada berapa ju mlah e rror yang terjadi? Apa makna tanda bintang (*) pada kedua baris import? Gantilah tanda bintang (*) dengan suatu cara lain agar progra m tetap dapat berjalan dengan baik!

2. Hilangkan kata kunci public yang tertulis sebelum kata kunci c lass dalam file kode sumber HelloUTM .java ke mudian laku kan Build! Apakah ada error yang terjad i? Apakah MIDlet berja lan dengan baik sebagaimana pada hasil dari Pra ktiku m langkah ke -6 di atas? Tuliskan kesimpulan Anda berkaitan dengan uji coba ke -2 in i!

3. Gantilah kata kunci MIDlet setelah kata kunci e xtends dengan midlet ke mudian Build! Ada berapa error yang terbit? Tuliskan kesimpu lan Anda mengenai hal ini!

4. Beri tanda ko mentar agar bagian constructor dari class HelloUTM tidak dieksekusi ke mud ian Bu ild! Apakah MIDlet tetap berja lan dengan baik? Beri tanda ko mentar pada method pauseApp atau destroyApp kemudian Build? Apakah J2M E WTK mena mpilkan pesan kesalahan? Bandingkan kedua percobaan pada langkah keempat ini dan tuliskan kesimpulan Anda!

Gambar 10. 13 Menampilkan recor d berikutnya

Gambar 10. 14 Me milih menu Terakhir

Gambar 10. 15 Mengosongkan kotak isian

Gambar 10. 16 Mengisi data isian baru

(19)

Gambar 10. 9 Menampilkan recor d terakhir

Gambar 10. 10 Me milih menu Sebelumnya

Gambar 10. 11 Menampilkan recor d

sebelumnya Gambar 10. 12 Me milih menu Bar u

Modul II

Melengkapi MIDlet dengan Konten Dinamis

Dasar Te ori

Package atau paket java.util pada J2SE menyedia kan 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 Ca lendar. J2M E me la lui Mobile Informat ion Device Pro file mendukung pengembangan konten

dinamis dari MIDlet dengan menyedia kan class Date dan Calendar. Praktikum

Menggunakan class Date pada aplikasi J2SE:

1. Buat class TanggalHariIni dan lengkapi dengan ma in method. 2. Tambahkan pa ket java.util untuk mengakses class Date.

import java.util.Date;

3. Cetak data tanggal ke layar dengan me manggil konstruktor class Date.

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

4. Simpan file TanggalHariIni ke mud ian la kukan ko mpilasi dan jalankan.

Gambar 2. 1 Info pe nanggalan di c onsole Menggunakan class Date pada MIDlet:

Tujuan :

v Mahasiswa ma mpu mena mbahkan konten dina mis pada MIDlet

Tug as Pendahuluan

1. Apa yang dimaksud dengan paket atau package? 2. Tuliskan properti dari class Date dan Ca lendar?

(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 mena mbahkan paket java x.mic roedition.midlet dan java x.mic roedition.lcdui dan paket java.util untuk dapat mengakses class MIDlet, Display dan Date.

4. Pada method startApp, tambahkan kode untuk mena mpilkan pesan/notifikasi dengan class Alert. Letakkan konstruktor class Date sebagai para meter dari konstruktor class Alert.

Display.getDisplay(this).setCurrent(Alert(/*letakkan konstruktor class Date di sini!*/));

5. Simpan file CobaDate.java. Ke mudian la kukan Build dan Run untuk menguji MIDlet dengan emulator.

Gambar 2. 2 Info pe nanggalan di MIDle t 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 dilaku kan penyesuaian pada baris perintah import dari paket java.util.

import java.util.Calendar;

3. Simpan file CobaData.java. Se lanjutnya laku kan ko mp ilasi dan jalan kan class TanggalHariIni.

Gambar 2. 3 Calendar di c onsole

Modifikasilah project Pe rte muan10 untuk mena mbahkan ke ma mpuan untuk mengedit dan menghapus data pada RecordStore. Lengkapi MIDlet dengan ke ma mpuan untuk mengosongkan Te xtFie ld dan navigasi pada record. Untuk fitur navigasi, diperkenankan menggunakan struktur data Vector guna mena mpung data dari RecordStore, diperkenankan menggunakan perulangan dengan for untuk loop dari record perta ma sampa i dengan record terakhir.

Gambar 10. 5 Rec or d pada StringIte m

Gambar 10. 6 Me milih recor d Pertama

Gambar 10. 7 Menampilkan recor d per tama

Gambar 10. 8 Me milih menu Berikutnya

(21)

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

11. Record dapat dihapus dengan me manggil method deleteRecord. public void deleteRecord(int recordId)

throws RecordStoreNotOpenException, InvalidRecordIDException,

RecordStoreException

12. MIDlet di atas telah me miliki ke ma mpuan untuk me mbaca dan menulis data pada RecordStore. Simpan ke mudian laku kan Bu ild dan Run untuk menguji MIDlet.

Gambar 10. 1 Me mbuka Rec or dStore Gambar 10. 2 Me mbac a rec or d

Gambar 10. 3 Menambah rec or d Gambar 10. 4 Menampilkan recor d

Tug as

Menggunakan class Calendar pada MIDlet: 1. Buka p roject Pe rte muan2 pada J2M E WTK.

2. Buka file CobaDate.java yang terletak di dala m dire ktori src, menggunakan editor teks.

3. Ed it kode dala m file CobaDate.java. Gant ikan konstruktor class Date dengan pemanggilan method static getInstance dari class Calendar. 4. Simpan file CobaDate.java yang telah diedit ke mudian lakukan Build dan

Run untuk menguji M IDlet.

Gambar 2. 4 Calendar di MIDlet Tug as

1. Perhatikan ta mp ilan pada saat aplikasi J2SE yang menggunakan class Ca lendar dijalankan. Modifikasilah kode TanggalHariIni.java agar class TanggalHariIni hanya mena mpilkan data tanggal dalam format <tanggal>-<nomor_bulan>-<tahun>

Gambar 2. 5 Modi fikasi aplikasi deng an Calendar

2. Perhatikan ta mp ilan M IDlet CobaDate saat dijalan kan. Modifikasilah kode CobaDate.java agar ta mpilan tanggal mengikuti format seperti pada soal nomor dua.

Gambar 2. 6 Modi fikasi pertama pada MIDlet

3. Dari hasil ja waban soal nomor dua, la kukan pengembangan dengan menuliskan data bulan dengan menggunakan nama bulan.

(22)

[hala man ini sengaja dikosongkan] berturut-turut adalah nilai indeks awal dari array t ipe byte dan berikutnya adalah ju mlah 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 ditamp ilkan dengan me manggil method getRecord.

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

throws RecordStoreNotOpenException, InvalidRecordIDException, RecordStoreException

9. Membaca dan mena mpilkan data dari RecordStore menggunakan alur yang merupakan keba likan dari proses menulis ke RecordStore. Method getRecord menghasilkan data yang disimpan dala m a rray 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 dila kukan mula i record perta ma 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(); }

(23)

Praktikum

Pada pertemuan ke-10, kita akan menggunakan RecordStore untuk me la kukan manaje men data dengan studi kasus Buku Telepon. MIDlet yang dibangun me miliki ke ma mpuan untuk menyimpan data berupa nama beserta nomor telepon, mena mp ilkan data, mengedit data dan menghapus data.

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

2. Tambahkan lima Co mmand pada Form ma inForm, yaitu e xit Co mmand, selectCommand, insertCo mmand, updateCommand, de leteCo mmand. 3. Deklarasikan instance dari class RecordStore dengan nama recordStore. 4. Lengkapi Fo rm dengan StringItem siHasil, dan dua buah TextField

tfNa ma dan tfTe lp.

5. Langkah perta ma da la m berinteraksi dengan RMS adalah me mbuat atau me mbu ka RecordStore dengan me manggil openRecordStore. Hasil dari pemanggilan method ini adalah sebuah instance dari RecordStore.

public static RecordStoreopenRecordStore(

String recordStoreName, boolean createIfNecessary) throws RecordStoreException, RecordStoreFullException,

RecordStoreNotFoundException

6. Record baru d ita mbahkan ke dala m RecordStore dengan me manggil 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 dala m instance dari class DataOutputStream yang telah dihubungkan dengan instance dari class ByteArrayOutputStream. Data bertipe String didapatkan dari Te xtField dengan me manggil method getString. Method yang digunakan untuk menuliskan data tipe String ke DataOutputStream di antaranya adalah writeUTF. Se mua data yang telah ditampung dalam DataOutputStream ditarik masuk ke dala m ByteArrayOutputStream dengan me manggil method flush. Selanjutnya data dalam ByteArrayOutputStream d iubah ke dala m array t ipe byte dengan men jalan kan method toByteArray. Array tipe byte ditambahkan ke dala m RecordStore dengan method addRecord dengan mengirimkan variabel array tipe byte sebagai parameter perta ma , para meter kedua dan terakhir

Modul III

Menggunakan Command dan CommandListener

Dasar Te ori

Untuk menambahkan ke ma mpuan berinteraksi dengan user, J2ME menyedia kan paket java x.mic roedition.lcdui. Class Command yang berada dalam paket ini me mbungkus informasi tentang nama atau label dari aksi. Sedangkan informasi mengenai aksi yang sebenarnya diletakkan dala m imp le mentasi dari interface Co mmand Listener.

Aplikasi dapat menangkap event dari komponen antar muka tingkat mah ir/tinggi dengan langsung mengimple mentasikan interface Co mmandListener. Atau dapat juga dengan menambahkan inner c lass sebagai imp le mentasi Co mmand Listener.

Praktikum

Menggunakan class Command dan mengimp le mentasi interface Co mmand Listener:

1. Jalankan J2M E WTK dan buat sebuah project baru dengan nama Perte muan3. Be ri na ma c lass MIDlet dengan CobaCo mmand.

public final class CobaCommand extends MIDlet implements

CommandListener {

private final Command exitCommand; private final Form mainForm;

Tujuan :

v Mahasiswa ma mpu mena mbahkan ke ma mpuan interaksi user dengan MIDlet

Tug as Pendahuluan

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

(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. La kukan Build dan Run untuk menguji MIDlet.

Modul X

Mengolah Data Persisten

Dasar Te ori

MIDP menyedia kan me kanis me untuk menyimpan data secara persisten. Persisten berarti ke ma mpuan untuk menggenggam struktur data dengan cara menyimpan data ke dala m fasilitas penyimpanan yang bersifat non-volatile seperti file sistem, atau re lational database. Sifat non-volatile art inya data yang telah tersimpan tida k a kan hilang wa laupun listrik t idak tersedia. Fasilitas penyimpanan yang digunakan dalam J2M E d ikenal dengan Record Management System (RMS). RecordStore terdiri dari seku mpulan record yang dapat diakses oleh MIDlet Suite. Penamaan bersifat unik, case-sensitive, terdiri dari ma ksima l 32 kara kter. Set iap record merupakan array dengan tipe byte, me miliki primary key berupa recordId dengan tipe integer. Recod pertama dala m RecordStore me miliki recordId sama dengan satu ( 1 ), berikutnya recordId akan berta mbah satu ( n + 1 ).

Mekanisme yang digunakan untuk mengelola RecordStore me libatkan proses me mbuka RecordStore dengan openRecordStore; dapat melaku kan man ipulasi record seperti mena mp ilkan data dala m a rray tipe byte dengan getRecord, mena mbah dengan addRecord, mengedit dengan setRecord, menghapus dengan deleteRecord; menutup RecordStore dengan closeRecordStore.

Tujuan :

v Mahasiswa ma mpu mengolah data persisten

Tug as 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 ByteArrayOutputStrea m ke array of byte!

(25)

[hala man ini sengaja dikosongkan]

Gambar 3. 1 Command pada MIDlet

Memanfaatkan inner c lass sebagai listener:

1. Buka file CobaCo mmand.java dan beri tanda ko mentar pada method commandAction.

2. Ed it file CobaCo mmand.java untuk mena mbahkan inner class yang akan difungsikan sebagai listener. Be ri na ma inner class dengan CobaInnerCL.

class CobaInnerCL implements CommandListener { public void commandAction(Command c, Displayable d) { if (c == exitCommand) { destroyApp(false); notifyDestroyed(); } } }

(26)

3. Tambahkan de kla rasi variabel bert ipe CobaInnerCL dan beri na ma cobaInnerCL.

4. Ganti variabel this dengan variabel cobaInnerCL.

5. Simpan file CobaCo mmand.java ke mudian laku kan Build dan Run untuk menguji MIDlet.

Tugas

1. Buka file CobaCo mmand.java dan edit dengan memberi tanda ko mentar pada inner class CobaInnerCL. Tanda ko mentar juga diletakkan di a wal baris dekla rasi dan definisi variabe l cobaInnerCL.

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

3. Modifikasilah class CobaListener untuk mengimple mentasikan interface Co mmand Listener sehingga dapat menggantikan fungsi dari inner class CobaInnerCL.

Gambar 9. 6 ChoiceGr oup dan Ticker pada for m per tama

Gambar 9. 7 Ticker de ngan pesan hasil pilihan dari for m per tama

Gambar 9. 8 Ticker de ngan pesan hasil pilihan yang l ain

(27)

Menambahkan satu Ticker untuk beberapa Screen:

1. Tambahkan sebuah class FormKedua yang merupakan subclass Form dan mengimp le mentasikan Co mmandListener. CobaTicker berisi screen utama, screen berikutnya dita mbahkan dengan memuat instance dari class FormKedua. Sehingga FormKedua harus memiliki ke ma mpuan untuk berko munikasi dengan MIDlet CobaTic ker.

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

3. Setiap instance dari class FormKedua harus dapat berkomunikasi dengan objek Tic ker dari c lass CobaTicker. Sehingga dengan memanfaat kan referensi dari objek Ticke r yang sama, setiap Form dapat menampilkan pesan berjalan yang sama.

4. Setiap instance dari class FormKedua harus me miliki tiga Co mmand yaitu e xit Co mmand untuk keluar dari progra m, ne xtCo mmand untuk menuju ke Form berikutnya, dan previousCommand untuk ke mbali mena mpilkan Form sebelu mnya.

Gambar 9. 2 Ticker di for m per tama Gambar 9. 3 Ticker di for m ke dua

Gambar 9. 4 Me nu Ne xt Gambar 9. 5 Me nu Pre vi ous

Tug as

Modifikasilah c lass CobaTicker sehingga pada Form perta ma a kan ta mpil dua opsi yaitu “S1 TI” dan “D3 MI”. Hasil pilihan pada Form pertama a kan mengupdate tulisan berjalan yang ditamp ilkan pada semua Fo rm.

Modul IV

Komputasi dengan Bilangan Acak

Dasar Te ori

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 mengerja kan urutan pekerjaan yang sama ma ka 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, laku kan import pada paket tersebut.

3. Dala m ma in method buat instance dari class Random dengan nama bilanganAcak dan masukkan nilai 123 dala m konstruktor Rando m. 4. La kukan perulangan untuk mencetak data ke layar sebanyak sepuluh kali

(10 x). Set iap perulangan dike rja kan dengan me manggil method ne xtInt dari instance bilanganAcak.

Tujuan :

v Mahasiswa ma mpu me manfaatkan b ilangan acak untuk me lakukan ko mputasi

Tug as Pendahuluan

1. Apa pengertian dari instance? 2. Tuliskan cara pe mbuatan instance! 3. Tuliskan cara penulisan konstanta di Java!

(28)

Gambar 4. 1 Me nguji Random di c onsole Menggunakan class Random pada MIDlet:

1. Jalankan J2M E WTK dan buat project baru dengan nama Perte muan4 dengan nama c lass MIDlet CobaRandom.

2. Untuk kode program dapat me modifikasi file CobaCo mmand pada Perte muan3, 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. Leta kkan kode in i ke dala m suatu method dengan nama buatBilanganAcak. Method buatBilanganAcak berfungsi menghasilkan nila i bert ipe String yang me miliki ta mp ilan yang sama dengan hasil running dari c lass RandomGenerator.

4. La kukan percobaan dengan membandingkan penggunaan variabel penampung bilangan acak. Bandingkan unjuk ke rja variabe l penampung bilangan acak jika menggunakan tipe String dan jika menggunakan tipe String Buffer. Pe rbesar ju mlah peru langan sehingga mencapai seribu kali (1000 x) dan bandingkan kembali unjuk kerja di antara dua tipe data tersebut.

Modul IX

Menyisipkan Tulisan Berjalan

Dasar Te ori

Ticke r adalah sebuah class yang dapat menambahkan tulisan yang berjalan secara kontinu dari kiri ke kanan Screen, d i mana pada saat yang sama Display mena mp ilkan Displayabel tertentu. Ticker dita mbahkan ke layar dengan me manggil method setTicker. Tic ker dengan pesan yang sama dapat ditampilkan pada beberapa Screen sekaligus. Tic ker juga dapat didesain untuk tampil dengan pesan yang berbeda bila Sc reen yang berbeda tampil.

Praktikum

Pada pertemuan ke-9 in i, kita akan belajar mena mbahkan sebuah Ticker ke suatu Screen dan mena mpilkan Ticker yang sama untuk Screen yang berbeda.

Menambahkan sebuah Ticker untuk sebuah Screen:

1. Jalankan J2M E WTK, dan buat project dengan nama Perte muan9 dengan CobaTic ker sebagai na ma class MIDlet.

2. Pada MIDlet ta mbahkan sebuah Screen yang akan dita mpilkan o leh Display. Anda boleh mena mbahkan sebuah Form sebagai Screen uta ma. 3. Tambahkan sebuah variabel dengan tipe Ticke r. Sesuaikan pckage yang

perlu diimport untuk dapat mengakses class Ticker.

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

5. Obje k Ticke r dapat dita mbahkan dala m method startApp dengan me manggil method setTicker dari Sc reen yang aktif saat itu.

Gambar 9. 1 Ticker pada MIDlet Tujuan :

v Mahasiswa ma mpu menyisipkan pesan berjalan pada MIDlet

Tug as Pendahuluan

1. Tuliskan cara mena mbahkan Choice Group pada MIDlet! 2. Tuliskan ko mponen apa saja yang bisa me miliki Tic ker!

(29)

[hala man ini sengaja dikosongkan] Membangun MIDlet untuk Ko mputasi yang me manfaatkan bilangan acak: Pada bagian ini, kita akan me modifikasi c lass MIDlet CobaRando m untuk me mbuat aplikasi “Pengacak No mor Lotere”.

1. Buka file CobaRando m.java dari pro ject Perte muan4. Modifikasilah judul ma inForm men jadi “ Perte muan 4: Pengacak No mor Lotere”.

2. Tambahkan sebuah command dengan nama acakCo mmand yang memiliki label “Acak”. Jika acakCo mmand dipilih ma ka akan me manggil method acakNo morLotere. Method ini berfungsi menghasilkan deret bilangan acak dengan jumlah suku deret yang ditetapkan dala m konstanta JML_ BIL_A CAK seju mlah lima (5). Bilangan acak yang dihasilkan ada di dala m batasan 0 sampai dengan nilai ma ksimu m yang ditetapkan dalam konstanta NILAI_MAX yaitu ena m puluh tiga (63).

3. Deret bilangan yang dihasilkan oleh method acakNo morLotere harus muncul di dala m ma inForm. Dengan me milih command “Acak”, tamp ilan ma inForm akan berisi deret bilangan baru tanpa menampilkan deret bilangan sebelumnya.

4. Algorit ma untuk me mbuat deret bilangan acak dalam aplikasi “Pengacak No mor Lotere” kita adalah sebagai berikut:

· Buat array untuk mena mpung data yang mewa kili kondisi apakah dala m suatu sesi pengacakan suatu bilangan telah muncul atau belum pernah muncul. Karena bilangan terbesar yang boleh muncul adalah 63 ma ka ju mlah e le men a rray ini ditentukan dala m konstanta NILAI_MAX.

· Inisialisasi setiap elemen array agar bernilai fa lse. Artinya, dalam kondisi awa l belu m ada bilangan yang muncul dala m pengacakan. · La kukan pengacakan untuk menghasilkan 5 suku dala m deret

bilangan acak sesuai dengan yang ditetapkan dala m NILAI_MAX. · Dala m setiap loop pengacakan, untuk setiap bilangan acak yang

dihasilkan harus berada antara 0 sa mpai dengan 63.

· Setelah satu suku deret bilangan acak didapatkan berart i bilangan ini telah muncul dala m deret sehingga harus ditandai sebagai true. · Tampung setiap suku dari deret bilangan acak ke dalam variabe l

(30)

Gambar 4. 2 Me nguji Random di MIDle t

5. Simpan file Coba Random.java. La kukan Bu ild dan Run untuk menguji MIDlet.

Tugas

1. La kukan modifikasi pada class MIDlet CobaRandom agar dapat mena mp ilkan informasi sesi pengacakan.

(31)

Alert

(

String

title,

String

alertText,

Image

alertImage,

AlertType

alertType)

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

4. Simpan file CobaAlertDanAle rtType. Build dan Run untuk menguji MIDlet.

Gambar 8. 1 S plash screen deng an Alert

5. La kukan percobaan dengan mena mpilkan berapa milisecond timout yang diberikan oleh constructor tersebut. Tampilkan besarnya timeout dala m splash screen Alert. Perhatikan, apakah MIDlet menghasilkan notifikasi suara?

Tug as

Modifikasilah pro ject Perte muan8 sehingga pada saat MIDlet dija lankan a kan mena mp ilkan daftar Alert berdasarkan tipe AlertType yaitu: ALARM, CONFIRMATION, ERROR, INFO, dan WARNING. Da ftar Ale rt 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.

Modul V

Komponen Antar Muka Screen

Dasar Te ori

Class Display bertindak sebagai manager yang mengatur objek apa yang akan dita mpilkan di layar. Hanya ada satu instance dari class Display untuk setiap MIDlet. Ta mpilan antar muka yang digunakan oleh MIDlet untuk berinteraksi dengan user termasuk kategori obje k Displayable. Hanya ada satu objek Displayable yang dita mpilkan ke layar da la m setiap wa ktu tertentu.

Screen dan Canvas adalah subclass dari abstract class Displayable. Sc reen dikenal sebagai superclass dari ko mponen antar muka tingkat tinggi. Canvas dikenal sebagai ko mponen antar muka tingkat rendah. Screen me miliki beberapa subclass, di antaranya adalah Alert, Form, List dan TextBo x. Te xt Bo x ada lah Screen yang me mungkinkan user me masukkan dan mengedit teks.

Form adalah Sc reen yang dapat berisi beberapa item: image, te xt field yang hanya dapat dibaca, text fie ld yang dapat diedit, gauge, choice group dan custom ite m.

List adalah Screen yang berisi beberapa opsi. List adalah subclass dari Screen yang mengimple mentasikan interface Choice. Choice Group adalah imple mentasi Choice yang merupakan subclass dari abstract class Item. Ite m ada lah superclass dari semua ko mponen yang dapat ditambahkan ke da la m Form. Beberapa subclass dari Ite m antara lain adalah Choice Group, CustomIte m, DateFie ld, Gauge, Image Ite m, Spacer, StringIte m, Te xt Fie ld.

Tujuan :

v Mahasiswa ma mpu me manfaatkan MIDP API untuk pembuatan antar mu ka pengguna

Tug as Pendahuluan

1. Tuliskan pengertian superclass dan subclass!

2. Tuliskan pengertian override berikut cara mengoverride! 3. Tuliskan fungsi dari method setCurrent!

(32)

Praktikum

Pada bagian ini, kita akan me mbangun MIDlet yang dapat me manggil beberapa class yang masing-masing digunakan untuk mencoba class TextBo x, Form, dan List atau Choice Group.

1. Jalankan J2M E WTK dan buat project dengan nama Perte muan5 dengan class MIDlet dengan nama CobaScreenDanIte m.

2. Class CobaScreenDanItem ada lah turunan MIDlet dan imp le mentasi Co mmand Listener.

3. Pada bagian deklarasi variabe l, ta mbahkan sebuah Form berna ma ma inForm; ta mbahkan e mpat buah Co mmand yaitu e xit Co mmand, cobaText Bo xCo mmand, cobaFormCo mmand, cobaListCo mmand; tambahkan deklarasi instance class CobaTextBo x dengan nama cobaText Bo x, 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. Ta mbah kan semua objek Co mmand pada main Form. Atur agar ma inForm men jadi obje k yang ditamp ilkan perta ma ka li.

5. Pada method commandAction, jika cobaTe xt Bo xCo mmand dip ilih ma ka tampilkan cobaText Bo x pada Display; jika cobaFormCo mmand dipilih ma ka ta mp ilkan cobaForm pada Display; jika coba ListCommand dipilih ma ka ta mp ilkan cobaList.

Menggunakan class TextBo x:

1. Buat class CobaText Bo x yang merupakan turunan class TextBo x dan imple mentasikan interface Co mmandListener.

2. Pada bagian dekla rasi variabel, ta mbahkan variabel ke mba liCo mmand bertipe Co mmand.

3. Pada konstruktor class CobaText Bo x, panggil superclass dengan mengirimkan e mpat parameter yaitu judul bertipe String (contoh: “Mencoba Text Bo x”), teks bertipe String (contoh: “TextBo x ada lah subclass Screen”), ju mlah karakte r ma ksima l bertipe int (contoh: 33), dan constraint bertipe int (contoh: TextFie ld.ANY); tambahkan Co mmand ke mbaliCo mmand.

4. Overridlah method co mmandAction dengan menuliskan fungsi untuk ke mbali ke mainForm jika ke mba liCo mmand dipilih.

Menggunakan class Form:

1. Buat class CobaForm yang merupakan turunan class Form dan imple mentasikan interface Co mmandListener.

2. Pada bagian dekla rasi variabel, ta mbahkan variabel ke mba liCo mmand bertipe Co mmand.

Modul VIII

Menambahkan Notifikasi

Dasar Te ori

Alert adalah subclass Screen yang digunakan untuk mena mpilkan data ke user dan menunggu sampai beberapa saat untuk ke mudian mena mpilkan objek Displayable yang berikutnya. Alert me miliki fungsi untuk mengirim notifikasi atau pesan berisi peringatan tentang error atau kondisi e xception. Untuk me lengkapi notifikasi yang dita mpilkan secara visual maka class AlertType dapat digunakan untuk menyediakan notifikasi secara audio.

Praktikum

Pada pertemuan ke-8, kita akan menggunakan notifikasi dala m bentuk audio visual.

1. Jalankan J2M E WTK dan buat project baru dengan nama Perte muan8 dengan CobaAlertDanAlertType sebagai nama c lass MIDletnya.

2. Modifikasilah file CobaAlert DanAlertType.java agar saat MIDlet dija lankan, yang perta ma kali muncul adalah sebuah instance dari Alert yang dibuat dengan constructor e mpat para meter. Sehingga Alert a kan mena mp ilkan judul, teks, image dala m format .png dan AlertType. La kukan percobaan dengan mengganti jenis AlertType. Perhatikan notifikasi berupa suara yang dikeluarkan dari hasil pe milihan masing-masing Ale rtType.

Tujuan :

v Mahasiswa ma mpu me lengkapi M IDlet dengan notifikasi

Tug as Pendahuluan

1. Jelaskan kegunaan Exception!

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

(33)

[hala man ini sengaja dikosongkan] 3. Pada konstruktor class CobaForm, panggil superclass dengan mengirimkan sebuah parameter yaitu judul bertipe St ring (contoh: “Mencoba Form”); ta mbahkan Co mmand ke mbaliCo mmand.

4. Overridlah method co mmandAction dengan menuliskan fungsi untuk ke mbali ke mainForm jika ke mba liCo mmand dipilih.

Menggunakan class List:

1. Buat class CobaList yang merupakan turunan class List dan imple mentasikan interface Co mmandListener.

2. Pada bagian dekla rasi variabel, ta mbahkan variabel ke mba liCo mmand bertipe Co mmand.

3. Pada konstruktor class CobaList, panggil superclass dengan mengirimkan empat para meter yaitu judul bertipe St ring (contoh: “Mencoba Form”), tipe List (contoh: List.EXCLUSIVE), pilihan yang ditampilkan dala m bentuk array tipe String (contoh: new String [] {“opsi 1” , “opsi 2” , “opsi 3”}), image yang menyertai opsi (contoh: null, jika image tidak ditambahkan); ta mbahkan Co mmand ke mbaliCo mmand.

4. Overridlah method co mmandAction dengan menuliskan fungsi untuk ke mbali ke mainForm jika ke mba liCo mmand dipilih.

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

Gambar 5. 1 Me nu di MIDlet Gambar 5. 2 TextBox di MIDlet

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

(34)

Gambar 5. 3 For m di MIDle t Gambar 5. 4 List di MIDlet

Tug as

1. Buatlah sebuah project J2ME untuk mela kukan konversi temperatur (Ce lc ius, Fahrenheit, Rea mur, Ke lvin ). Project terdiri dari sebuah class MIDlet, sebuah class turunan List yang berisi pilihan konversi, sebuah class turunan Text Bo x yang me minta inputan untuk temperatur yang akan dikonversi, dan sebuah class turunan Form yang mena mpilkan informasi temperatur asal dan hasil konversi.

2. Buatlah sebuah project J2M E untuk konversi bilangan (desimal, b iner, oktal, he ksa) dengan konstruksi class yang sama dengan soal nomor satu.

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

4. Simpan se mua file ke mud ian BUILD dan RUN untuk menguji MIDlet.

Gambar 7. 6 Pr oject deng an dua MIDlet

Gambar 7. 7 Me nampilkan grafik

Tug as

Modifikasilah pro ject Perte muan7 sehingga CobaCanvas dapat mena mpilkan image sesuai pilihan pada Choice Group.

(35)

drawLine dan drawRoundRect. Perta ma, layar dikosongkan dengan me manggil method fillRect dengan warna putih. Kedua, gambar garis dan kotak beru jung bundar dengan warna hita m. Warna putih didapatkan dengan mengisi para meter dari method setColor dengan data 255 untuk red, 255 untuk green dan 255 untuk blue. Sedangkan untuk warna hitam diperoleh dengan me mbuat semua nila i men jadi nol ( 0 ). Method drawLine digunakan untuk menggambar garis, method drawRoundRect untuk menggambar kotak berujung bundar. Semua pekerjaan yang dila kukan untuk melu kis Canvas dilakukan dengan me manfaatkan class Graphics.

Gambar 7. 4 Me ncoba Canvas Memanfaatkan M IDlet suite:

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

Gambar 7. 5 Me nambah MIDlet

2. Pada constructor CobaMIDletSu ite, ta mbahkan instance dari CobaCanvas.

Modul VI

Komponen Antar Muka Item

Dasar Te ori

Class DateField ada lah subclass Item berupa ko mponen yang dapat diedit untuk mena mpilkan data tanggal dan waktu. DateFie ld me miliki tiga mode input yaitu DATE, TIM E dan DATE_TIM E.

Class Gauge adalah subclass Item yang me miliki ta mpilan berupa grafik batang yang mewakili nila i integer tertentu.Gauge dapat digunakan dalam mode interaktif maupun non-interaktif. Mode interakt if me mungkin kan user untuk mengedit nilai Gauge dengan me manggil method setValue. Mode non-interaktif biasa digunakan untuk indikator akt ifitas dengan me manfaatkan Thread.

Interface ItemStateListener digunakan untuk me mbaca perubahan yang terjadi pada Gauge mode interaktif. Hanya ada satu abstract method yang perlu dioverride yaitu ite mStateChanged. Method setItemStateListener digunakan untuk mena mbahkan listener bagi subclass Item in i.

Praktikum

Pada bagian ini, kita akan me mbangun MIDlet yang dapat me manggil beberapa class yang masing-masing digunakan untuk mencoba class DateField, Gauge interaktif dan Gauge non-interaktif, serta mengimp le mentasikan interface ItemStateListener.

1. Jalankan J2M E WTK dan buat project baru dengan nama Perte muan6 dengan CobaDateFieldDan Gauge sebagai nama class MIDletnya.

2. MIDlet berisi ma inForm yang akan tampil pada saat MIDlet dijalan kan pertama kali. Class ini juga berisi instance dari class CobaDateField, Tujuan :

v Mahasiswa ma mpu menggunakan ko mponen antar mu ka tingkat mah ir untuk mendesain ta mpilan antar muka pengguna

Tug as Pendahuluan

1. Jelaskan perbedaan antara Display dan Displayable! 2. Tuliskan cara penggunaan method sleep dari Thread! 3. Tuliskan cara me mbuat Thread!

(36)

Coba GaugeInteraktif dan Coba GaugeNonInteraktif. Set iap instance

diakses dengan menggunakan Command cobaDateField Cmd,

cobaGaugeInteraktifCmd, cobaGaugeNonInterakt if sedangkan Command e xit Co mmand digunakan untuk ke luar dari ap likasi.

3. Lengkapi ma inForm dengan itemData, instance dari StringIte m, yang akan digunakan untuk mena mpilkan data dari c lass lain (CobaDateFie ld, Coba GaugeInteraktif dan Coba GaugeNonInterakt if).

Menggunakan class DateField:

1. Buat class CobaDateFie ld yang merupakan subclass dari Form. 2. Tambahkan sebuah instance dari class DateFie ld dengan tipe DATE. 3. Tambahkan sebuah Co mmand ke mba liCmd untuk ke mba li ke ma inForm.

Menggunakan class Gauge mode interaktif:

1. Buat class Coba GaugeInteraktif yang me rupakan 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 Co mmand ke mba liCmd untuk ke mba li ke ma inForm. Menggunakan class Gauge mode non-intera ktif:

1. Buat class Coba GaugeNonInteraktif yang me rupakan subclass dari Form. 2. Tambahkan sebuah instance dari c lass Gauge dengan tipe non-interaktif

dengan batas bawah 0 dan batas atas 10.

3. Tambahkan sebuah Co mmand ke mba liCmd untuk ke mba li ke ma inForm. 4. Untuk dapat menamp ilkan efek progress, class ini harus

mengimp le mentasikan interface Runnable. Da la m method run, beri jeda satu detik untuk setiap pertambahan nilai pada grafik batang. Gunakan method sleep dari Thread untuk mengatur jeda. Gunakan method setVa lue untuk mengatur nilai Gauge. Guna kan variabel jen is static untuk menyimpan n ila i yang akan disetkan pada Gauge (ingat nila i ini terus bertambah dari nilai batas bawah sehingga mencapai nila i batas atas). 5. Simpan se mua file ke mud ian BUILD dan RUN untuk menguji MIDlet.

Melengkapi Choice Group dengan image:

1. Pada class CobaGrafik, ta mbahkan sebuah Form ma inForm, sebuah Co mmand e xit Co mmand, dan sebuah Choice Group choice .

2. Pada constructor CobaGrafik, defin isikan Form, Co mmand dan Choice Group.

3. Definisi Choice Group menggunakan constructor dengan empat parameter.

ChoiceGroup

(

String

label, int choiceType,

String

[] stringElements,

Image

[] imageElements)

4. Untuk mena mbahkan Image, gunakan method createImage. Perhatikan, pemanggilan method in i harus diletakkan dala m penanganan kesalahan dengan merujuk pada NullPo interException dan IOException.

public static ImagecreateImage(String name) throws IOException

5. Tambahkan instance dari Co mmand dan Choice Group pada Form.

6. Simpan file Coba Grafik. Buil dan Run untuk menguji MIDlet. Jika MIDlet dilaunch ma ka akan ta mpil tiga opsi Pilihan1, Pilihan2, dan Pilihan3 yang masing-masing dilengkapi dengan icon.

Gambar 7. 3 Me ncoba ChoiceGr oup Menggunakan class Canvas:

1. Buat class CobaCanvas yang merupakan subclass dari Canvas. Letakkan file ini di d ire ktori src dari p roject Pe rte muan7.

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

3. Definisikan ulang method paint dalam CobaCanvas. protected abstract void paint(Graphics g)

(37)

dengan CobaGrafik sebagai nama class MIDletnya.

2. Guna kan J2M E WTK – ktoolbar, pilih Settings, pilih menu MIDlets sehingga terbuka panel berisi Key, Na me, Icon dan Class.

3. Pilih MIDlet yang akan d iisi dengan icon ke mudian pilih Edit sehingga terbuka jendela Enter M IDlet Deta ils. Pada jendela Enter M IDlet Details, masukkan na ma file image tipe PNG yang akan menjad i icon dari midlet. Perhatikan, sebelu mnya file icon harus sudah tersedia di dalam d ire ktori res dari project Perte muan7. Jika file image diletakkan langsung di dalam direktori res, awa li na ma file dengan tanda slash ( / ).

Gambar 7. 1 Me ngatur seting pr ojec t

4. Setelah nama file icon dimasukkan, pilih OK. La kukan Build dan Run untuk menguji MIDlet. Emu lator akan menamp ilkan sebuah MIDlet dengan judul yang dilengkapi icon Opt ional.png.

Gambar 7. 2 MIDlet deng an icon

Gambar 6. 1 Me nu pada MIDle t Gambar 6. 2 Date Field di MIDle t

Gambar 6. 3 Me milih tanggal Gambar 6. 4 Hasil pe milihan Date Fiel d

(38)

Gambar 6. 5 Pe milihan Date Fiel d di tampilkan di for m utama

Gambar 6. 6 Gauge di MIDlet

Gambar 6. 7 Gauge interaktif Gambar 6. 8 Nil ai dari gauge di tampilkan di for m utama

Tug as

Buatlah MIDlet untuk mela kukan perkiraan ke lahiran bayi. Inputan yang dibutuhkan adalah tanggal menstruasi terakhir. Output yang ditampilkan adalah tanggal kelahiran bayi. MIDlet boleh dilengkapi dengan hala man yang bertindak sebagai splash screen saat aplikasi perta ma kali dibuka . MIDlet boleh dilengkapi dengan halaman progress yang muncul di antara hala man input dan hala man output.

Modul VII

Grafik dalam MIDlet

Dasar Te ori

Portable Net work Graphics (PNG) adalah file format untuk image dengan ko mpresi 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 me manggil method getGraphic disebut mutable image. Image dapat ditambahkan ke dala m mid let dengan mengatur MIDlet-Icon yang akan me mpengaruhi file MANIFEST.M F dan file jad. Image juga dapat ditambahkan ke dala m Choice Group dengan menggunakan method createImage dari c lass Image.

Canvas menyediakan ke ma mpuan untuk me mbuat MIDlet yang me mbutuhkan penanganan low level event dan pengolahan grafik. Abstract method paint harus didefinisikan saat abstract class Canvas dijadikan sebagai superclass. Method paint me miliki para meter 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 mena mbahkan icon ke dalam MIDlet, me lengkapi Choice Group dengan image, menggunakan Canvas dan memanfaat kan MIDlet suite.

Menambahkan icon ke dala m MIDlet :

1. Jalankan J2M E WTK dan buat project baru dengan nama Perte muan7 Tujuan :

v Mahasiswa ma mpu menggunakan grafik pada MIDlet

Tug as Pendahuluan

1. Tuliskan fungsi dari method paint dari c lass Canvas! 2. Tuliskan cara penggunaan method paint!

Gambar

Gambar  12. 2 Konfir masi akses  network
Gambar  11. 7 Menu Cari  Gambar  11. 8 Menampilkan hasil  pe ncari an
Gambar  11. 2 For m penc arian
Gambar  1. 1 Me ngakses KTool bar
+7

Referensi

Dokumen terkait

Dengan adanya Roadmap penelitian dan Pengabdian Masyarakat ini diharapkan adanya sinkronisasi dari ruang lingkup penelitian dan Pengabdian Masyarakat serta target

Stres kerja yang dimaksud pada penelitian ini adalah perasaan yang menekan atau merasa tertekan yang dialami karyawan dalam menghadapi pekerjaan yang ditandai

In 1Q 16, total assets reached Rp 56.0 trillion, 12% lower compared to the previous year due to a decrease in cash balances as the cash from the sale and leaseback of

Pada daerah penelitian yang berada di Kali Ngalang, Dusun Karanganyar, Desa Ngalang, Kecamatan Gedang Sari, Kabupaten Gunung Kidul, Provinsi Daerah Istimewa Yogyakarta

dibakar didalam ruang bakar dan menghasilkan gas panas bertekanan tinggi Generator yang digerakkan oleh turbin gas menghasilkan energi listrik.. Prinsip

Terlepas dari seberapa besar skala dan kompleksitas paket aplikasi yang dibutuhkan oleh perusahaan, manajemen harus memiliki strategi khusus dalam proses pengadaan perangkat lunak

Vygotsky juga menambahkan bahwa proses pembelajaran akan terjadi jika anak bekerja atau menangani tugas-tugas yang belum dipelajari, namun tugas- tugas tersebut masih berada

a) memiliki prestasi bidang ilmu pengetahuan, teknologi, seni, dan/atau olahraga yang direkomendasi oleh pimpinan perguruan tinggi. b) memiliki prestasi akademik dengan